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>
next in thread | previous in thread | raw e-mail | index | archive | help
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-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199609120812.CAA15528>