Re: ZFS committed to the FreeBSD base.
- From: Peter Jeremy <peterjeremy@xxxxxxxxxxxxxxxx>
- Date: Thu, 12 Apr 2007 17:36:06 +1000
On 2007-Apr-11 17:49:11 -0400, David Schultz <das@xxxxxxxxxxx> wrote:
As I recall, Solaris 10 targets PPro and later processors, whereas
FreeBSD supports everything back to a 486DX. Hence we can't
assume that cmpxchg8b is available.
There's a feature bit (CPUID_CX8) that advertises the availability of
cmpxchg8b (and maybe some related instructions). My pre-MMX 586 has
this bit set so I presume anything later than 486 will support it.
(I'm not sure about the low-end VIA, GEODE etc clones).
The last time I remember this
coming up, people argued that we had to do things slow way in the
default kernel for compatibility.
I agree that GENERIC should run on lowest-common-denominator hardware
(the definition of that is a subject for a different thread). GENERIC
performance could be enhanced by using an indirect call for 8-byte
atomic instructions and selecting between the cmpxchg8b and
alternative implementation as part of the CPU startup (much like
i586_bcopy). If CPU_486 is not defined, you code could inline the
cmpxchg8b-based variant.
--
Peter Jeremy
Attachment:
pgp32QmNsLUmM.pgp
Description: PGP signature
- Follow-Ups:
- Re: ZFS committed to the FreeBSD base.
- From: Oliver Fromme
- Re: ZFS committed to the FreeBSD base.
- From: Dag-Erling Smørgrav
- Re: ZFS committed to the FreeBSD base.
- References:
- ZFS committed to the FreeBSD base.
- From: Pawel Jakub Dawidek
- Re: ZFS committed to the FreeBSD base.
- From: Dag-Erling Smørgrav
- Re: ZFS committed to the FreeBSD base.
- From: Bernd Walter
- Re: ZFS committed to the FreeBSD base.
- From: Dag-Erling Smørgrav
- Re: ZFS committed to the FreeBSD base.
- From: David Schultz
- ZFS committed to the FreeBSD base.
- Prev by Date: Re: CFT: new trunk(4)
- Next by Date: Re: twa(4) update to support 9550SXU/9590SE controllers
- Previous by thread: Re: ZFS committed to the FreeBSD base.
- Next by thread: Re: ZFS committed to the FreeBSD base.
- Index(es):