Messages in this thread Patch in this message | | | From | Jesse Barnes <> | Subject | Re: PCI MSI breaks when booting with nosmp | Date | Mon, 21 Apr 2008 12:06:59 -0700 |
| |
On Monday, April 21, 2008 11:45 am Andi Kleen wrote: > Jesse Barnes <jbarnes@virtuousgeek.org> 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)
Right... but it looks like the MSI code is buggy when noapic is specified via nosmp or maxcpus=0. We should either fix it to work with noapic or disable it like we do the ioapic when nosmp or maxcpus=0:
index 99ce949..a0cd0ab 100644 --- a/init/main.c +++ b/init/main.c @@ -148,6 +148,7 @@ static int __init nosmp(char *str) { setup_max_cpus = 0; disable_ioapic_setup(); + pci_no_msi(); return 0; }
@@ -156,9 +157,10 @@ early_param("nosmp", nosmp); static int __init maxcpus(char *str) { get_option(&str, &setup_max_cpus); - if (setup_max_cpus == 0) + if (setup_max_cpus == 0) { disable_ioapic_setup(); - + pci_no_msi(); + } return 0; }
| |