summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarol Hebert <cah@us.ibm.com>2008-04-04 14:30:03 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2008-04-04 14:46:26 -0700
commitabd24df828f1a72971db29d1b74fefae104ea9e2 (patch)
treecd3d854c13f6c3f79ff513ca4f82861ce461897a
parentfb6d080c6f75dfd7e23d5a3575334785aa8738eb (diff)
downloadlinux-stable-abd24df828f1a72971db29d1b74fefae104ea9e2.tar.gz
linux-stable-abd24df828f1a72971db29d1b74fefae104ea9e2.tar.bz2
linux-stable-abd24df828f1a72971db29d1b74fefae104ea9e2.zip
ipmi: change device node ordering to reflect probe order
In 2.6.14 a patch was merged which switching the order of the ipmi device naming from in-order-of-discovery over to reverse-order-of-discovery. So on systems with multiple BMC interfaces, the ipmi device names are being created in reverse order relative to how they are discovered on the system (e.g. on an IBM x3950 multinode server with N nodes, the device name for the BMC in the first node is /dev/ipmiN-1 and the device name for the BMC in the last node is /dev/ipmi0, etc.). The problem is caused by the list handling routines chosen in dmi_scan.c. Using list_add() causes the multiple ipmi devices to be added to the device list using a stack-paradigm and so the ipmi driver subsequently pulls them off during initialization in LIFO order. This patch changes the dmi_save_ipmi_device() list handling paradigm to a queue, thereby allowing the ipmi driver to build the ipmi device names in the order in which they are found on the system. Signed-off-by: Carol Hebert <cah@us.ibm.com> Signed-off-by: Corey Minyard <cminyard@mvista.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--drivers/firmware/dmi_scan.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c
index 4072449ad1cd..c5e3ed7e903b 100644
--- a/drivers/firmware/dmi_scan.c
+++ b/drivers/firmware/dmi_scan.c
@@ -266,7 +266,7 @@ static void __init dmi_save_ipmi_device(const struct dmi_header *dm)
dev->name = "IPMI controller";
dev->device_data = data;
- list_add(&dev->list, &dmi_devices);
+ list_add_tail(&dev->list, &dmi_devices);
}
static void __init dmi_save_extended_devices(const struct dmi_header *dm)