SMP support for XLR processors.

C. Jayachandran c.jayachandran at gmail.com
Sat Apr 17 22:40:48 UTC 2010


I've a set of initial patches to enable SMP for RMI processors. It
comes up in multi-user with 32 CPUs.  I could do buildworld before I
updated to HEAD - with head there is a hang during buildworld which
I'm looking at, but I think the initial work can be checked in.

Neel, can you have a look at the first two patches - one is to enable
ULE scheduler and the second one is to move platform_init_ap to
slightly later in the initialization sequence.

The patches are :
1. mips-ule-support.patch
- Enable ULE scheduler for MIPS

2. mips-smp-move-platform.patch
- We need a hook to setup message ring and its interrupts, we use
platform_init_ap now, and move it be called later for XLR

3. rmi-prid.patch
Add RMI processor ID prints - right now it prints unknown processor.

4. rmi-pcib-fix.patch
XLR pci bridge should be off the IODI bus, currently it is off the
nexus bus which will cause issue when bus_setup_intr on nexus is
called

5. cleanup-reorg-cpuid-rge-kx.patch
This set has a many changes rolled up:
 - clean up rge driver, remove unused code paths and commented code
(long way to go still)
 - xlr_cpu_id(), xlr_core_id() and xlr_thr_id() updated and usage updated
 - fix a bug - we cannot use MIPS_PHYS_TO_KSEG0 on physical addresses
here, I have made changes for using XKPHYS to do the same process.
 - the KX bit is enabled and interrupts are disabled before the
physical memory is read, to avoid the KX bit setting from affecting
other code.
- move message ring code to on_chip.c from xlr_machdep.c, now all
message ring code is in on_chip.c

6. rmi-xlr-smp.patch
SMP Support for XLR
- mpwait.S added to get the other CPUs out of bootloader code at startup.
- SMP platform related functions.
- disable shared TLB code for SMP - since threads have different mappings.

The patches are also available at
http://sites.google.com/site/cjayachandran/files

Enabling all 32 threads will need a minor fix in the SMP code, see the
patch subr_smp-fix.patch at the same place.

Regards,
JC.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mips-ule-support.patch
Type: application/octet-stream
Size: 1231 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-mips/attachments/20100417/39fdef01/mips-ule-support.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mips-smp-move-platform.patch
Type: application/octet-stream
Size: 1103 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-mips/attachments/20100417/39fdef01/mips-smp-move-platform.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: rmi-prid.patch
Type: application/octet-stream
Size: 860 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-mips/attachments/20100417/39fdef01/rmi-prid.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: rmi-pcib-fix.patch
Type: application/octet-stream
Size: 754 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-mips/attachments/20100417/39fdef01/rmi-pcib-fix.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cleanup-reorg-cpuid-rge-kx.patch
Type: application/octet-stream
Size: 29573 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-mips/attachments/20100417/39fdef01/cleanup-reorg-cpuid-rge-kx.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: rmi-xlr-smp.patch
Type: application/octet-stream
Size: 8171 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-mips/attachments/20100417/39fdef01/rmi-xlr-smp.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: subr_smp-fix.patch
Type: application/octet-stream
Size: 499 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-mips/attachments/20100417/39fdef01/subr_smp-fix.obj


More information about the freebsd-mips mailing list