Messages in this thread Patch in this message | | | Subject | The change "PCI: assign ioapic resource at hotplug" breaks my system | From | Roland Dreier <> | Date | Mon, 02 Oct 2006 10:05:43 -0700 |
| |
The change "PCI: assign ioapic resource at hotplug" (commit 23186279658cea6d42a050400d3e79c56cb459b4 in Linus's tree) makes networking stop working on my system (SuperMicro H8QC8 with four dual-core Opteron 885 CPUs). In particular, the on-board NIC stops working, probably because it gets assigned the wrong IRQ (225 in the non-working case, 217 in the working case)
With that patch applied, e1000 doesn't work. Reverting just that patch (shown below) from Linus's latest tree fixes things for me.
Please let me know what other debug information might be useful.
Thanks, Roland
Here's the patch I revert. I'm not sure what it's trying to do, or why it breaks my systems. But anyway, reverting this fixes things for me:
Author: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com> Date: Tue Sep 12 10:21:44 2006 -0700
PCI: assign ioapic resource at hotplug
We need to assign resources to ioapics being hot-added. This patch changes pbus_assign_resources_sorted() to assign resources if the ioapic has no assigned resources.
Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com> Signed-off-by: MUNEDA Takahiro <muneda.takahiro@jp.fujitsu.com> Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com> Signed-off-by: Kristen Carlson Accardi <kristen.c.accardi@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c index 47c1071..5440491 100644 --- a/drivers/pci/setup-bus.c +++ b/drivers/pci/setup-bus.c @@ -55,12 +55,19 @@ pbus_assign_resources_sorted(struct pci_ list_for_each_entry(dev, &bus->devices, bus_list) { u16 class = dev->class >> 8; - /* Don't touch classless devices or host bridges or ioapics. */ + /* Don't touch classless devices or host bridges. */ if (class == PCI_CLASS_NOT_DEFINED || - class == PCI_CLASS_BRIDGE_HOST || - class == PCI_CLASS_SYSTEM_PIC) + class == PCI_CLASS_BRIDGE_HOST) continue; + /* Don't touch ioapics if it has the assigned resources. */ + if (class == PCI_CLASS_SYSTEM_PIC) { + res = &dev->resource[0]; + if (res[0].start || res[1].start || res[2].start || + res[3].start || res[4].start || res[5].start) + continue; + } + pdev_sort_resources(dev, &head); }
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |