Re: PCI MSI breaks when booting with nosmp



On Monday, April 21, 2008 1:20 pm Jean Delvare wrote:
Hi Andi,

Le lundi 21 avril 2008, Andi Kleen a écrit :
Jesse Barnes <jbarnes@xxxxxxxxxxxxxxxx> writes:
Ok, I see this too on my desktop machine. It looks like we're not
getting interrupts setup correctly in the nosmp case. Still digging
through to see why though...

NoSMP disables the io-apic and a lot of modern systems don't work without
APIC.

If you just want to run with a single cpu for testing etc. always use
maxcpus=1 (not 0, that will disable the APIC too)

In my case, booting with noapic works fine, so I don't think that the
problem is related to APIC being disabled.

One difference between noapic and nosmp is that in the nosmp case even the
local APIC setup won't occur in native_smp_prepare_cpus(), due to
smp_sanity_check() returning -1 in the setup_max_cpus == 0 case.

So we either need smp_sanity_check to do a little more APIC setup if max_cpus
== 0 or shuffle things around in native_smp_prepare_cpus(). Since the former
is already done for 32 bit builds for the NMI vector, maybe we should just
make it unconditional so that MSI works?

Jesse
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • Re: PCI MSI breaks when booting with nosmp
    ... NoSMP disables the io-apic and a lot of modern systems don't work without ... -static inline void pci_no_msi ... +static inline void pci_no_msi ...
    (Linux-Kernel)
  • Re: PCI MSI breaks when booting with nosmp
    ... Still digging ... NoSMP disables the io-apic and a lot of modern systems don't work without ... but it looks like the MSI code is buggy when noapic is specified via ...
    (Linux-Kernel)
  • Re: PCI MSI breaks when booting with nosmp
    ... getting interrupts setup correctly in the nosmp case. ... Still digging ... First that would likely not compile on architectures without PCI? ... Also there is more code in the guts of arch/x86 that disables the ...
    (Linux-Kernel)
  • [PATCH] DOC: add min_addr, fix max_addr
    ... Add "min_addr" documentation. ... is consistent with other uses of. ... it is equivalent to "nosmp", which also disables ...
    (Linux-Kernel)