scsi: pmcraid: fix endianess sparse annotations

The use of le32_to_cpu() etc in this driver looks completely arbitrary.
It may have made sense at some point, but it is not applied consistently,
so this driver presumably won't work on big-endian kernel builds.

Unfortunately it's unclear whether the type names or the calls to
le32_to_cpu() are the correct ones. I'm taking educated guesses here
and assume that most of the __le32 and __le16 annotations are correct,
adding the conversion helpers whereever we access those fields.

The exceptions are the 'fw_version' field that is always accessed as
big-endian, so I'm changing the type here, and the 'hrrq' values that
are accessed as little-endian, so I'm changing those the other way.

None of these changes should have any effect on little-endian
architectures like x86, but it addresses the sparse warnings.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Arnd Bergmann 2017-04-20 19:54:47 +02:00 committed by Martin K. Petersen
parent 3397623b37
commit 45c80be614
2 changed files with 51 additions and 52 deletions

View File

@ -175,7 +175,7 @@ static int pmcraid_slave_alloc(struct scsi_device *scsi_dev)
if (fw_version <= PMCRAID_FW_VERSION_1) if (fw_version <= PMCRAID_FW_VERSION_1)
target = temp->cfg_entry.unique_flags1; target = temp->cfg_entry.unique_flags1;
else else
target = temp->cfg_entry.array_id & 0xFF; target = le16_to_cpu(temp->cfg_entry.array_id) & 0xFF;
if (target > PMCRAID_MAX_VSET_TARGETS) if (target > PMCRAID_MAX_VSET_TARGETS)
continue; continue;
@ -330,7 +330,7 @@ static void pmcraid_init_cmdblk(struct pmcraid_cmd *cmd, int index)
ioarcb->request_flags0 = 0; ioarcb->request_flags0 = 0;
ioarcb->request_flags1 = 0; ioarcb->request_flags1 = 0;
ioarcb->cmd_timeout = 0; ioarcb->cmd_timeout = 0;
ioarcb->ioarcb_bus_addr &= (~0x1FULL); ioarcb->ioarcb_bus_addr &= cpu_to_le64(~0x1FULL);
ioarcb->ioadl_bus_addr = 0; ioarcb->ioadl_bus_addr = 0;
ioarcb->ioadl_length = 0; ioarcb->ioadl_length = 0;
ioarcb->data_transfer_length = 0; ioarcb->data_transfer_length = 0;
@ -898,8 +898,7 @@ static void _pmcraid_fire_command(struct pmcraid_cmd *cmd)
/* driver writes lower 32-bit value of IOARCB address only */ /* driver writes lower 32-bit value of IOARCB address only */
mb(); mb();
iowrite32(le32_to_cpu(cmd->ioa_cb->ioarcb.ioarcb_bus_addr), iowrite32(le64_to_cpu(cmd->ioa_cb->ioarcb.ioarcb_bus_addr), pinstance->ioarrin);
pinstance->ioarrin);
} }
/** /**
@ -1051,7 +1050,7 @@ static void pmcraid_get_fwversion(struct pmcraid_cmd *cmd)
offsetof(struct pmcraid_ioarcb, offsetof(struct pmcraid_ioarcb,
add_data.u.ioadl[0])); add_data.u.ioadl[0]));
ioarcb->ioadl_length = cpu_to_le32(sizeof(struct pmcraid_ioadl_desc)); ioarcb->ioadl_length = cpu_to_le32(sizeof(struct pmcraid_ioadl_desc));
ioarcb->ioarcb_bus_addr &= ~(0x1FULL); ioarcb->ioarcb_bus_addr &= cpu_to_le64(~(0x1FULL));
ioarcb->request_flags0 |= NO_LINK_DESCS; ioarcb->request_flags0 |= NO_LINK_DESCS;
ioarcb->data_transfer_length = cpu_to_le32(data_size); ioarcb->data_transfer_length = cpu_to_le32(data_size);
@ -1077,7 +1076,7 @@ static void pmcraid_identify_hrrq(struct pmcraid_cmd *cmd)
struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb; struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb;
int index = cmd->hrrq_index; int index = cmd->hrrq_index;
__be64 hrrq_addr = cpu_to_be64(pinstance->hrrq_start_bus_addr[index]); __be64 hrrq_addr = cpu_to_be64(pinstance->hrrq_start_bus_addr[index]);
u32 hrrq_size = cpu_to_be32(sizeof(u32) * PMCRAID_MAX_CMD); __be32 hrrq_size = cpu_to_be32(sizeof(u32) * PMCRAID_MAX_CMD);
void (*done_function)(struct pmcraid_cmd *); void (*done_function)(struct pmcraid_cmd *);
pmcraid_reinit_cmdblk(cmd); pmcraid_reinit_cmdblk(cmd);
@ -1202,7 +1201,7 @@ static struct pmcraid_cmd *pmcraid_init_hcam
ioadl[0].flags |= IOADL_FLAGS_READ_LAST; ioadl[0].flags |= IOADL_FLAGS_READ_LAST;
ioadl[0].data_len = cpu_to_le32(rcb_size); ioadl[0].data_len = cpu_to_le32(rcb_size);
ioadl[0].address = cpu_to_le32(dma); ioadl[0].address = cpu_to_le64(dma);
cmd->cmd_done = cmd_done; cmd->cmd_done = cmd_done;
return cmd; return cmd;
@ -1237,7 +1236,13 @@ static void pmcraid_prepare_cancel_cmd(
) )
{ {
struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb; struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb;
__be64 ioarcb_addr = cmd_to_cancel->ioa_cb->ioarcb.ioarcb_bus_addr; __be64 ioarcb_addr;
/* IOARCB address of the command to be cancelled is given in
* cdb[2]..cdb[9] is Big-Endian format. Note that length bits in
* IOARCB address are not masked.
*/
ioarcb_addr = cpu_to_be64(le64_to_cpu(cmd_to_cancel->ioa_cb->ioarcb.ioarcb_bus_addr));
/* Get the resource handle to where the command to be aborted has been /* Get the resource handle to where the command to be aborted has been
* sent. * sent.
@ -1247,11 +1252,6 @@ static void pmcraid_prepare_cancel_cmd(
memset(ioarcb->cdb, 0, PMCRAID_MAX_CDB_LEN); memset(ioarcb->cdb, 0, PMCRAID_MAX_CDB_LEN);
ioarcb->cdb[0] = PMCRAID_ABORT_CMD; ioarcb->cdb[0] = PMCRAID_ABORT_CMD;
/* IOARCB address of the command to be cancelled is given in
* cdb[2]..cdb[9] is Big-Endian format. Note that length bits in
* IOARCB address are not masked.
*/
ioarcb_addr = cpu_to_be64(ioarcb_addr);
memcpy(&(ioarcb->cdb[2]), &ioarcb_addr, sizeof(ioarcb_addr)); memcpy(&(ioarcb->cdb[2]), &ioarcb_addr, sizeof(ioarcb_addr));
} }
@ -1493,7 +1493,7 @@ static int pmcraid_notify_ccn(struct pmcraid_instance *pinstance)
{ {
return pmcraid_notify_aen(pinstance, return pmcraid_notify_aen(pinstance,
pinstance->ccn.msg, pinstance->ccn.msg,
pinstance->ccn.hcam->data_len + le32_to_cpu(pinstance->ccn.hcam->data_len) +
sizeof(struct pmcraid_hcam_hdr)); sizeof(struct pmcraid_hcam_hdr));
} }
@ -1508,7 +1508,7 @@ static int pmcraid_notify_ldn(struct pmcraid_instance *pinstance)
{ {
return pmcraid_notify_aen(pinstance, return pmcraid_notify_aen(pinstance,
pinstance->ldn.msg, pinstance->ldn.msg,
pinstance->ldn.hcam->data_len + le32_to_cpu(pinstance->ldn.hcam->data_len) +
sizeof(struct pmcraid_hcam_hdr)); sizeof(struct pmcraid_hcam_hdr));
} }
@ -1556,10 +1556,10 @@ static void pmcraid_handle_config_change(struct pmcraid_instance *pinstance)
pmcraid_info("CCN(%x): %x timestamp: %llx type: %x lost: %x flags: %x \ pmcraid_info("CCN(%x): %x timestamp: %llx type: %x lost: %x flags: %x \
res: %x:%x:%x:%x\n", res: %x:%x:%x:%x\n",
pinstance->ccn.hcam->ilid, le32_to_cpu(pinstance->ccn.hcam->ilid),
pinstance->ccn.hcam->op_code, pinstance->ccn.hcam->op_code,
((pinstance->ccn.hcam->timestamp1) | (le32_to_cpu(pinstance->ccn.hcam->timestamp1) |
((pinstance->ccn.hcam->timestamp2 & 0xffffffffLL) << 32)), ((le32_to_cpu(pinstance->ccn.hcam->timestamp2) & 0xffffffffLL) << 32)),
pinstance->ccn.hcam->notification_type, pinstance->ccn.hcam->notification_type,
pinstance->ccn.hcam->notification_lost, pinstance->ccn.hcam->notification_lost,
pinstance->ccn.hcam->flags, pinstance->ccn.hcam->flags,
@ -1570,7 +1570,7 @@ static void pmcraid_handle_config_change(struct pmcraid_instance *pinstance)
RES_IS_VSET(*cfg_entry) ? RES_IS_VSET(*cfg_entry) ?
(fw_version <= PMCRAID_FW_VERSION_1 ? (fw_version <= PMCRAID_FW_VERSION_1 ?
cfg_entry->unique_flags1 : cfg_entry->unique_flags1 :
cfg_entry->array_id & 0xFF) : le16_to_cpu(cfg_entry->array_id) & 0xFF) :
RES_TARGET(cfg_entry->resource_address), RES_TARGET(cfg_entry->resource_address),
RES_LUN(cfg_entry->resource_address)); RES_LUN(cfg_entry->resource_address));
@ -1658,7 +1658,7 @@ static void pmcraid_handle_config_change(struct pmcraid_instance *pinstance)
if (fw_version <= PMCRAID_FW_VERSION_1) if (fw_version <= PMCRAID_FW_VERSION_1)
res->cfg_entry.unique_flags1 &= 0x7F; res->cfg_entry.unique_flags1 &= 0x7F;
else else
res->cfg_entry.array_id &= 0xFF; res->cfg_entry.array_id &= cpu_to_le16(0xFF);
res->change_detected = RES_CHANGE_DEL; res->change_detected = RES_CHANGE_DEL;
res->cfg_entry.resource_handle = res->cfg_entry.resource_handle =
PMCRAID_INVALID_RES_HANDLE; PMCRAID_INVALID_RES_HANDLE;
@ -1716,8 +1716,8 @@ static void pmcraid_ioasc_logger(u32 ioasc, struct pmcraid_cmd *cmd)
/* log the error string */ /* log the error string */
pmcraid_err("cmd [%x] for resource %x failed with %x(%s)\n", pmcraid_err("cmd [%x] for resource %x failed with %x(%s)\n",
cmd->ioa_cb->ioarcb.cdb[0], cmd->ioa_cb->ioarcb.cdb[0],
cmd->ioa_cb->ioarcb.resource_handle, le32_to_cpu(cmd->ioa_cb->ioarcb.resource_handle),
le32_to_cpu(ioasc), error_info->error_string); ioasc, error_info->error_string);
} }
/** /**
@ -2034,7 +2034,7 @@ static void pmcraid_fail_outstanding_cmds(struct pmcraid_instance *pinstance)
cmd->ioa_cb->ioasa.ioasc = cmd->ioa_cb->ioasa.ioasc =
cpu_to_le32(PMCRAID_IOASC_IOA_WAS_RESET); cpu_to_le32(PMCRAID_IOASC_IOA_WAS_RESET);
cmd->ioa_cb->ioasa.ilid = cmd->ioa_cb->ioasa.ilid =
cpu_to_be32(PMCRAID_DRIVER_ILID); cpu_to_le32(PMCRAID_DRIVER_ILID);
/* In case the command timer is still running */ /* In case the command timer is still running */
del_timer(&cmd->timer); del_timer(&cmd->timer);
@ -2526,7 +2526,7 @@ static void pmcraid_cancel_all(struct pmcraid_cmd *cmd, u32 sense)
ioarcb->ioadl_bus_addr = 0; ioarcb->ioadl_bus_addr = 0;
ioarcb->ioadl_length = 0; ioarcb->ioadl_length = 0;
ioarcb->data_transfer_length = 0; ioarcb->data_transfer_length = 0;
ioarcb->ioarcb_bus_addr &= (~0x1FULL); ioarcb->ioarcb_bus_addr &= cpu_to_le64((~0x1FULL));
/* writing to IOARRIN must be protected by host_lock, as mid-layer /* writing to IOARRIN must be protected by host_lock, as mid-layer
* schedule queuecommand while we are doing this * schedule queuecommand while we are doing this
@ -2689,8 +2689,8 @@ static int pmcraid_error_handler(struct pmcraid_cmd *cmd)
* mid-layer * mid-layer
*/ */
if (ioasa->auto_sense_length != 0) { if (ioasa->auto_sense_length != 0) {
short sense_len = ioasa->auto_sense_length; short sense_len = le16_to_cpu(ioasa->auto_sense_length);
int data_size = min_t(u16, le16_to_cpu(sense_len), int data_size = min_t(u16, sense_len,
SCSI_SENSE_BUFFERSIZE); SCSI_SENSE_BUFFERSIZE);
memcpy(scsi_cmd->sense_buffer, memcpy(scsi_cmd->sense_buffer,
@ -2912,7 +2912,7 @@ static struct pmcraid_cmd *pmcraid_abort_cmd(struct pmcraid_cmd *cmd)
pmcraid_info("aborting command CDB[0]= %x with index = %d\n", pmcraid_info("aborting command CDB[0]= %x with index = %d\n",
cmd->ioa_cb->ioarcb.cdb[0], cmd->ioa_cb->ioarcb.cdb[0],
cmd->ioa_cb->ioarcb.response_handle >> 2); le32_to_cpu(cmd->ioa_cb->ioarcb.response_handle) >> 2);
init_completion(&cancel_cmd->wait_for_completion); init_completion(&cancel_cmd->wait_for_completion);
cancel_cmd->completion_req = 1; cancel_cmd->completion_req = 1;
@ -3137,9 +3137,8 @@ pmcraid_init_ioadls(struct pmcraid_cmd *cmd, int sgcount)
int ioadl_count = 0; int ioadl_count = 0;
if (ioarcb->add_cmd_param_length) if (ioarcb->add_cmd_param_length)
ioadl_count = DIV_ROUND_UP(ioarcb->add_cmd_param_length, 16); ioadl_count = DIV_ROUND_UP(le16_to_cpu(ioarcb->add_cmd_param_length), 16);
ioarcb->ioadl_length = ioarcb->ioadl_length = cpu_to_le32(sizeof(struct pmcraid_ioadl_desc) * sgcount);
sizeof(struct pmcraid_ioadl_desc) * sgcount;
if ((sgcount + ioadl_count) > (ARRAY_SIZE(ioarcb->add_data.u.ioadl))) { if ((sgcount + ioadl_count) > (ARRAY_SIZE(ioarcb->add_data.u.ioadl))) {
/* external ioadls start at offset 0x80 from control_block /* external ioadls start at offset 0x80 from control_block
@ -3147,7 +3146,7 @@ pmcraid_init_ioadls(struct pmcraid_cmd *cmd, int sgcount)
* It is necessary to indicate to firmware that driver is * It is necessary to indicate to firmware that driver is
* using ioadls to be treated as external to IOARCB. * using ioadls to be treated as external to IOARCB.
*/ */
ioarcb->ioarcb_bus_addr &= ~(0x1FULL); ioarcb->ioarcb_bus_addr &= cpu_to_le64(~(0x1FULL));
ioarcb->ioadl_bus_addr = ioarcb->ioadl_bus_addr =
cpu_to_le64((cmd->ioa_cb_bus_addr) + cpu_to_le64((cmd->ioa_cb_bus_addr) +
offsetof(struct pmcraid_ioarcb, offsetof(struct pmcraid_ioarcb,
@ -3161,7 +3160,7 @@ pmcraid_init_ioadls(struct pmcraid_cmd *cmd, int sgcount)
ioadl = &ioarcb->add_data.u.ioadl[ioadl_count]; ioadl = &ioarcb->add_data.u.ioadl[ioadl_count];
ioarcb->ioarcb_bus_addr |= ioarcb->ioarcb_bus_addr |=
DIV_ROUND_CLOSEST(sgcount + ioadl_count, 8); cpu_to_le64(DIV_ROUND_CLOSEST(sgcount + ioadl_count, 8));
} }
return ioadl; return ioadl;
@ -3487,7 +3486,7 @@ static int pmcraid_queuecommand_lck(
RES_IS_VSET(res->cfg_entry) ? RES_IS_VSET(res->cfg_entry) ?
(fw_version <= PMCRAID_FW_VERSION_1 ? (fw_version <= PMCRAID_FW_VERSION_1 ?
res->cfg_entry.unique_flags1 : res->cfg_entry.unique_flags1 :
res->cfg_entry.array_id & 0xFF) : le16_to_cpu(res->cfg_entry.array_id) & 0xFF) :
RES_TARGET(res->cfg_entry.resource_address), RES_TARGET(res->cfg_entry.resource_address),
RES_LUN(res->cfg_entry.resource_address)); RES_LUN(res->cfg_entry.resource_address));
@ -3703,7 +3702,7 @@ static long pmcraid_ioctl_passthrough(
goto out_free_buffer; goto out_free_buffer;
} }
request_size = buffer->ioarcb.data_transfer_length; request_size = le32_to_cpu(buffer->ioarcb.data_transfer_length);
if (buffer->ioarcb.request_flags0 & TRANSFER_DIR_WRITE) { if (buffer->ioarcb.request_flags0 & TRANSFER_DIR_WRITE) {
access = VERIFY_READ; access = VERIFY_READ;
@ -3726,7 +3725,8 @@ static long pmcraid_ioctl_passthrough(
} }
/* check if we have any additional command parameters */ /* check if we have any additional command parameters */
if (buffer->ioarcb.add_cmd_param_length > PMCRAID_ADD_CMD_PARAM_LEN) { if (le16_to_cpu(buffer->ioarcb.add_cmd_param_length)
> PMCRAID_ADD_CMD_PARAM_LEN) {
rc = -EINVAL; rc = -EINVAL;
goto out_free_buffer; goto out_free_buffer;
} }
@ -3758,7 +3758,7 @@ static long pmcraid_ioctl_passthrough(
buffer->ioarcb.add_cmd_param_offset; buffer->ioarcb.add_cmd_param_offset;
memcpy(ioarcb->add_data.u.add_cmd_params, memcpy(ioarcb->add_data.u.add_cmd_params,
buffer->ioarcb.add_data.u.add_cmd_params, buffer->ioarcb.add_data.u.add_cmd_params,
buffer->ioarcb.add_cmd_param_length); le16_to_cpu(buffer->ioarcb.add_cmd_param_length));
} }
/* set hrrq number where the IOA should respond to. Note that all cmds /* set hrrq number where the IOA should respond to. Note that all cmds
@ -3828,10 +3828,10 @@ static long pmcraid_ioctl_passthrough(
wait_for_completion(&cmd->wait_for_completion); wait_for_completion(&cmd->wait_for_completion);
} else if (!wait_for_completion_timeout( } else if (!wait_for_completion_timeout(
&cmd->wait_for_completion, &cmd->wait_for_completion,
msecs_to_jiffies(buffer->ioarcb.cmd_timeout * 1000))) { msecs_to_jiffies(le16_to_cpu(buffer->ioarcb.cmd_timeout) * 1000))) {
pmcraid_info("aborting cmd %d (CDB[0] = %x) due to timeout\n", pmcraid_info("aborting cmd %d (CDB[0] = %x) due to timeout\n",
le32_to_cpu(cmd->ioa_cb->ioarcb.response_handle >> 2), le32_to_cpu(cmd->ioa_cb->ioarcb.response_handle) >> 2,
cmd->ioa_cb->ioarcb.cdb[0]); cmd->ioa_cb->ioarcb.cdb[0]);
spin_lock_irqsave(pinstance->host->host_lock, lock_flags); spin_lock_irqsave(pinstance->host->host_lock, lock_flags);
@ -3840,7 +3840,7 @@ static long pmcraid_ioctl_passthrough(
if (cancel_cmd) { if (cancel_cmd) {
wait_for_completion(&cancel_cmd->wait_for_completion); wait_for_completion(&cancel_cmd->wait_for_completion);
ioasc = cancel_cmd->ioa_cb->ioasa.ioasc; ioasc = le32_to_cpu(cancel_cmd->ioa_cb->ioasa.ioasc);
pmcraid_return_cmd(cancel_cmd); pmcraid_return_cmd(cancel_cmd);
/* if abort task couldn't find the command i.e it got /* if abort task couldn't find the command i.e it got
@ -4455,7 +4455,7 @@ static void pmcraid_worker_function(struct work_struct *workp)
if (fw_version <= PMCRAID_FW_VERSION_1) if (fw_version <= PMCRAID_FW_VERSION_1)
target = res->cfg_entry.unique_flags1; target = res->cfg_entry.unique_flags1;
else else
target = res->cfg_entry.array_id & 0xFF; target = le16_to_cpu(res->cfg_entry.array_id) & 0xFF;
lun = PMCRAID_VSET_LUN_ID; lun = PMCRAID_VSET_LUN_ID;
} else { } else {
bus = PMCRAID_PHYS_BUS_ID; bus = PMCRAID_PHYS_BUS_ID;
@ -4494,7 +4494,7 @@ static void pmcraid_tasklet_function(unsigned long instance)
unsigned long host_lock_flags; unsigned long host_lock_flags;
spinlock_t *lockp; /* hrrq buffer lock */ spinlock_t *lockp; /* hrrq buffer lock */
int id; int id;
__le32 resp; u32 resp;
hrrq_vector = (struct pmcraid_isr_param *)instance; hrrq_vector = (struct pmcraid_isr_param *)instance;
pinstance = hrrq_vector->drv_inst; pinstance = hrrq_vector->drv_inst;
@ -5534,8 +5534,7 @@ static void pmcraid_set_timestamp(struct pmcraid_cmd *cmd)
struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb; struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb;
__be32 time_stamp_len = cpu_to_be32(PMCRAID_TIMESTAMP_LEN); __be32 time_stamp_len = cpu_to_be32(PMCRAID_TIMESTAMP_LEN);
struct pmcraid_ioadl_desc *ioadl = ioarcb->add_data.u.ioadl; struct pmcraid_ioadl_desc *ioadl = ioarcb->add_data.u.ioadl;
u64 timestamp;
__le64 timestamp;
timestamp = ktime_get_real_seconds() * 1000; timestamp = ktime_get_real_seconds() * 1000;
@ -5557,7 +5556,7 @@ static void pmcraid_set_timestamp(struct pmcraid_cmd *cmd)
offsetof(struct pmcraid_ioarcb, offsetof(struct pmcraid_ioarcb,
add_data.u.ioadl[0])); add_data.u.ioadl[0]));
ioarcb->ioadl_length = cpu_to_le32(sizeof(struct pmcraid_ioadl_desc)); ioarcb->ioadl_length = cpu_to_le32(sizeof(struct pmcraid_ioadl_desc));
ioarcb->ioarcb_bus_addr &= ~(0x1FULL); ioarcb->ioarcb_bus_addr &= cpu_to_le64(~(0x1FULL));
ioarcb->request_flags0 |= NO_LINK_DESCS; ioarcb->request_flags0 |= NO_LINK_DESCS;
ioarcb->request_flags0 |= TRANSFER_DIR_WRITE; ioarcb->request_flags0 |= TRANSFER_DIR_WRITE;
@ -5616,7 +5615,7 @@ static void pmcraid_init_res_table(struct pmcraid_cmd *cmd)
list_for_each_entry_safe(res, temp, &pinstance->used_res_q, queue) list_for_each_entry_safe(res, temp, &pinstance->used_res_q, queue)
list_move_tail(&res->queue, &old_res); list_move_tail(&res->queue, &old_res);
for (i = 0; i < pinstance->cfg_table->num_entries; i++) { for (i = 0; i < le16_to_cpu(pinstance->cfg_table->num_entries); i++) {
if (be16_to_cpu(pinstance->inq_data->fw_version) <= if (be16_to_cpu(pinstance->inq_data->fw_version) <=
PMCRAID_FW_VERSION_1) PMCRAID_FW_VERSION_1)
cfgte = &pinstance->cfg_table->entries[i]; cfgte = &pinstance->cfg_table->entries[i];
@ -5671,7 +5670,7 @@ static void pmcraid_init_res_table(struct pmcraid_cmd *cmd)
res->cfg_entry.resource_type, res->cfg_entry.resource_type,
(fw_version <= PMCRAID_FW_VERSION_1 ? (fw_version <= PMCRAID_FW_VERSION_1 ?
res->cfg_entry.unique_flags1 : res->cfg_entry.unique_flags1 :
res->cfg_entry.array_id & 0xFF), le16_to_cpu(res->cfg_entry.array_id) & 0xFF),
le32_to_cpu(res->cfg_entry.resource_address)); le32_to_cpu(res->cfg_entry.resource_address));
} }
} }
@ -5709,7 +5708,7 @@ static void pmcraid_querycfg(struct pmcraid_cmd *cmd)
struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb; struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb;
struct pmcraid_ioadl_desc *ioadl = ioarcb->add_data.u.ioadl; struct pmcraid_ioadl_desc *ioadl = ioarcb->add_data.u.ioadl;
struct pmcraid_instance *pinstance = cmd->drv_inst; struct pmcraid_instance *pinstance = cmd->drv_inst;
int cfg_table_size = cpu_to_be32(sizeof(struct pmcraid_config_table)); __be32 cfg_table_size = cpu_to_be32(sizeof(struct pmcraid_config_table));
if (be16_to_cpu(pinstance->inq_data->fw_version) <= if (be16_to_cpu(pinstance->inq_data->fw_version) <=
PMCRAID_FW_VERSION_1) PMCRAID_FW_VERSION_1)
@ -5734,7 +5733,7 @@ static void pmcraid_querycfg(struct pmcraid_cmd *cmd)
offsetof(struct pmcraid_ioarcb, offsetof(struct pmcraid_ioarcb,
add_data.u.ioadl[0])); add_data.u.ioadl[0]));
ioarcb->ioadl_length = cpu_to_le32(sizeof(struct pmcraid_ioadl_desc)); ioarcb->ioadl_length = cpu_to_le32(sizeof(struct pmcraid_ioadl_desc));
ioarcb->ioarcb_bus_addr &= ~(0x1FULL); ioarcb->ioarcb_bus_addr &= cpu_to_le64(~0x1FULL);
ioarcb->request_flags0 |= NO_LINK_DESCS; ioarcb->request_flags0 |= NO_LINK_DESCS;
ioarcb->data_transfer_length = ioarcb->data_transfer_length =

View File

@ -554,7 +554,7 @@ struct pmcraid_inquiry_data {
__u8 add_page_len; __u8 add_page_len;
__u8 length; __u8 length;
__u8 reserved2; __u8 reserved2;
__le16 fw_version; __be16 fw_version;
__u8 reserved3[16]; __u8 reserved3[16];
}; };
@ -697,13 +697,13 @@ struct pmcraid_instance {
dma_addr_t hrrq_start_bus_addr[PMCRAID_NUM_MSIX_VECTORS]; dma_addr_t hrrq_start_bus_addr[PMCRAID_NUM_MSIX_VECTORS];
/* Pointer to 1st entry of HRRQ */ /* Pointer to 1st entry of HRRQ */
__be32 *hrrq_start[PMCRAID_NUM_MSIX_VECTORS]; __le32 *hrrq_start[PMCRAID_NUM_MSIX_VECTORS];
/* Pointer to last entry of HRRQ */ /* Pointer to last entry of HRRQ */
__be32 *hrrq_end[PMCRAID_NUM_MSIX_VECTORS]; __le32 *hrrq_end[PMCRAID_NUM_MSIX_VECTORS];
/* Pointer to current pointer of hrrq */ /* Pointer to current pointer of hrrq */
__be32 *hrrq_curr[PMCRAID_NUM_MSIX_VECTORS]; __le32 *hrrq_curr[PMCRAID_NUM_MSIX_VECTORS];
/* Lock for HRRQ access */ /* Lock for HRRQ access */
spinlock_t hrrq_lock[PMCRAID_NUM_MSIX_VECTORS]; spinlock_t hrrq_lock[PMCRAID_NUM_MSIX_VECTORS];