Date: Thu, 12 Sep 1996 02:12:56 -0600 From: Steve Passe <smp@csn.net> To: Peter Wemm <peter@spinner.dialix.com> Cc: rv@groa.uct.ac.za (Russell Vincent), freebsd-smp@freebsd.org Subject: Re: Intel XXpress - some SMP benchmarks Message-ID: <199609120812.CAA15528@clem.systemsix.com> In-Reply-To: Your message of "Thu, 12 Sep 1996 14:40:41 %2B0800." <199609120640.OAA02113@spinner.DIALix.COM>
index | next in thread | previous in thread | raw e-mail
Hi,
> Hmm, something seems to have gone wrong, my second CPU isn't found with
> this patch present, so I'll see if I can see what went wrong..
I stripped out some debug while making the report, perhaps I broke something.
I am currently rebuilding the world, I will apply the reported patch and
verify whether it works when I've finished supping/building SMP.
For my information, what motherboard are you using?
---
> Hint: ALL the APIC ID registers are read/write.
>
> Can you see it yet? :-)
we tried that on the XXPRESS and (Russel, please confirm this) an instant reset
of the hardware. My mail notes show:
----------------------------- mail from Russel ------------------------------
> one last experiment. the book says that you can write the local apic id.
> so the locore.s I just sent does that. you need to turn OFF "#define XXPRESS"
> in i386/include/smpasm.h (and anywhere else you have set it). specifically it
> causes the 2nd CPU to change its apic ID from 2 to 1 during its early
> bootup code, so we still want CPUNUMBER=0x02000000 for the 1st CPU INIT IPI
> code, but after that everything should be in the context of 2nd CPU apic ID=1.
I removed my 'options XXPRESS' line and did a 'config SMP' and
re-compiled with the new locore.s. Now the machine reboots as
soon as I do the sysctl.
------------------------------- end mail notes --------------------------------
We could have had another problem at this point so further experimentation
wouldn't hurt.
---
>Apart from the existance of the XXPRESS board, the nice easy solution is
>to have the boot cpu assign it's ID to zero, and send a broadcast STARTUP
>IPI and have the application cpu's fight for a lock, and assign themselves
>sequentially increasing ID's, and assign the IO apic's ID to the end of
>the list.
my databook says:
110( Startup) This delivery mode is used as a special message
between two processors ...
ie, are you sure you can do broadcast 'Startup IPIs'?
as an alternative I would suggest starting to use the MP table:
#define MAX_CPU 16
int SMPIDMap[ MAX_CPU ];
int nextCpu( void** fps ) { /* finds next cpu record in MP table @ fps */ }
infoFromMPTable()
{
int mp_ncpus = 0;
void* fps = mpfps;
while ( nextCpu( &fps ) )
{
id = CpuId( fps )
SMPIDMap[ id ] = mp_ncpus++;
}
}
cpunumber()
{
return SMPIDMap[ GETCPUID() ];
}
I've already written code that dumps the entire table, I could produce routines
like nextCpu() in quick order.
another issue to consider is that when you write the APIC ID register you also
write its ARB (arbitration) register. Since I haven't yet deciphered
the arbitration stuff I can't say whether this is an issue...
---
>One thing I'm not clear about from the IO apic docs yet is whether there
>are 15 cpu's and 15 IO apic's, or whether there's a limit of 15 devices on
>the APIC bus.
my belief is that it is a total of 15.
the true 82489 has an 8-bit register, but the IO APIC in 586/686
has a 4-bit field as does the 82379AB and 82093AA.
On my mb the IO APIC is numbered 2, while the XXPRESS numbers it 14.
>BTW, those .pdf docs you pointed out have done the trick and describe the
.IO apic (version 0x11 at least :-) completely, although it is scattered
>around different doc files a bit..
did you get the book info I mailed earlier today about finding the true
datasheet for the 82489?
>As I understand it, the 82371SB PIIX3 chip has an IO apic address decoder,
>but no apic. The IOAPIC chip (82093AA) is an optional extra part of the
>430HX suite and would only be present on the multi-processor boards. I'm
good eye, I didn't see this detail on my first scan of that doc.
--
Steve Passe | powered by
smp@csn.net | FreeBSD
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAzHe7tEAAAEEAM274wAEEdP+grIrV6UtBt54FB5ufifFRA5ujzflrvlF8aoE
04it5BsUPFi3jJLfvOQeydbegexspPXL6kUejYt2OeptHuroIVW5+y2M2naTwqtX
WVGeBP6s2q/fPPAS+g+sNZCpVBTbuinKa/C4Q6HJ++M9AyzIq5EuvO0a8Rr9AAUR
tBlTdGV2ZSBQYXNzZSA8c21wQGNzbi5uZXQ+
=ds99
-----END PGP PUBLIC KEY BLOCK-----
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199609120812.CAA15528>
