FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.

» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Ubuntu > Ubuntu Kernel Team

LinkBack Thread Tools
Old 04-09-2008, 02:38 PM
Default Fix i450NX handling of PCI peer buses when BIOS reports them correctly

This is a fix for an issue that has affected Ubuntu since Gutsy (2.6.22)
especially on server platforms. I'm hoping we can get it into Hardy
since it is an LTS. The last Ubuntu version that doesn't suffer this
issue is Feisty with kernel 2.6.20. It should get into mainline shortly.

The problem is that on systems with Intel 450NX chipsets which provides
multiple PCI root buses, the 2nd and 3rd buses aren't enumerated because
the ACPI code ignores them, thinking they have already been enumerated.
This can lead to the issue reported in launchpad bug #149071


where RAID array controllers aren't discovered and therefore the server
won't boot.

I extended that bug report somewhat and started afresh on the kernel
bugzilla with 2.6.25-rc8:


I was able to trace and identify the cause of the failure and produce a
very simple patch to fix it. The patch involves checking the DMI of the
system and if it is a Dell PowerEdge 6300 *not* applying the 450NX
fix-up. If other systems are discovered with the same problem their DMI
characteristics can be easily added as DMI_MATCH elements.

The proposed patch for mainline is attached to the bugzilla report. The
Hardy patch is attached here. I'll attach both the Gutsy and Hardy
patches to launchpad bug report #149071.


PCI: Don't scan i450NX secondary buses on Dell PowerEdge 6300

Signed off by: TJ <linux@tjworld.net>

--- ubuntu-hardy.orig/arch/x86/pci/fixup.c 2008-04-09 15:24:25.000000000 +0100
+++ ubuntu-hardy/arch/x86/pci/fixup.c 2008-04-09 15:30:24.000000000 +0100
@@ -9,6 +9,19 @@
#include "pci.h"

+/* TJ: Added to work around duplicate bus-scan and subsequent PERC 2 controller failure
+ * See http://bugzilla.kernel.org/show_bug.cgi?id=10396 */
+static struct dmi_system_id __devinitdata i450nx_dmi_table[] = {
+ {
+ .ident = "Dell-PowerEdge-6300",
+ .matches = {
+ DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 6300"),
+ },
+ },
+ {}
static void __devinit pci_fixup_i450nx(struct pci_dev *d)
@@ -17,6 +30,18 @@
int pxb, reg;
u8 busno, suba, subb;

+ /* TJ: Added to work around duplicate bus-scan and subsequent Dell
+ * PERC 2 controller failure.
+ * See http://bugzilla.kernel.org/show_bug.cgi?id=10396
+ *
+ * NOTE: A matching entry causes a return without *doing anything*
+ * - the opposite of this logic in other cases.
+ */
+ if (dmi_check_system(i450nx_dmi_table)) {
+ DBG("i450NX PXB fix-up ignored - found %s
", i450nx_dmi_table.ident);
+ return; /* doesn't apply to matched systems */
+ }
printk(KERN_WARNING "PCI: Searching for i450NX host bridges on %s
", pci_name(d));
reg = 0xd0;
for(pxb=0; pxb<2; pxb++) {

kernel-team mailing list

Thread Tools

All times are GMT. The time now is 10:09 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org