Supported Devices


Before spending hours determining why a device has failed, we must first confirm that the device is supported by the running kernel. Next, we must confirm that the device meets the hardware requirements set forth by the vendor. Of course, most of us never check to see whether a device we are about to play with is supported; instead, we just plug it in, and if the lights come on, we think we have struck gold. Though this approach might work most of the time, to reduce a system's downtime, troubleshooting a failed component should start with the fundamentals.

Each OS distribution provides a supported hardware list, so it is best to check with your applicable distribution to determine whether the device in question is supported. A good example is Red Hat's complete hardware support matrix, which is located at http://hardware.redhat.com/hcl/?pagename=hcl&view=allhardware#form. Another example is Mandriva's supported hardware database, which is found at http://wwwnew.mandriva.com/en/hardware/. For our last example, the SUSE Linux hardware support list can be found at http://hardwaredb.suse.de/index.php?LANG=en_UK.

It is not sufficient merely to determine that the device is supported. As previously noted, it also is crucial to confirm that the device meets the hardware requirements set forth by the vendor. Each driver for any given device is designed with certain hardware restrictions. For example, Emulex Corporation writes a driver that enables its Host Bus Adapters (HBAs) to function with the Linux kernel, yet restrictions do apply. Emulex has a vast number of HBAs to choose from, so determining which adapter, as well as which driver, is supported on any given kernel is critical. Determining these boundaries makes remedying the problem more manageable. Of course, recall that when a new hardware device such as an HBA is acquired, it is important to check its supportability with the distribution's hardware support matrix. Finally, the driver code for a device also contains information regarding the supported hardware types. This is demonstrated in the following example. Upon reviewing the source code for the Emulex HBA in file fcLINUXfcp.c, which is used to build the driver module lpfcdd.o, we find the following:

if(pdev != NULL) {     switch(pdev->device){     case PCI_DEVICE_ID_CENTAUR:       sprintf(buf,         "Emulex %s (LP9000) SCSI on PCI bus %02x device %02x irq %d",         multip, p_dev_ctl->pcidev->bus->number, p_dev_ctl->pcidev->devfn,         p_dev_ctl->pcidev->irq);       break;


Although the previous example provides us with the information needed to determine the supported HBA types for Emulex, a faster method of extracting the same data exists. As with any hardware vendor, common characteristics exist with naming conventions. For example, Emulex starts all its HBAs with "LP." By using this shortcut, we can extract the supported HBA types at a greater speed than with the previous command. The following command demonstrates this faster method:

[root@cyclops lpfc]# cat fcLINUXfcp.c | grep "Emulex %s (LP" "Emulex %s (LP9000) SCSI on PCI bus %02x device %02x irq %d",             "Emulex %s (LP8000) SCSI on PCI bus %02x device %02x irq %d",             "Emulex %s (LP7000) SCSI on PCI bus %02x device %02x irq %d",             "Emulex %s (LP950) SCSI on PCI bus %02x device %02x irq %d",             "Emulex %s (LP850) SCSI on PCI bus %02x device %02x irq %d",


We also can identify the version of the kernel for which the source is designed and confirm that the driver source works with the applicable kernel we are using. As shown in the following example, we can distinguish that the source code for our Emulex HBAs, contained in fcLINUXfcp.c, has notes pertaining to which kernels are supported.

/* * LINUX specific code for lpfcdd driver  * This driver is written to work with 2.2 and 2.4 LINUX kernel threads.  *  */


Next, we need to determine the driver version for the source code we are reviewing. To find the driver version, simply search for "version" and "driver" simultaneously. The driver developers usually make it easy to find out which source code version is being used. See the next example:

root@cyclops lpfc]# cat fcLINUXfcp.c| grep -i version | grep -i driver #define LPFC_DRIVER_VERSION "4.20p ...


Note that we also can determine other needed information about the device from the manufacturer or Linux distribution. Data requirements with respect to drivers, kernels, hardware, and so on always can be found at the OS distribution's Web site, from the hardware vendor, or in the driver code. The README files provided with almost all drivers contain specifications to adhere to as well. Always check the previous data points before continuing down a broken path.



Linux Troubleshooting for System Administrators and Power Users
Real World Mac Maintenance and Backups
ISBN: 131855158
EAN: 2147483647
Year: 2004
Pages: 129
Authors: Joe Kissell

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net