pcmraid: fix endianness problems
Subsystems (2)
James Bottomley
maintainerPATCH 1/1 pcmraid: fix endianness problems
There's a compile problem with pcmraid on BE platforms because the flags machine mailbox register is only 8 bits wide:
drivers/scsi/pmcraid.c: In function 'pmcraid_request_sense':drivers/scsi/pmcraid.c:2259: warning: large integer implicitly truncated to unsigned type drivers/scsi/pmcraid.c: In function 'pmcraid_build_ioadl':drivers/scsi/pmcraid.c:3025: warning: large integer implicitly truncated to unsigned type drivers/scsi/pmcraid.c: In function 'pmcraid_build_passthrough_ioadls':drivers/scsi/pmcraid.c:3395: warning: large integer implicitly truncated to unsigned type drivers/scsi/pmcraid.c: In function 'pmcraid_querycfg':drivers/scsi/pmcraid.c:5322: warning: large integer implicitly truncated to unsigned type
The fix, I think, is just to remove the spurious cpu_to_le32 wrappers
James
---
drivers/scsi/pmcraid.c +4 -4
@@ -2256,7 +2256,7 @@ static void pmcraid_request_sense(struct pmcraid_cmd *cmd) ioadl->address =cpu_to_le64 (cmd->sense_buffer_dma); ioadl->data_len =cpu_to_le32 (SCSI_SENSE_BUFFERSIZE ); - ioadl->flags =cpu_to_le32 (IOADL_FLAGS_LAST_DESC ); + ioadl->flags =IOADL_FLAGS_LAST_DESC ;/* request sense might be called as part of error response processing * which runs in tasklets context. It is possible that mid-layer might
@@ -3022,7 +3022,7 @@ static int pmcraid_build_ioadl( ioadl[i].flags =0 ; }/* setup last descriptor */ - ioadl[i -1 ].flags =cpu_to_le32 (IOADL_FLAGS_LAST_DESC ); + ioadl[i -1 ].flags =IOADL_FLAGS_LAST_DESC ;return 0 ; }
@@ -3392,7 +3392,7 @@ static int pmcraid_build_passthrough_ioadls( }/* setup the last descriptor */ - ioadl[i -1 ].flags =cpu_to_le32 (IOADL_FLAGS_LAST_DESC ); + ioadl[i -1 ].flags =IOADL_FLAGS_LAST_DESC ;return 0 ; }
@@ -5319,7 +5319,7 @@ static void pmcraid_querycfg(struct pmcraid_cmd *cmd)cpu_to_le32 (sizeof (struct pmcraid_config_table )); ioadl = &(ioarcb->add_data.u.ioadl[0 ]); - ioadl->flags =cpu_to_le32 (IOADL_FLAGS_LAST_DESC ); + ioadl->flags =IOADL_FLAGS_LAST_DESC ; ioadl->address =cpu_to_le64 (pinstance->cfg_table_bus_addr); ioadl->data_len =cpu_to_le32 (sizeof (struct pmcraid_config_table ));
James,
Yes. We can remove these spurious cpu_to_le32 wrappers for 8 bits. I had already submitted a patch dated: Sep 24 to address this. The subject of the mail/patch was:
PATCH 1/1] pmcraid: Fix ppc64 driver build for using cpu_to_le32 on U8 data type
In addition to below, I have made one more similar change as well -
pmcraid.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
drivers/scsi/pmcraid.c +1 -1
@@ -1076,7 +1076,7 @@ ioarcb->data_transfer_length =cpu_to_le32 (rcb_size); - ioadl[0 ].flags |=cpu_to_le32 (IOADL_FLAGS_READ_LAST ); + ioadl[0 ].flags |=IOADL_FLAGS_READ_LAST ; ioadl[0 ].data_len =cpu_to_le32 (rcb_size); ioadl[0 ].address =cpu_to_le32 (dma);
Quoted 61 lines · James Bottomley
There's a compile problem with pcmraid on BE platforms because the flags machine mailbox register is only 8 bits wide:
drivers/scsi/pmcraid.c: In function 'pmcraid_request_sense':drivers/scsi/pmcraid.c:2259: warning: large integer implicitly truncated to unsigned typedrivers/scsi/pmcraid.c: In function 'pmcraid_build_ioadl':drivers/scsi/pmcraid.c:3025: warning: large integer implicitly truncated to unsigned typedrivers/scsi/pmcraid.c: In function 'pmcraid_build_passthrough_ioadls':drivers/scsi/pmcraid.c:3395: warning: large integer implicitly truncated to unsigned typedrivers/scsi/pmcraid.c: In function 'pmcraid_querycfg':drivers/scsi/pmcraid.c:5322: warning: large integer implicitly truncated to unsigned typeThe fix, I think, is just to remove the spurious
cpu_to_le32wrappersJames
---
drivers/scsi/pmcraid.c +4
-4@@ -2256,7 +2256,7 @@ static void pmcraid_request_sense(struct pmcraid_cmd *cmd) ioadl->address =cpu_to_le64 (cmd->sense_buffer_dma); ioadl->data_len =cpu_to_le32 (SCSI_SENSE_BUFFERSIZE ); - ioadl->flags =cpu_to_le32 (IOADL_FLAGS_LAST_DESC ); + ioadl->flags =IOADL_FLAGS_LAST_DESC ;/* request sense might be called as part of error response processing * which runs in tasklets context. It is possible that mid-layer might @@ -3022,7 +3022,7 @@ static int pmcraid_build_ioadl( ioadl[i].flags =0 ; }/* setup last descriptor */ - ioadl[i -1 ].flags =cpu_to_le32 (IOADL_FLAGS_LAST_DESC ); + ioadl[i -1 ].flags =IOADL_FLAGS_LAST_DESC ;return 0 ; }@@ -3392,7 +3392,7 @@ static int pmcraid_build_passthrough_ioadls( }/* setup the last descriptor */ - ioadl[i -1 ].flags =cpu_to_le32 (IOADL_FLAGS_LAST_DESC ); + ioadl[i -1 ].flags =IOADL_FLAGS_LAST_DESC ;return 0 ; }@@ -5319,7 +5319,7 @@ static void pmcraid_querycfg(struct pmcraid_cmd *cmd)cpu_to_le32 (sizeof (struct pmcraid_config_table )); ioadl = &(ioarcb->add_data.u.ioadl[0 ]); - ioadl->flags =cpu_to_le32 (IOADL_FLAGS_LAST_DESC ); + ioadl->flags =IOADL_FLAGS_LAST_DESC ; ioadl->address =cpu_to_le64 (pinstance->cfg_table_bus_addr); ioadl->data_len =cpu_to_le32 (sizeof (struct pmcraid_config_table ));
Quoted 7 lines · Anil Ravindranath
James,
Yes. We can remove these spurious
cpu_to_le32wrappers for 8 bits. I had already submitted a patch dated: Sep 24 to address this. The subject of the mail/patch was:
PATCH 1/1] pmcraid: Fix ppc64 driver build for usingcpu_to_le32on U8 data type
Sorry ... found it now. I'll add it to the list for scsi-misc.
Thanks,
James