Port-macppc archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Old school SMP



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hello,

On Dec 5, 2009, at 3:44 PM, John Klos wrote:

I finally dug out my dual processor 200 MHz 604e card and tried to boot an MP kernel. Not sure if anyone else cares, but what the heck:

NetBSD 5.0_STABLE (GENERIC.MP) #0: Fri Dec  4 02:33:09 UTC 2009
builds%b8.netbsd.org@localhost:/home/builds/ab/netbsd-5/macppc/ 200912040000Z-obj/home/builds/ab/netbsd-5/src/sys/arch/macppc/ compile/GENERIC.MP
total memory = 1024 MB
avail memory = 988 MB
found Grand Central PIC at f3000000
bootpath: /bandit@F2000000/ACARD,6260@D/disk@0/netbsd
mainbus0 (root)
cpu0 at mainbus0: 604e (Revision 2.3), ID 0 (primary)
cpu0: HID0 8000c084<EMCP,ICE,DCE,SGE,BHT>, powersave: 1
cpu0: 200.00 MHz
cpu1 at maibus00:CPU 1 didn't start 0
Stopped in pid 0.1 (system) at netbsd:cpu_Debugger+0x10: lwz r0, r1,0
x14
0x008dfae0: at cpu_spinup+0x2a0
0x008df: at cpuattach+0x54
0x008dfbd0: at config_attach_loc+0x188
0x008dfc00: at mainbus_attach+0x68
0x008dfcd0: at config_attach_loc+0x188
0x008dfd00: at cpu_configure+0x158
0x008dfec0: at configure+0x40
0x008dfee0: at main+0x160
0x008dff30: at 0x100094


And here's the output from a -current kernel:

cpu1 at mainbus00:CPU 1 didn't start 0
Stopped in pid 0.1 (system) at netbsd:cpu_Debugger+0x10: lwz r0, r1, 0
x14
0x0090bb00: at cpu_spinup+0x2a0
0x0090bbc0: at cpuattach+0x54
0x0090bbf0: at config_attach_loc+0x1a0
0x0090bc20: at mainbus_attach+0x68
0x0090bcf0: at config_attach_loc+0x1a0
0x0090bd20: at cpu_configure+0x158
0x0090bee0: at main+0x1bc
0x0090bf30: at 0x100098


There's a chance that the serial didn't keep up, which might be why the "cpu1 at mainbus00:CPU 1 didn't start 0" line looks funky.

None of us has that kind of hardware :(

Both are from nyftp from 4-December-2009. Does anyone know where to get started with this?

First, the spinup code. It's more or less copied from the old 4.0 code but has never been debugged for lack of hardware to run it on. By the look of it the 2nd CPU did not spin up properly. It's probably trivial to fix - the code the 2nd CPU is supposed to run should Just Work(tm) - - it's the same we use on G4 SMP and doesn't use anything G4-specific. What is very likely fishy is the code that actually releases the CPU's reset line in order to let it actually run any code. There should be an #ifdef block for it in cpu_spinup(). You may want to look at the 4.0 code in arch/macppc to fix that. Then, IPIs may or may not work. Probably won't. The code is in arch/ macppc/macppc/ipi_hammerhead.c, the way we send an interrupt to a secondary CPU may be wrong.

have fun
Michael

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (Darwin)

iQEVAwUBSxrJ9spnzkX8Yg2nAQLnSAgApAZkiCHmSOiHq7cLX57sM4zfO7xux9SY
JfMiGCiJnjSVRPdt68ddBbam42zaORvPGGvzcDQidMq1vJDBJ64AqAmesD7f52vu
Kbcpjw5n9z76vdkVo96bujxrJeUKG6c22Yu4UQSA8KrQgqlWAEeprRaIu5fmyjkF
cu+rqIH9bhiAk6HfJNv60o52bzEYQC3spluvgV3Obtw8hH0yo8ueemdFGL4SWmS0
/9rmboDQvizJk21pe50QHNNqtNH1tV727B0+EQ4L1UkqH9dNwIZ5oetVqMbk5gkU
gCde9XJh/572zwD1kZFnT+1BrByB/f31sMD5cO3yF6RVUuZWerHx5Q==
=oGBl
-----END PGP SIGNATURE-----


Home | Main Index | Thread Index | Old Index