diff options
author | Stephen M. Cameron <scameron@beardog.cce.hp.com> | 2011-01-06 15:48:29 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2011-01-24 12:30:43 -0500 |
commit | 02ec19c82e87e3748d326ca5e15e7ddb18c73476 (patch) | |
tree | bec075bdfbe16a1ca5cc4df9ada03ef9a14a01b5 | |
parent | 6eaf46fdc719991a3ccda1e14b274e9adb515978 (diff) |
[SCSI] hpsa: allow driver to put controller in either simple or performant mode
Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
-rw-r--r-- | Documentation/scsi/hpsa.txt | 6 | ||||
-rw-r--r-- | drivers/scsi/hpsa.c | 7 |
2 files changed, 13 insertions, 0 deletions
diff --git a/Documentation/scsi/hpsa.txt b/Documentation/scsi/hpsa.txt index dca658362cbf..b14e6ee00a95 100644 --- a/Documentation/scsi/hpsa.txt +++ b/Documentation/scsi/hpsa.txt | |||
@@ -28,6 +28,12 @@ boot parameter "hpsa_allow_any=1" is specified, however these are not tested | |||
28 | nor supported by HP with this driver. For older Smart Arrays, the cciss | 28 | nor supported by HP with this driver. For older Smart Arrays, the cciss |
29 | driver should still be used. | 29 | driver should still be used. |
30 | 30 | ||
31 | The "hpsa_simple_mode=1" boot parameter may be used to prevent the driver from | ||
32 | putting the controller into "performant" mode. The difference is that with simple | ||
33 | mode, each command completion requires an interrupt, while with "performant mode" | ||
34 | (the default, and ordinarily better performing) it is possible to have multiple | ||
35 | command completions indicated by a single interrupt. | ||
36 | |||
31 | HPSA specific entries in /sys | 37 | HPSA specific entries in /sys |
32 | ----------------------------- | 38 | ----------------------------- |
33 | 39 | ||
diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c index 4fb62c2aac05..10076f1868e0 100644 --- a/drivers/scsi/hpsa.c +++ b/drivers/scsi/hpsa.c | |||
@@ -74,6 +74,10 @@ static int hpsa_allow_any; | |||
74 | module_param(hpsa_allow_any, int, S_IRUGO|S_IWUSR); | 74 | module_param(hpsa_allow_any, int, S_IRUGO|S_IWUSR); |
75 | MODULE_PARM_DESC(hpsa_allow_any, | 75 | MODULE_PARM_DESC(hpsa_allow_any, |
76 | "Allow hpsa driver to access unknown HP Smart Array hardware"); | 76 | "Allow hpsa driver to access unknown HP Smart Array hardware"); |
77 | static int hpsa_simple_mode; | ||
78 | module_param(hpsa_simple_mode, int, S_IRUGO|S_IWUSR); | ||
79 | MODULE_PARM_DESC(hpsa_simple_mode, | ||
80 | "Use 'simple mode' rather than 'performant mode'"); | ||
77 | 81 | ||
78 | /* define the PCI info for the cards we can control */ | 82 | /* define the PCI info for the cards we can control */ |
79 | static const struct pci_device_id hpsa_pci_device_id[] = { | 83 | static const struct pci_device_id hpsa_pci_device_id[] = { |
@@ -4038,6 +4042,9 @@ static __devinit void hpsa_put_ctlr_into_performant_mode(struct ctlr_info *h) | |||
4038 | { | 4042 | { |
4039 | u32 trans_support; | 4043 | u32 trans_support; |
4040 | 4044 | ||
4045 | if (hpsa_simple_mode) | ||
4046 | return; | ||
4047 | |||
4041 | trans_support = readl(&(h->cfgtable->TransportSupport)); | 4048 | trans_support = readl(&(h->cfgtable->TransportSupport)); |
4042 | if (!(trans_support & PERFORMANT_MODE)) | 4049 | if (!(trans_support & PERFORMANT_MODE)) |
4043 | return; | 4050 | return; |