diff options
author | Mike Miller <mike.miller@hp.com> | 2013-04-29 11:55:53 -0700 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2013-04-29 21:24:02 +0200 |
commit | e4292e05d4c1bb4e64c299ea4b378a0f66d3cc8a (patch) | |
tree | a5e4a07ab1d6786828ce91fe9466b27e78ccd005 /drivers/block/cciss.c | |
parent | aed3d67e57ec3d27d64114ab61dab9bcd69fe42f (diff) | |
download | linux-e4292e05d4c1bb4e64c299ea4b378a0f66d3cc8a.tar.gz linux-e4292e05d4c1bb4e64c299ea4b378a0f66d3cc8a.tar.bz2 linux-e4292e05d4c1bb4e64c299ea4b378a0f66d3cc8a.zip |
cciss: add cciss_allow_hpsa module parameter
Add the cciss_allow_hpsa modules parameter. This allows users to use the
hpsa driver instead of cciss for older controllers.
Signed-off-by: Mike Miller <mike.miller@hp.com>
Cc: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'drivers/block/cciss.c')
-rw-r--r-- | drivers/block/cciss.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c index ade58bc8f3c4..2b485ca1150b 100644 --- a/drivers/block/cciss.c +++ b/drivers/block/cciss.c @@ -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; |