misc: hpilo: ignore auxiliary HP iLO BMC's
authorMark Rusk <Mark.Rusk@hp.com>
Tue, 6 Nov 2012 20:33:13 +0000 (14:33 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 16 Nov 2012 01:35:59 +0000 (17:35 -0800)
This patch ignores auxiliary HP Lights-Out (iLO) management controllers.

All HP iLO controllers that have had the PCI subsystem device ID set to 0x1979
by the BIOS are ignored. Also changes default number of channels to 16 and
bumps the version of the module from 1.3 to 1.4.

Signed-off-by: Mark Rusk <mark.rusk@hp.com>
----
 drivers/misc/hpilo.c |   15 +++++++++++----
 1 files changed, 11 insertions(+), 4 deletions(-)
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/misc/hpilo.c

index 12ccdf94e4fa1371889873c0e305669f0f30f7f4..b362d938e929c01541ba3e4ff267232edef0117d 100644 (file)
@@ -30,7 +30,7 @@
 
 static struct class *ilo_class;
 static unsigned int ilo_major;
-static unsigned int max_ccb = MIN_CCB;
+static unsigned int max_ccb = 16;
 static char ilo_hwdev[MAX_ILO_DEV];
 
 static inline int get_entry_id(int entry)
@@ -725,6 +725,9 @@ static void ilo_remove(struct pci_dev *pdev)
        int i, minor;
        struct ilo_hwinfo *ilo_hw = pci_get_drvdata(pdev);
 
+       if (!ilo_hw)
+               return;
+
        clear_device(ilo_hw);
 
        minor = MINOR(ilo_hw->cdev.dev);
@@ -751,9 +754,13 @@ static void ilo_remove(struct pci_dev *pdev)
 static int __devinit ilo_probe(struct pci_dev *pdev,
                               const struct pci_device_id *ent)
 {
-       int devnum, minor, start, error;
+       int devnum, minor, start, error = 0;
        struct ilo_hwinfo *ilo_hw;
 
+       /* Ignore subsystem_device = 0x1979 (set by BIOS)  */
+       if (pdev->subsystem_device == 0x1979)
+               goto out;
+
        if (max_ccb > MAX_CCB)
                max_ccb = MAX_CCB;
        else if (max_ccb < MIN_CCB)
@@ -892,14 +899,14 @@ static void __exit ilo_exit(void)
        class_destroy(ilo_class);
 }
 
-MODULE_VERSION("1.3");
+MODULE_VERSION("1.4");
 MODULE_ALIAS(ILO_NAME);
 MODULE_DESCRIPTION(ILO_NAME);
 MODULE_AUTHOR("David Altobelli <david.altobelli@hp.com>");
 MODULE_LICENSE("GPL v2");
 
 module_param(max_ccb, uint, 0444);
-MODULE_PARM_DESC(max_ccb, "Maximum number of HP iLO channels to attach (8)");
+MODULE_PARM_DESC(max_ccb, "Maximum number of HP iLO channels to attach (16)");
 
 module_init(ilo_init);
 module_exit(ilo_exit);