diff options
author | Stephen M. Cameron <scameron@beardog.cce.hp.com> | 2010-02-26 17:01:17 -0500 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2010-02-28 13:42:31 -0500 |
commit | 1b7d0d28ad82cbd5650c26ec8e370176b112e407 (patch) | |
tree | 5b7cd9a673ad2fe6c28d141d8822b0ea80095bd4 /drivers/block/cciss_scsi.c | |
parent | 58daa9ce96b847ed130453f5fdd63c579fb1f84f (diff) |
cciss: detect bad alignment of scsi commands at build time
cciss: detect bad alignment of scsi commands at build time
Incidentally fix some nearby c++ style comments.
Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'drivers/block/cciss_scsi.c')
-rw-r--r-- | drivers/block/cciss_scsi.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/block/cciss_scsi.c b/drivers/block/cciss_scsi.c index 5d0e46dc3632..f203606faaff 100644 --- a/drivers/block/cciss_scsi.c +++ b/drivers/block/cciss_scsi.c | |||
@@ -93,11 +93,15 @@ static struct scsi_host_template cciss_driver_template = { | |||
93 | }; | 93 | }; |
94 | 94 | ||
95 | #pragma pack(1) | 95 | #pragma pack(1) |
96 | |||
97 | #define SCSI_PAD_32 4 | ||
98 | #define SCSI_PAD_64 4 | ||
99 | |||
96 | struct cciss_scsi_cmd_stack_elem_t { | 100 | struct cciss_scsi_cmd_stack_elem_t { |
97 | CommandList_struct cmd; | 101 | CommandList_struct cmd; |
98 | ErrorInfo_struct Err; | 102 | ErrorInfo_struct Err; |
99 | __u32 busaddr; | 103 | __u32 busaddr; |
100 | __u32 pad; | 104 | u8 pad[IS_32_BIT * SCSI_PAD_32 + IS_64_BIT * SCSI_PAD_64]; |
101 | }; | 105 | }; |
102 | 106 | ||
103 | #pragma pack() | 107 | #pragma pack() |
@@ -202,9 +206,9 @@ scsi_cmd_stack_setup(int ctlr, struct cciss_scsi_adapter_data_t *sa) | |||
202 | stk = &sa->cmd_stack; | 206 | stk = &sa->cmd_stack; |
203 | size = sizeof(struct cciss_scsi_cmd_stack_elem_t) * CMD_STACK_SIZE; | 207 | size = sizeof(struct cciss_scsi_cmd_stack_elem_t) * CMD_STACK_SIZE; |
204 | 208 | ||
205 | // pci_alloc_consistent guarantees 32-bit DMA address will | 209 | /* Check alignment, see cciss_cmd.h near CommandList_struct def. */ |
206 | // be used | 210 | BUILD_BUG_ON((sizeof(*stk->pool) % COMMANDLIST_ALIGNMENT) != 0); |
207 | 211 | /* pci_alloc_consistent guarantees 32-bit DMA address will be used */ | |
208 | stk->pool = (struct cciss_scsi_cmd_stack_elem_t *) | 212 | stk->pool = (struct cciss_scsi_cmd_stack_elem_t *) |
209 | pci_alloc_consistent(hba[ctlr]->pdev, size, &stk->cmd_pool_handle); | 213 | pci_alloc_consistent(hba[ctlr]->pdev, size, &stk->cmd_pool_handle); |
210 | 214 | ||