Different behaviour when using "nosmp" parameter on SMP and UP

Kumar Gala galak at kernel.crashing.org
Fri Dec 2 01:03:42 EST 2011


On Dec 1, 2011, at 3:57 AM, Jean-Michel Hautbois wrote:

> Hi,
> 
> I have a P2020 CPU (powerpc) and I compiled it with two different defconfigs.
> The first one is a SMP, 2 cores, launched with the "nosmp" kernel
> parameter, the other one is an UP kernel.
> 
> My driver behaviour is not the same whether launching one or the
> other. It is hard to explain more precisely, as it deals only with
> ioctl which only does ioread32/iowrite32 on a PCIe device.
> But I can tell that it never works the same way when UP (not working
> correctly), or SMP "nosmp" (working) or even SMP (not working).
> 
> AFAIK, the "nosmp" parameter should tell the kernel to act the same is
> if it is an UP kernel, and it disables IO APIC, which is not an issue
> in my case.
> 
> Can you think about anything that would explain it, or would help me
> debugging it ?

This is a bit odd, hard to say w/o more details on what exactly your code is trying to do and wait the failure is.

The larger differences between SMP & UP build would be setting of memory attribute for cache coherency.  In UP case we don't set it.

Between SMP 'nosmp' and SMP 'on' cases you seem like you're hitting some locking condition.

Guessing your running into a timing & locking issue that you're getting lucky on the SMP 'nosmp' case such that it just happens to work.

- k


More information about the Linuxppc-dev mailing list