Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 1 Apr 2004 11:23:35 -0500
From:      John Baldwin <jhb@FreeBSD.org>
To:        Bruce Evans <bde@zeta.org.au>
Cc:        Dag-Erling =?iso-8859-1?q?Sm=F8rgrav?= <des@des.no>
Subject:   Re: CFD: XMLification of NOTES
Message-ID:  <200404011123.36337.jhb@FreeBSD.org>
In-Reply-To: <20040401145536.A5418@gamplex.bde.org>
References:  <20040328094048.GA40406@phantom.cris.net> <200403311105.19088.john@baldwin.cx> <20040401145536.A5418@gamplex.bde.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday 01 April 2004 12:11 am, Bruce Evans wrote:
> On Wed, 31 Mar 2004, John Baldwin wrote:
> > On Tuesday 30 March 2004 06:54 pm, Dag-Erling Sm=F8rgrav wrote:
> > > CPU_I386 should not conflict with SMP, but a kernel build with both
> > > will be very slow.
> >
> > No, it does conflict.  There's no cmpxchg on i386 and no one has had the
> > desire or time to emulate one for 386 machines.  Doing so would be a
> > waste in my opinion as well.
>
> des only claimed that it "should not".
>
> Emulating cmpxchg might make a kernel built with both slow, but the
> current CPU_I386 only adds a tiny amount of slowness.  It just doesn't
> work on multi-CPU systems if multiple CPUs are actually used.
>
> Does it actually conflict in practice (except for the forced #error)
> if the hardware is UP?  jhb's APIC changes made configuring with SMP
> not require APIC, so SMP kernels work on UP systems.  Configuring with
> I386_CPU shouldn't affect this, but it does because of the forced #error
> at compile time.
>
> Bruce

Hmm.  Well, if the hardware is UP the kernel still does 'cmpxchg'=20
instructions, so you'd still have to emulate cmpxchg for the kernel.  There=
's=20
another problem in that I think Peter changed the pmap to make using invltl=
b=20
in place of invlpg be a compile time decision rather than a runtime decisio=
n.
If someone wants to write an in-kernel cmpxchg emulator then I wouldn't min=
d=20
having I386_CPU just turn on the extra runtime checks for invltlb vs. invlp=
g.

=2D-=20
John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =3D  http://www.FreeBSD.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200404011123.36337.jhb>