|
@@ -93,11 +93,15 @@ static struct scsi_host_template cciss_driver_template = {
|
|
|
};
|
|
|
|
|
|
#pragma pack(1)
|
|
|
+
|
|
|
+#define SCSI_PAD_32 4
|
|
|
+#define SCSI_PAD_64 4
|
|
|
+
|
|
|
struct cciss_scsi_cmd_stack_elem_t {
|
|
|
CommandList_struct cmd;
|
|
|
ErrorInfo_struct Err;
|
|
|
__u32 busaddr;
|
|
|
- __u32 pad;
|
|
|
+ u8 pad[IS_32_BIT * SCSI_PAD_32 + IS_64_BIT * SCSI_PAD_64];
|
|
|
};
|
|
|
|
|
|
#pragma pack()
|
|
@@ -202,9 +206,9 @@ scsi_cmd_stack_setup(int ctlr, struct cciss_scsi_adapter_data_t *sa)
|
|
|
stk = &sa->cmd_stack;
|
|
|
size = sizeof(struct cciss_scsi_cmd_stack_elem_t) * CMD_STACK_SIZE;
|
|
|
|
|
|
- // pci_alloc_consistent guarantees 32-bit DMA address will
|
|
|
- // be used
|
|
|
-
|
|
|
+ /* Check alignment, see cciss_cmd.h near CommandList_struct def. */
|
|
|
+ BUILD_BUG_ON((sizeof(*stk->pool) % COMMANDLIST_ALIGNMENT) != 0);
|
|
|
+ /* pci_alloc_consistent guarantees 32-bit DMA address will be used */
|
|
|
stk->pool = (struct cciss_scsi_cmd_stack_elem_t *)
|
|
|
pci_alloc_consistent(hba[ctlr]->pdev, size, &stk->cmd_pool_handle);
|
|
|
|