summaryrefslogtreecommitdiffstats
path: root/drivers
Commit message (Collapse)AuthorAgeFilesLines
* [PATCH] firmware/dcdbas: add size check in smi_data_writeDoug Warzecha2006-10-201-2/+5
| | | | | | | | | Add a size check in smi_data_write to prevent possible wrapping problems with large pos values when calling smi_data_buf_realloc on 32-bit. Signed-off-by: Doug Warzecha <Douglas_Warzecha@dell.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [PATCH] ipmi: fix return codes in failure caseDave Jones2006-10-201-2/+2
| | | | | | | | | These returns should be negative, like the others in this function. Signed-off-by: Dave Jones <davej@redhat.com> Acked-by: Corey Minyard <minyard@acm.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [PATCH] drivers/isdn: ioremap balanced with iounmapAmol Lad2006-10-202-3/+25
| | | | | | | | | | ioremap must be balanced by an iounmap and failing to do so can result in a memory leak. Signed-off-by: Amol Lad <amol@verismonetworks.com> Acked-by: Karsten Keil <kkeil@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [PATCH] irq updates: make eata_pio compileAlan Cox2006-10-201-1/+1
| | | | | | | Signed-off-by: Alan Cox <alan@redhat.com> Cc: James Bottomley <James.Bottomley@steeleye.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [PATCH] acpi memory hotplug: remove strange add_memory fail messageYasunori Goto2006-10-201-0/+12
| | | | | | | | | | | | | | | | | | | I wrote a patch to avoid redundant memory hot-add call at boot time. This was cause of strange fail message of memory hotplug like "ACPI: add_memory failed". Memory is recognized by early boot code with EFI/E820. But, if DSDT describes memory devices for them, then hot-add code is called for already recognized memory, and it shows fail messages with -EEXIST. So, sys admin will misunderstand this message as something wrong by it. This patch avoids them by preventing redundant hot-add call until completion of driver initialization. [akpm@osdl.org: cleanups] Signed-off-by: Yasunori Goto <y-goto@jp.fujitsu.com> Cc: "Brown, Len" <len.brown@intel.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [PATCH] Change log level of a message of acpi_memhotplug to KERN_DEBUGYasunori Goto2006-10-201-1/+1
| | | | | | | | | | I suppose this message seems quite useless except debugging. It just shows "Hotplug Mem Device". System admin can't know anything by this message. So, I would like to change it to KERN_DEBUG. Signed-off-by: Yasunori Goto <y-goto@jp.fujitsu.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [PATCH] fix "ACPI: Processor native C-states using MWAIT"Darrick J. Wong2006-10-201-1/+1
| | | | | | | | | | | | | | | | This patch breaks C-state discovery on my IBM IntelliStation Z30 because the return value of acpi_processor_get_power_info_fadt is not assigned to "result" in the case that acpi_processor_get_power_info_cst returns -ENODEV. Thus, if ACPI provides C-state data via the FADT and not _CST (as is the case on this machine), we incorrectly exit the function with -ENODEV after reading the FADT. The attached patch sets the value of result so that we don't exit early. Signed-off-by: Darrick J. Wong <djwong@us.ibm.com> Acked-by: "Pallipadi, Venkatesh" <venkatesh.pallipadi@intel.com> Acked-by: "Brown, Len" <len.brown@intel.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [PATCH] Kconfig serial typosRandy Dunlap2006-10-201-6/+6
| | | | | | | | | Fix typo (repeated) in serial Kconfig. Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com> Cc: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [PATCH] separate bdi congestion functions from queue congestion functionsAndrew Morton2006-10-201-1/+2
| | | | | | | | | | | | | | | | | | | Separate out the concept of "queue congestion" from "backing-dev congestion". Congestion is a backing-dev concept, not a queue concept. The blk_* congestion functions are retained, as wrappers around the core backing-dev congestion functions. This proper layering is needed so that NFS can cleanly use the congestion functions, and so that CONFIG_BLOCK=n actually links. Cc: "Thomas Maier" <balagi@justmail.de> Cc: "Jens Axboe" <jens.axboe@oracle.com> Cc: Trond Myklebust <trond.myklebust@fys.uio.no> Cc: David Howells <dhowells@redhat.com> Cc: Peter Osterlund <petero2@telia.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [PATCH] e100: fix reboot -f with netconsole enabledAuke Kok2006-10-201-19/+31
| | | | | | | | | | | When rebooting with netconsole over e100, the driver shutdown code would deadlock with netpoll. Reduce shutdown code to a bare minimum while retaining WoL and suspend functionality. Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com> Cc: Jeff Garzik <jeff@garzik.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* Merge branch 'ubuntu-updates' of ↵Linus Torvalds2006-10-1811-16/+82
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | master.kernel.org:/pub/scm/linux/kernel/git/bcollins/ubuntu-2.6 * 'ubuntu-updates' of master.kernel.org:/pub/scm/linux/kernel/git/bcollins/ubuntu-2.6: [pci_ids] Add Quicknet XJ vendor/device ID's. [valkyriefb] Ifdef for when CONFIG_NVRAM isn't enabled. [platinumfb] Ifdef for when CONFIG_NVRAM isn't enabled. [igafb] Add pci dev table for module auto loading. [controlfb] Ifdef for when CONFIG_NVRAM isn't enabled. [hid-core] TurboX Keyboard needs NOGET quirk. [ixj] Add pci dev table for module auto loading. [initio] Add pci dev table for module auto loading. [fdomain] Add pci dev table for module auto loading. [BusLogic] Add pci dev table for auto module loading. [mv643xx] Add pci device table for auto module loading. [alim7101] Add pci dev table for auto module loading.
| * [valkyriefb] Ifdef for when CONFIG_NVRAM isn't enabled.Ben Collins2006-10-181-2/+2
| | | | | | | | Signed-off-by: Ben Collins <bcollins@ubuntu.com>
| * [platinumfb] Ifdef for when CONFIG_NVRAM isn't enabled.Ben Collins2006-10-181-1/+4
| | | | | | | | Signed-off-by: Ben Collins <bcollins@ubuntu.com>
| * [igafb] Add pci dev table for module auto loading.Ben Collins2006-10-181-0/+7
| | | | | | | | Signed-off-by: Ben Collins <bcollins@ubuntu.com>
| * [controlfb] Ifdef for when CONFIG_NVRAM isn't enabled.Ben Collins2006-10-181-2/+6
| | | | | | | | Signed-off-by: Ben Collins <bcollins@ubuntu.com>
| * [hid-core] TurboX Keyboard needs NOGET quirk.Ben Collins2006-10-181-0/+5
| | | | | | | | Signed-off-by: Ben Collins <bcollins@ubuntu.com>
| * [ixj] Add pci dev table for module auto loading.Ben Collins2006-10-181-1/+10
| | | | | | | | Signed-off-by: Ben Collins <bcollins@ubuntu.com>
| * [initio] Add pci dev table for module auto loading.Ben Collins2006-10-181-9/+10
| | | | | | | | Signed-off-by: Ben Collins <bcollins@ubuntu.com>
| * [fdomain] Add pci dev table for module auto loading.Ben Collins2006-10-181-0/+9
| | | | | | | | Signed-off-by: Ben Collins <bcollins@ubuntu.com>
| * [BusLogic] Add pci dev table for auto module loading.Ben Collins2006-10-181-0/+11
| | | | | | | | Signed-off-by: Ben Collins <bcollins@ubuntu.com>
| * [mv643xx] Add pci device table for auto module loading.Ben Collins2006-10-181-0/+6
| | | | | | | | Signed-off-by: Ben Collins <bcollins@ubuntu.com>
| * [alim7101] Add pci dev table for auto module loading.Ben Collins2006-10-181-1/+12
| | | | | | | | | | | | Also fixes comment for nowayout module param. Signed-off-by: Ben Collins <bcollins@ubuntu.com>
* | Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/hwmon-2.6Linus Torvalds2006-10-188-63/+102
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/hwmon-2.6: hwmon: Fix debug messages in w83781d hwmon: Let w83781d and lm78 load again w83627ehf: Fix the detection of fan5 k8temp: Documentation update smsc47m1: List the SMSC LPC47M112 as supported hwmon: Fix documentation typos adm9240: Update Grant Coady's email address w83791d: Fix unchecked return status
| * | hwmon: Fix debug messages in w83781dJean Delvare2006-10-181-8/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix debug messages in w83781d at detection time. We can't use dev_dbg() on an i2c client's device before calling i2c_attach_client() on that client. Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
| * | hwmon: Let w83781d and lm78 load againJean Delvare2006-10-183-13/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Let the w83781d and lm78 hardware monitoring drivers load even when no chip was detected at the ISA address. There can still be supported chips connected to an I2C bus or SMBus. This fixes bug #7293. Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
| * | w83627ehf: Fix the detection of fan5Rudolf Marek2006-10-181-2/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix the detection of fan5 and preserve the bit between the register writes, because the bit is write only. Signed-off-by: Rudolf Marek <r.marek@assembler.cz> Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
| * | k8temp: Documentation updateRudolf Marek2006-10-181-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | Update the documentation for the k8temp driver. Signed-off-by: Rudolf Marek <r.marek@assembler.cz> Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
| * | smsc47m1: List the SMSC LPC47M112 as supportedJean Delvare2006-10-182-7/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The SMSC LPC47M112 Super-I/O chip appears to be compatible with the LPC47M10x and LPC47M13x as far as hardware monitoring is concerned. The device ID is even the same, so it's really only a documentation update. Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
| * | adm9240: Update Grant Coady's email addressGrant Coady2006-10-181-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Replace a bouncing email that I cannot recover from Mr Google. Signed-off-by: Grant Coady <gcoady.lk@gmail.com> Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
| * | w83791d: Fix unchecked return statusJim Cromie2006-10-181-29/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace all unchecked calls to device_create_file with a single group declaration, and one call to sysfs_create_group, and check that one return status. Also remove the files on device detach. Signed-off-by: Jim Cromie <jim.cromie@gmail.com> Signed-off by: Charles Spirakis <bezaur@gmail.com> Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* | | Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/aoe-2.6Linus Torvalds2006-10-187-179/+287
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/aoe-2.6: aoe: fix sysfs_create_file warnings aoe: revert printk macros aoe: update driver version aoe: remove sysfs comment aoe: use bio->bi_idx aoe: module parameter for device timeout aoe: zero copy write 2 of 2 aoe: improve retransmission heuristics aoe: jumbo frame support 2 of 2 aoe: clean up printks via macros aoe: jumbo frame support 1 of 2 aoe: zero copy write 1 of 2 aoe: remove unused NARGS enum aoe: update copyright date aoe: eliminate isbusy message
| * | | aoe: fix sysfs_create_file warningsGreg Kroah-Hartman2006-10-181-9/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Moved the attributes into a group, making the compiler be quiet about ignoring the return value of the file create calls. This also also fixed a bug when removing the files, which were not symlinks. Cc: "Ed L. Cashin" <ecashin@coraid.com> Cc: Alan Cox <alan@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
| * | | aoe: revert printk macrosEd L. Cashin2006-10-187-37/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch addresses the concern that the aoe driver should not introduce unecessary conventions that must be learned by the reader. It reverts patch 6. Signed-off-by: "Ed L. Cashin" <ecashin@coraid.com> Acked-by: Alan Cox <alan@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
| * | | aoe: update driver versionEd L. Cashin2006-10-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Update aoe driver version number to 32. Signed-off-by: "Ed L. Cashin" <ecashin@coraid.com> Acked-by: Alan Cox <alan@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
| * | | aoe: remove sysfs commentEd L. Cashin2006-10-181-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove unecessary comment. Signed-off-by: "Ed L. Cashin" <ecashin@coraid.com> Acked-by: Alan Cox <alan@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
| * | | aoe: use bio->bi_idxEd L. Cashin2006-10-182-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of starting with bio->bi_io_vec, use the offset in bio->bi_idx. Signed-off-by: "Ed L. Cashin" <ecashin@coraid.com> Acked-by: Alan Cox <alan@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
| * | | aoe: module parameter for device timeoutEd L. Cashin2006-10-181-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The aoe_deadsecs module parameter sets the number of seconds that elapse before a nonresponsive AoE device is marked as dead. This is runtime settable in sysfs or settable with a module load or kernel boot parameter. Signed-off-by: "Ed L. Cashin" <ecashin@coraid.com> Acked-by: Alan Cox <alan@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
| * | | aoe: zero copy write 2 of 2Ed L. Cashin2006-10-183-20/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Avoid memory copy on writes. (This patch follows patch 4.) Signed-off-by: "Ed L. Cashin" <ecashin@coraid.com> Acked-by: Alan Cox <alan@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
| * | | aoe: improve retransmission heuristicsEd L. Cashin2006-10-182-6/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a dynamic minimum timer for better retransmission behavior. Signed-off-by: "Ed L. Cashin" <ecashin@coraid.com> Acked-by: Alan Cox <alan@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
| * | | aoe: jumbo frame support 2 of 2Ed L. Cashin2006-10-181-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add support for jumbo ethernet frames. (This patch follows patch 5.) Signed-off-by: "Ed L. Cashin" <ecashin@coraid.com> Acked-by: Alan Cox <alan@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
| * | | aoe: clean up printks via macrosEd L. Cashin2006-10-187-58/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use simple macros to clean up the printks. (This patch is reverted by the 14th patch to follow.) Signed-off-by: "Ed L. Cashin" <ecashin@coraid.com> Acked-by: Alan Cox <alan@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
| * | | aoe: jumbo frame support 1 of 2Ed L. Cashin2006-10-183-17/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add support for jumbo ethernet frames. (This patch depends on patch 7 to follow.) Signed-off-by: "Ed L. Cashin" <ecashin@coraid.com> Acked-by: Alan Cox <alan@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
| * | | aoe: zero copy write 1 of 2Ed L. Cashin2006-10-183-74/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Avoid memory copy on writes. (This patch depends on fixes in patch 9 to follow.) Although skb->len should not be set when working with linear skbuffs, the skb->tail pointer maintained by skb_put/skb_trim is not relevant to what happens when the skb_fill_page_desc function is called. This issue was raised without comment in linux-kernel and netdev earlier this month: http://thread.gmane.org/gmane.linux.kernel/446474/ http://thread.gmane.org/gmane.linux.network/45444/ So until there is something analogous to skb_put that works for zero-copy write skbuffs, we will do what the other callers of skb_fill_page_desc are doing. Signed-off-by: "Ed L. Cashin" <ecashin@coraid.com> Acked-by: Alan Cox <alan@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
| * | | aoe: remove unused NARGS enumEd L. Cashin2006-10-181-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The NARGS enum is left over from older code versions. Signed-off-by: "Ed L. Cashin" <ecashin@coraid.com> Acked-by: Alan Cox <alan@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
| * | | aoe: update copyright dateEd L. Cashin2006-10-187-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Update the copyright year to 2006. Signed-off-by: "Ed L. Cashin" <ecashin@coraid.com> Acked-by: Alan Cox <alan@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
| * | | aoe: eliminate isbusy messageEd L. Cashin2006-10-181-4/+1
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | This message doesn't help users because the circumstance isn't problematic. Signed-off-by: "Ed L. Cashin" <ecashin@coraid.com> Acked-by: Alan Cox <alan@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* | | Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/pci-2.6Linus Torvalds2006-10-1837-387/+447
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/pci-2.6: (22 commits) PCI Hotplug: move pci_hotplug.h to include/linux/ change pci hotplug subsystem maintainer to Kristen PCI: optionally sort device lists breadth-first cpcihp_generic: prevent loading without "bridge" parameter pci: Additional search functions PCI: quirks: switch quirks code offender to use pci_get API PCI: Update MSI-HOWTO.txt according to pci_msi_supported() PCI: Improve pci_msi_supported() comments PCI hotplug: ioremap balanced with iounmap shpchp: remove unnecessary cmd_busy member from struct controller shpchp: fix command completion check pci: Stamp out pci_find_* usage in fakephp PCI: fix pcie_portdrv_restore_config undefined without CONFIG_PM error Fix DMA resource allocation in ACPIPnP PCI: Turn pci_fixup_video into generic for embedded VGA PCI: add ICH7/8 ACPI/GPIO io resource quirks PCI: pcie-check-and-return-bus_register-errors fix PCI: VIA IRQ quirk behaviour change pciehp: Remove unnecessary check in pciehp_ctrl.c pciehp - add missing locking ...
| * | | PCI Hotplug: move pci_hotplug.h to include/linux/Greg Kroah-Hartman2006-10-1823-257/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes it possible to build pci hotplug drivers outside of the main kernel tree, and Sam keeps telling me to move local header files to their proper places... Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
| * | | change pci hotplug subsystem maintainer to KristenKristen Carlson Accardi2006-10-182-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Here's a patch adding me to the maintainers file for the pci hotplug subsystem, as we discussed. Signed-off-by: Kristen Carlson Accardi <kristen.c.accardi@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
| * | | PCI: optionally sort device lists breadth-firstMatt Domsch2006-10-181-0/+92
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: New Dell PowerEdge servers have 2 embedded ethernet ports, which are labeled NIC1 and NIC2 on the chassis, in the BIOS setup screens, and in the printed documentation. Assuming no other add-in ethernet ports in the system, Linux 2.4 kernels name these eth0 and eth1 respectively. Many people have come to expect this naming. Linux 2.6 kernels name these eth1 and eth0 respectively (backwards from expectations). I also have reports that various Sun and HP servers have similar behavior. Root cause: Linux 2.4 kernels walk the pci_devices list, which happens to be sorted in breadth-first order (or pcbios_find_device order on i386, which most often is breadth-first also). 2.6 kernels have both the pci_devices list and the pci_bus_type.klist_devices list, the latter is what is walked at driver load time to match the pci_id tables; this klist happens to be in depth-first order. On systems where, for physical routing reasons, NIC1 appears on a lower bus number than NIC2, but NIC2's bridge is discovered first in the depth-first ordering, NIC2 will be discovered before NIC1. If the list were sorted breadth-first, NIC1 would be discovered before NIC2. A PowerEdge 1955 system has the following topology which easily exhibits the difference between depth-first and breadth-first device lists. -[0000:00]-+-00.0 Intel Corporation 5000P Chipset Memory Controller Hub +-02.0-[0000:03-08]--+-00.0-[0000:04-07]--+-00.0-[0000:05-06]----00.0-[0000:06]----00.0 Broadcom Corporation NetXtreme II BCM5708S Gigabit Ethernet (labeled NIC2, 2.4 kernel name eth1, 2.6 kernel name eth0) +-1c.0-[0000:01-02]----00.0-[0000:02]----00.0 Broadcom Corporation NetXtreme II BCM5708S Gigabit Ethernet (labeled NIC1, 2.4 kernel name eth0, 2.6 kernel name eth1) Other factors, such as device driver load order and the presence of PCI slots at various points in the bus hierarchy further complicate this problem; I'm not trying to solve those here, just restore the device order, and thus basic behavior, that 2.4 kernels had. Solution: The solution can come in multiple steps. Suggested fix #1: kernel Patch below optionally sorts the two device lists into breadth-first ordering to maintain compatibility with 2.4 kernels. It adds two new command line options: pci=bfsort pci=nobfsort to force the sort order, or not, as you wish. It also adds DMI checks for the specific Dell systems which exhibit "backwards" ordering, to make them "right". Suggested fix #2: udev rules from userland Many people also have the expectation that embedded NICs are always discovered before add-in NICs (which this patch does not try to do). Using the PCI IRQ Routing Table provided by system BIOS, it's easy to determine which PCI devices are embedded, or if add-in, which PCI slot they're in. I'm working on a tool that would allow udev to name ethernet devices in ascending embedded, slot 1 .. slot N order, subsort by PCI bus/dev/fn breadth-first. It'll be possible to use it independent of udev as well for those distributions that don't use udev in their installers. Suggested fix #3: system board routing rules One can constrain the system board layout to put NIC1 ahead of NIC2 regardless of breadth-first or depth-first discovery order. This adds a significant level of complexity to board routing, and may not be possible in all instances (witness the above systems from several major manufacturers). I don't want to encourage this particular train of thought too far, at the expense of not doing #1 or #2 above. Feedback appreciated. Patch tested on a Dell PowerEdge 1955 blade with 2.6.18. You'll also note I took some liberty and temporarily break the klist abstraction to simplify and speed up the sort algorithm. I think that's both safe and appropriate in this instance. Signed-off-by: Matt Domsch <Matt_Domsch@dell.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
OpenPOWER on IntegriCloud