|
@@ -75,6 +75,12 @@ module_param(cciss_simple_mode, int, S_IRUGO|S_IWUSR);
|
|
|
MODULE_PARM_DESC(cciss_simple_mode,
|
|
|
"Use 'simple mode' rather than 'performant mode'");
|
|
|
|
|
|
+static int cciss_allow_hpsa;
|
|
|
+module_param(cciss_allow_hpsa, int, S_IRUGO|S_IWUSR);
|
|
|
+MODULE_PARM_DESC(cciss_allow_hpsa,
|
|
|
+ "Prevent cciss driver from accessing hardware known to be "
|
|
|
+ " supported by the hpsa driver");
|
|
|
+
|
|
|
static DEFINE_MUTEX(cciss_mutex);
|
|
|
static struct proc_dir_entry *proc_cciss;
|
|
|
|
|
@@ -4116,9 +4122,13 @@ static int cciss_lookup_board_id(struct pci_dev *pdev, u32 *board_id)
|
|
|
*board_id = ((subsystem_device_id << 16) & 0xffff0000) |
|
|
|
subsystem_vendor_id;
|
|
|
|
|
|
- for (i = 0; i < ARRAY_SIZE(products); i++)
|
|
|
+ for (i = 0; i < ARRAY_SIZE(products); i++) {
|
|
|
+ /* Stand aside for hpsa driver on request */
|
|
|
+ if (cciss_allow_hpsa)
|
|
|
+ return -ENODEV;
|
|
|
if (*board_id == products[i].board_id)
|
|
|
return i;
|
|
|
+ }
|
|
|
dev_warn(&pdev->dev, "unrecognized board ID: 0x%08x, ignoring.\n",
|
|
|
*board_id);
|
|
|
return -ENODEV;
|