diff options
author | Mike Miller <mike.miller@hp.com> | 2010-06-02 15:58:06 -0400 |
---|---|---|
committer | Jens Axboe <jaxboe@fusionio.com> | 2010-08-07 12:12:51 -0400 |
commit | 5e216153c34ac21781110795284a784037f808e3 (patch) | |
tree | b42ceb1e884bdb397283ddb01562fe03d1f95cad /drivers/block/cciss_scsi.c | |
parent | 1d1414419f034702bf587accdf2a9ac53245e000 (diff) |
cciss: add performant mode support for Stars/Sirius
Add a mode of controller operation called Performant Mode. Even though
cciss has been deprecated in favor of hpsa there are new controllers due
out next year that HP must support in older vendor distros. Vendors
require all fixes/features be upstream. These new controllers support
only 16 commands in simple mode but support up to 1024 in performant mode.
This requires us to add this support at this late date.
The performant mode transport minimizes host PCI accesses by performinf
many completions per read. PCI writes are posted so the host can write
then immediately get off the bus not waiting for the writwe to complete to
the target. In the context of performant mode the host read out to a
controller pulls all posted writes into host memory ensuring the reply
queue is coherent.
Signed-off-by: Mike Miller <mike.miller@hp.com>
Cc: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
Diffstat (limited to 'drivers/block/cciss_scsi.c')
-rw-r--r-- | drivers/block/cciss_scsi.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/block/cciss_scsi.c b/drivers/block/cciss_scsi.c index 72dae92f3cab..48be47853737 100644 --- a/drivers/block/cciss_scsi.c +++ b/drivers/block/cciss_scsi.c | |||
@@ -93,8 +93,8 @@ static struct scsi_host_template cciss_driver_template = { | |||
93 | 93 | ||
94 | #pragma pack(1) | 94 | #pragma pack(1) |
95 | 95 | ||
96 | #define SCSI_PAD_32 0 | 96 | #define SCSI_PAD_32 8 |
97 | #define SCSI_PAD_64 0 | 97 | #define SCSI_PAD_64 8 |
98 | 98 | ||
99 | struct cciss_scsi_cmd_stack_elem_t { | 99 | struct cciss_scsi_cmd_stack_elem_t { |
100 | CommandList_struct cmd; | 100 | CommandList_struct cmd; |
@@ -213,6 +213,8 @@ scsi_cmd_stack_setup(int ctlr, struct cciss_scsi_adapter_data_t *sa) | |||
213 | 213 | ||
214 | /* Check alignment, see cciss_cmd.h near CommandList_struct def. */ | 214 | /* Check alignment, see cciss_cmd.h near CommandList_struct def. */ |
215 | BUILD_BUG_ON((sizeof(*stk->pool) % COMMANDLIST_ALIGNMENT) != 0); | 215 | BUILD_BUG_ON((sizeof(*stk->pool) % COMMANDLIST_ALIGNMENT) != 0); |
216 | /* printk(KERN_WARNING "cciss_scsi.c: 0x%08x 0x%08x 0x%08x\n", | ||
217 | 0xdeadbeef, sizeof(*stk->pool), 0xbeefdead); */ | ||
216 | /* pci_alloc_consistent guarantees 32-bit DMA address will be used */ | 218 | /* pci_alloc_consistent guarantees 32-bit DMA address will be used */ |
217 | stk->pool = (struct cciss_scsi_cmd_stack_elem_t *) | 219 | stk->pool = (struct cciss_scsi_cmd_stack_elem_t *) |
218 | pci_alloc_consistent(hba[ctlr]->pdev, size, &stk->cmd_pool_handle); | 220 | pci_alloc_consistent(hba[ctlr]->pdev, size, &stk->cmd_pool_handle); |