SMP support for XLR processors.

C. Jayachandran c.jayachandran at gmail.com
Wed Apr 21 04:54:18 UTC 2010


On Wed, Apr 21, 2010 at 3:06 AM, Neel Natu <neelnatu at gmail.com> wrote:
> Hi JC,
>
> On Sat, Apr 17, 2010 at 3:40 PM, C. Jayachandran
> <c.jayachandran at gmail.com> wrote:
>> 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
>>
>
> I would like to see us move away from #ifdef TARGET_FOO in files under
> mips/mips as much as possible. I think that is achieved easily in this
> instance.
>
> How about we create a function platform_ap_enable_interrupts() that is
> called from smp_init_secondary()? This function will be defined for
> each platform.
>
> In the common case this function will simply call
> mips_ap_enable_interrupts() that encapsulates the logic that we
> currently have to setup interrupt masks for clock and ipi interrupts
> in the status register. In the XLR case however it can do something
> different.

My initial thinking was you can just move the platform_init_ap here,
The ifdef was added not to break other platforms while this is
discussed (and to show what is needed for XLR).

Another hook at the same place is fine too - as you said,  XLR now has
a different intr_machdep.c so even just having
mips_ap_enable_interrupts would be fine.   I can send you a patch for
this.

> Ditto about the #ifdef TARGET_XLR_XLS in mpboot.S. You can simply have
> an empty platform_init_ap() for XLR.

Yes, I think we can go with the existing platform_init_ap() and
another interrupt enable hook..

JC.


More information about the freebsd-mips mailing list