>-----Original Message----- >From: Christoph Hellwig [mailto:hch@xxxxxx] >Sent: Saturday, January 10, 2015 10:41 PM >To: Sumit.Saxena@xxxxxxxxxxxxx; kashyap.desai@xxxxxxxxxxxxx >Cc: martin.petersen@xxxxxxxxxx; linux-scsi@xxxxxxxxxxxxxxx >Subject: [PATCH 03/10] megaraid_sas: add endianess annotations > >This adds endianess annotations to all data structures, and a few variables >directly referencing them. > >Signed-off-by: Christoph Hellwig <hch@xxxxxx> >--- > drivers/scsi/megaraid/megaraid_sas.h | 296 ++++++++++++++------------- >- > drivers/scsi/megaraid/megaraid_sas_base.c | 2 +- > drivers/scsi/megaraid/megaraid_sas_fp.c | 10 +- > drivers/scsi/megaraid/megaraid_sas_fusion.c | 2 +- > drivers/scsi/megaraid/megaraid_sas_fusion.h | 276 +++++++++++++---------- >--- > 5 files changed, 293 insertions(+), 293 deletions(-) > >diff --git a/drivers/scsi/megaraid/megaraid_sas.h >b/drivers/scsi/megaraid/megaraid_sas.h >index ecc4321..81484f1 100644 >--- a/drivers/scsi/megaraid/megaraid_sas.h >+++ b/drivers/scsi/megaraid/megaraid_sas.h >@@ -408,7 +408,7 @@ enum MR_PD_STATE { > * defines the physical drive address structure > */ > struct MR_PD_ADDRESS { >- u16 deviceId; >+ __le16 deviceId; > u16 enclDeviceId; > > union { >@@ -433,8 +433,8 @@ struct MR_PD_ADDRESS { > * defines the physical drive list structure > */ > struct MR_PD_LIST { >- u32 size; >- u32 count; >+ __le32 size; >+ __le32 count; > struct MR_PD_ADDRESS addr[1]; > } __packed; > >@@ -451,28 +451,28 @@ union MR_LD_REF { > struct { > u8 targetId; > u8 reserved; >- u16 seqNum; >+ __le16 seqNum; > }; >- u32 ref; >+ __le32 ref; > } __packed; > > /* > * defines the logical drive list structure > */ > struct MR_LD_LIST { >- u32 ldCount; >- u32 reserved; >+ __le32 ldCount; >+ __le32 reserved; > struct { > union MR_LD_REF ref; > u8 state; > u8 reserved[3]; >- u64 size; >+ __le64 size; > } ldList[MAX_LOGICAL_DRIVES_EXT]; > } __packed; > > struct MR_LD_TARGETID_LIST { >- u32 size; >- u32 count; >+ __le32 size; >+ __le32 count; > u8 pad[3]; > u8 targetId[MAX_LOGICAL_DRIVES_EXT]; > }; >@@ -553,7 +553,7 @@ struct megasas_ctrl_prop { > } OnOffProperties; > u8 autoSnapVDSpace; > u8 viewSpace; >- u16 spinDownTime; >+ __le16 spinDownTime; > u8 reserved[24]; > } __packed; > >@@ -567,10 +567,10 @@ struct megasas_ctrl_info { > */ > struct { > >- u16 vendor_id; >- u16 device_id; >- u16 sub_vendor_id; >- u16 sub_device_id; >+ __le16 vendor_id; >+ __le16 device_id; >+ __le16 sub_vendor_id; >+ __le16 sub_device_id; > u8 reserved[24]; > > } __attribute__ ((packed)) pci; >@@ -611,8 +611,8 @@ struct megasas_ctrl_info { > /* > * List of components residing in flash. All str are null terminated > */ >- u32 image_check_word; >- u32 image_component_count; >+ __le32 image_check_word; >+ __le32 image_component_count; > > struct { > >@@ -629,7 +629,7 @@ struct megasas_ctrl_info { > * empty if a flash operation has not occurred. All stings are null > * terminated > */ >- u32 pending_image_component_count; >+ __le32 pending_image_component_count; > > struct { > >@@ -662,39 +662,39 @@ struct megasas_ctrl_info { > > } __attribute__ ((packed)) hw_present; > >- u32 current_fw_time; >+ __le32 current_fw_time; > > /* > * Maximum data transfer sizes > */ >- u16 max_concurrent_cmds; >- u16 max_sge_count; >- u32 max_request_size; >+ __le16 max_concurrent_cmds; >+ __le16 max_sge_count; >+ __le32 max_request_size; > > /* > * Logical and physical device counts > */ >- u16 ld_present_count; >- u16 ld_degraded_count; >- u16 ld_offline_count; >+ __le16 ld_present_count; >+ __le16 ld_degraded_count; >+ __le16 ld_offline_count; > >- u16 pd_present_count; >- u16 pd_disk_present_count; >- u16 pd_disk_pred_failure_count; >- u16 pd_disk_failed_count; >+ __le16 pd_present_count; >+ __le16 pd_disk_present_count; >+ __le16 pd_disk_pred_failure_count; >+ __le16 pd_disk_failed_count; > > /* > * Memory size information > */ >- u16 nvram_size; >- u16 memory_size; >- u16 flash_size; >+ __le16 nvram_size; >+ __le16 memory_size; >+ __le16 flash_size; > > /* > * Error counters > */ >- u16 mem_correctable_error_count; >- u16 mem_uncorrectable_error_count; >+ __le16 mem_correctable_error_count; >+ __le16 mem_uncorrectable_error_count; > > /* > * Cluster information >@@ -705,7 +705,7 @@ struct megasas_ctrl_info { > /* > * Additional max data transfer sizes > */ >- u16 max_strips_per_io; >+ __le16 max_strips_per_io; > > /* > * Controller capabilities structures >@@ -805,7 +805,7 @@ struct megasas_ctrl_info { > * deviceInterface.portAddr, and the rest shall be > * populated in deviceInterfacePortAddr2. > */ >- u64 deviceInterfacePortAddr2[8]; /*6a0h */ >+ __le64 deviceInterfacePortAddr2[8]; /*6a0h */ > u8 reserved3[128]; /*6e0h */ > > struct { /*760h */ >@@ -842,26 +842,26 @@ struct megasas_ctrl_info { > u16 reserved[6]; > } pdsForRaidLevels; > >- u16 maxPds; /*780h */ >- u16 maxDedHSPs; /*782h */ >- u16 maxGlobalHSPs; /*784h */ >- u16 ddfSize; /*786h */ >+ __le16 maxPds; /*780h */ >+ __le16 maxDedHSPs; /*782h */ >+ __le16 maxGlobalHSP; /*784h */ >+ __le16 ddfSize; /*786h */ > u8 maxLdsPerArray; /*788h */ > u8 partitionsInDDF; /*789h */ > u8 lockKeyBinding; /*78ah */ > u8 maxPITsPerLd; /*78bh */ > u8 maxViewsPerLd; /*78ch */ > u8 maxTargetId; /*78dh */ >- u16 maxBvlVdSize; /*78eh */ >+ __le16 maxBvlVdSize; /*78eh */ > >- u16 maxConfigurableSSCSize; /*790h */ >- u16 currentSSCsize; /*792h */ >+ __le16 maxConfigurableSSCSize; /*790h */ >+ __le16 currentSSCsize; /*792h */ > > char expanderFwVersion[12]; /*794h */ > >- u16 PFKTrialTimeRemaining; /*7A0h */ >+ __le16 PFKTrialTimeRemaining; /*7A0h */ > >- u16 cacheMemorySize; /*7A2h */ >+ __le16 cacheMemorySize; /*7A2h */ > > struct { /*7A4h */ > #if defined(__BIG_ENDIAN_BITFIELD) >@@ -931,7 +931,7 @@ struct megasas_ctrl_info { > u8 temperatureROC; /*7C9h */ > u8 temperatureCtrl; /*7CAh */ > u8 reserved4; /*7CBh */ >- u16 maxConfigurablePds; /*7CCh */ >+ __le16 maxConfigurablePds; /*7CCh */ > > > u8 reserved5[2]; /*0x7CDh */ >@@ -1172,22 +1172,22 @@ struct megasas_register_set { > > struct megasas_sge32 { > >- u32 phys_addr; >- u32 length; >+ __le32 phys_addr; >+ __le32 length; > > } __attribute__ ((packed)); > > struct megasas_sge64 { > >- u64 phys_addr; >- u32 length; >+ __le64 phys_addr; >+ __le32 length; > > } __attribute__ ((packed)); > > struct megasas_sge_skinny { >- u64 phys_addr; >- u32 length; >- u32 flag; >+ __le64 phys_addr; >+ __le32 length; >+ __le32 flag; > } __packed; > > union megasas_sgl { >@@ -1210,12 +1210,12 @@ struct megasas_header { > u8 cdb_len; /*06h */ > u8 sge_count; /*07h */ > >- u32 context; /*08h */ >- u32 pad_0; /*0Ch */ >+ __le32 context; /*08h */ >+ __le32 pad_0; /*0Ch */ > >- u16 flags; /*10h */ >- u16 timeout; /*12h */ >- u32 data_xferlen; /*14h */ >+ __le16 flags; /*10h */ >+ __le16 timeout; /*12h */ >+ __le32 data_xferlen; /*14h */ > > } __attribute__ ((packed)); > >@@ -1248,7 +1248,7 @@ typedef union _MFI_CAPABILITIES { > u32 reserved:25; > #endif > } mfi_capabilities; >- u32 reg; >+ __le32 reg; > } MFI_CAPABILITIES; > > struct megasas_init_frame { >@@ -1260,33 +1260,33 @@ struct megasas_init_frame { > u8 reserved_1; /*03h */ > MFI_CAPABILITIES driver_operations; /*04h*/ > >- u32 context; /*08h */ >- u32 pad_0; /*0Ch */ >+ __le32 context; /*08h */ >+ __le32 pad_0; /*0Ch */ > >- u16 flags; /*10h */ >- u16 reserved_3; /*12h */ >- u32 data_xfer_len; /*14h */ >+ __le16 flags; /*10h */ >+ __le16 reserved_3; /*12h */ >+ __le32 data_xfer_len; /*14h */ > >- u32 queue_info_new_phys_addr_lo; /*18h */ >- u32 queue_info_new_phys_addr_hi; /*1Ch */ >- u32 queue_info_old_phys_addr_lo; /*20h */ >- u32 queue_info_old_phys_addr_hi; /*24h */ >+ __le32 queue_info_new_phys_addr_lo; /*18h */ >+ __le32 queue_info_new_phys_addr_hi; /*1Ch */ >+ __le32 queue_info_old_phys_addr_lo; /*20h */ >+ __le32 queue_info_old_phys_addr_hi; /*24h */ > >- u32 reserved_4[6]; /*28h */ >+ __le32 reserved_4[6]; /*28h */ > > } __attribute__ ((packed)); > > struct megasas_init_queue_info { > >- u32 init_flags; /*00h */ >- u32 reply_queue_entries; /*04h */ >+ __le32 init_flags; /*00h */ >+ __le32 reply_queue_entries; /*04h */ > >- u32 reply_queue_start_phys_addr_lo; /*08h */ >- u32 reply_queue_start_phys_addr_hi; /*0Ch */ >- u32 producer_index_phys_addr_lo; /*10h */ >- u32 producer_index_phys_addr_hi; /*14h */ >- u32 consumer_index_phys_addr_lo; /*18h */ >- u32 consumer_index_phys_addr_hi; /*1Ch */ >+ __le32 reply_queue_start_phys_addr_lo; /*08h */ >+ __le32 reply_queue_start_phys_addr_hi; /*0Ch */ >+ __le32 producer_index_phys_addr_lo; /*10h */ >+ __le32 producer_index_phys_addr_hi; /*14h */ >+ __le32 consumer_index_phys_addr_lo; /*18h */ >+ __le32 consumer_index_phys_addr_hi; /*1Ch */ > > } __attribute__ ((packed)); > >@@ -1302,18 +1302,18 @@ struct megasas_io_frame { > u8 reserved_0; /*06h */ > u8 sge_count; /*07h */ > >- u32 context; /*08h */ >- u32 pad_0; /*0Ch */ >+ __le32 context; /*08h */ >+ __le32 pad_0; /*0Ch */ > >- u16 flags; /*10h */ >- u16 timeout; /*12h */ >- u32 lba_count; /*14h */ >+ __le16 flags; /*10h */ >+ __le16 timeout; /*12h */ >+ __le32 lba_count; /*14h */ > >- u32 sense_buf_phys_addr_lo; /*18h */ >- u32 sense_buf_phys_addr_hi; /*1Ch */ >+ __le32 sense_buf_phys_addr_lo; /*18h */ >+ __le32 sense_buf_phys_addr_hi; /*1Ch */ > >- u32 start_lba_lo; /*20h */ >- u32 start_lba_hi; /*24h */ >+ __le32 start_lba_lo; /*20h */ >+ __le32 start_lba_hi; /*24h */ > > union megasas_sgl sgl; /*28h */ > >@@ -1331,15 +1331,15 @@ struct megasas_pthru_frame { > u8 cdb_len; /*06h */ > u8 sge_count; /*07h */ > >- u32 context; /*08h */ >- u32 pad_0; /*0Ch */ >+ __le32 context; /*08h */ >+ __le32 pad_0; /*0Ch */ > >- u16 flags; /*10h */ >- u16 timeout; /*12h */ >- u32 data_xfer_len; /*14h */ >+ __le16 flags; /*10h */ >+ __le16 timeout; /*12h */ >+ __le32 data_xfer_len; /*14h */ > >- u32 sense_buf_phys_addr_lo; /*18h */ >- u32 sense_buf_phys_addr_hi; /*1Ch */ >+ __le32 sense_buf_phys_addr_lo; /*18h */ >+ __le32 sense_buf_phys_addr_hi; /*1Ch */ > > u8 cdb[16]; /*20h */ > union megasas_sgl sgl; /*30h */ >@@ -1354,19 +1354,19 @@ struct megasas_dcmd_frame { > u8 reserved_1[4]; /*03h */ > u8 sge_count; /*07h */ > >- u32 context; /*08h */ >- u32 pad_0; /*0Ch */ >+ __le32 context; /*08h */ >+ __le32 pad_0; /*0Ch */ > >- u16 flags; /*10h */ >- u16 timeout; /*12h */ >+ __le16 flags; /*10h */ >+ __le16 timeout; /*12h */ > >- u32 data_xfer_len; /*14h */ >- u32 opcode; /*18h */ >+ __le32 data_xfer_len; /*14h */ >+ __le32 opcode; /*18h */ > > union { /*1Ch */ > u8 b[12]; >- u16 s[6]; >- u32 w[3]; >+ __le16 s[6]; >+ __le32 w[3]; > } mbox; > > union megasas_sgl sgl; /*28h */ >@@ -1380,22 +1380,22 @@ struct megasas_abort_frame { > u8 cmd_status; /*02h */ > > u8 reserved_1; /*03h */ >- u32 reserved_2; /*04h */ >+ __le32 reserved_2; /*04h */ > >- u32 context; /*08h */ >- u32 pad_0; /*0Ch */ >+ __le32 context; /*08h */ >+ __le32 pad_0; /*0Ch */ > >- u16 flags; /*10h */ >- u16 reserved_3; /*12h */ >- u32 reserved_4; /*14h */ >+ __le16 flags; /*10h */ >+ __le16 reserved_3; /*12h */ >+ __le32 reserved_4; /*14h */ > >- u32 abort_context; /*18h */ >- u32 pad_1; /*1Ch */ >+ __le32 abort_context; /*18h */ >+ __le32 pad_1; /*1Ch */ > >- u32 abort_mfi_phys_addr_lo; /*20h */ >- u32 abort_mfi_phys_addr_hi; /*24h */ >+ __le32 abort_mfi_phys_addr_lo; /*20h */ >+ __le32 abort_mfi_phys_addr_hi; /*24h */ > >- u32 reserved_5[6]; /*28h */ >+ __le32 reserved_5[6]; /*28h */ > > } __attribute__ ((packed)); > >@@ -1409,14 +1409,14 @@ struct megasas_smp_frame { > u8 reserved_2[3]; /*04h */ > u8 sge_count; /*07h */ > >- u32 context; /*08h */ >- u32 pad_0; /*0Ch */ >+ __le32 context; /*08h */ >+ __le32 pad_0; /*0Ch */ > >- u16 flags; /*10h */ >- u16 timeout; /*12h */ >+ __le16 flags; /*10h */ >+ __le16 timeout; /*12h */ > >- u32 data_xfer_len; /*14h */ >- u64 sas_addr; /*18h */ >+ __le32 data_xfer_len; /*14h */ >+ __le64 sas_addr; /*18h */ > > union { > struct megasas_sge32 sge32[2]; /* [0]: resp [1]: req */ >@@ -1436,16 +1436,16 @@ struct megasas_stp_frame { > u8 reserved_3[2]; /*05h */ > u8 sge_count; /*07h */ > >- u32 context; /*08h */ >- u32 pad_0; /*0Ch */ >+ __le32 context; /*08h */ >+ __le32 pad_0; /*0Ch */ > >- u16 flags; /*10h */ >- u16 timeout; /*12h */ >+ __le16 flags; /*10h */ >+ __le16 timeout; /*12h */ > >- u32 data_xfer_len; /*14h */ >+ __le32 data_xfer_len; /*14h */ > >- u16 fis[10]; /*18h */ >- u32 stp_flags; >+ __le16 fis[10]; /*18h */ >+ __le32 stp_flags; > > union { > struct megasas_sge32 sge32[2]; /* [0]: resp [1]: data */ >@@ -1489,18 +1489,18 @@ union megasas_evt_class_locale { } __attribute__ >((packed)); > > struct megasas_evt_log_info { >- u32 newest_seq_num; >- u32 oldest_seq_num; >- u32 clear_seq_num; >- u32 shutdown_seq_num; >- u32 boot_seq_num; >+ __le32 newest_seq_num; >+ __le32 oldest_seq_num; >+ __le32 clear_seq_num; >+ __le32 shutdown_seq_num; >+ __le32 boot_seq_num; > > } __attribute__ ((packed)); > > struct megasas_progress { > >- u16 progress; >- u16 elapsed_seconds; >+ __le16 progress; >+ __le16 elapsed_seconds; > > } __attribute__ ((packed)); > >@@ -1521,9 +1521,9 @@ struct megasas_evtarg_pd { > > struct megasas_evt_detail { > >- u32 seq_num; >- u32 time_stamp; >- u32 code; >+ __le32 seq_num; >+ __le32 time_stamp; >+ __le32 code; > union megasas_evt_class_locale cl; > u8 arg_type; > u8 reserved1[15]; >@@ -1542,18 +1542,18 @@ struct megasas_evt_detail { > > struct { > struct megasas_evtarg_ld ld; >- u64 count; >+ __le64 count; > } __attribute__ ((packed)) ld_count; > > struct { >- u64 lba; >+ __le64 lba; > struct megasas_evtarg_ld ld; > } __attribute__ ((packed)) ld_lba; > > struct { > struct megasas_evtarg_ld ld; >- u32 prevOwner; >- u32 newOwner; >+ __le32 prevOwner; >+ __le32 newOwner; > } __attribute__ ((packed)) ld_owner; > > struct { >@@ -1610,7 +1610,7 @@ struct megasas_evt_detail { > > struct { > u16 vendorId; >- u16 deviceId; >+ __le16 deviceId; > u16 subVendorId; > u16 subDeviceId; > } __attribute__ ((packed)) pci; >@@ -1630,9 +1630,9 @@ struct megasas_evt_detail { > } __attribute__ ((packed)) ecc; > > u8 b[96]; >- u16 s[48]; >- u32 w[24]; >- u64 d[12]; >+ __le16 s[48]; >+ __le32 w[24]; >+ __le64 d[12]; > } args; > > char description[128]; >@@ -1651,9 +1651,9 @@ struct megasas_irq_context { > > struct megasas_instance { > >- u32 *producer; >+ __le32 *producer; > dma_addr_t producer_h; >- u32 *consumer; >+ __le32 *consumer; > dma_addr_t consumer_h; > struct MR_LD_VF_AFFILIATION *vf_affiliation; > dma_addr_t vf_affiliation_h; >@@ -1662,7 +1662,7 @@ struct megasas_instance { > struct MR_CTRL_HB_HOST_MEM *hb_host_mem; > dma_addr_t hb_host_mem_h; > >- u32 *reply_queue; >+ __le32 *reply_queue; > dma_addr_t reply_queue_h; > > u32 *crash_dump_buf; >@@ -1963,10 +1963,10 @@ u8 MR_TargetIdToLdGet(u32 ldTgtId, struct >MR_DRV_RAID_MAP_ALL *map); struct MR_LD_RAID *MR_LdRaidGet(u32 >ld, struct MR_DRV_RAID_MAP_ALL *map); > u16 MR_ArPdGet(u32 ar, u32 arm, struct MR_DRV_RAID_MAP_ALL *map); > u16 MR_LdSpanArrayGet(u32 ld, u32 span, struct MR_DRV_RAID_MAP_ALL >*map); >-u16 MR_PdDevHandleGet(u32 pd, struct MR_DRV_RAID_MAP_ALL *map); >+__le16 MR_PdDevHandleGet(u32 pd, struct MR_DRV_RAID_MAP_ALL >*map); > u16 MR_GetLDTgtId(u32 ld, struct MR_DRV_RAID_MAP_ALL *map); > >-u16 get_updated_dev_handle(struct megasas_instance *instance, >+__le16 get_updated_dev_handle(struct megasas_instance *instance, > struct LD_LOAD_BALANCE_INFO *lbInfo, struct IO_REQUEST_INFO >*in_info); void mr_update_load_balance_params(struct >MR_DRV_RAID_MAP_ALL *map, > struct LD_LOAD_BALANCE_INFO *lbInfo); >diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c >b/drivers/scsi/megaraid/megaraid_sas_base.c >index 875db92..cb7d0c4 100644 >--- a/drivers/scsi/megaraid/megaraid_sas_base.c >+++ b/drivers/scsi/megaraid/megaraid_sas_base.c >@@ -4262,7 +4262,7 @@ int megasas_set_crash_dump_params(struct >megasas_instance *instance, static int megasas_issue_init_mfi(struct >megasas_instance *instance) { >- u32 context; >+ __le32 context; > > struct megasas_cmd *cmd; > >diff --git a/drivers/scsi/megaraid/megaraid_sas_fp.c >b/drivers/scsi/megaraid/megaraid_sas_fp.c >index 4f72287..e9138a2 100644 >--- a/drivers/scsi/megaraid/megaraid_sas_fp.c >+++ b/drivers/scsi/megaraid/megaraid_sas_fp.c >@@ -142,7 +142,7 @@ u16 MR_LdSpanArrayGet(u32 ld, u32 span, struct >MR_DRV_RAID_MAP_ALL *map) > return le16_to_cpu(map- >>raidMap.ldSpanMap[ld].spanBlock[span].span.arrayRef); > } > >-u16 MR_PdDevHandleGet(u32 pd, struct MR_DRV_RAID_MAP_ALL *map) >+__le16 MR_PdDevHandleGet(u32 pd, struct MR_DRV_RAID_MAP_ALL >*map) > { > return map->raidMap.devHndlInfo[pd].curDevHdl; > } >@@ -735,7 +735,7 @@ static u8 mr_spanset_get_phy_params(struct >megasas_instance *instance, u32 ld, > u8 retval = TRUE; > u8 do_invader = 0; > u64 *pdBlock = &io_info->pdBlock; >- u16 *pDevHandle = &io_info->devHandle; >+ __le16 *pDevHandle = &io_info->devHandle; > u32 logArm, rowMod, armQ, arm; > > if ((instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER || @@ - >817,7 +817,7 @@ u8 MR_GetPhyParams(struct megasas_instance *instance, >u32 ld, u64 stripRow, > u8 retval = TRUE; > u8 do_invader = 0; > u64 *pdBlock = &io_info->pdBlock; >- u16 *pDevHandle = &io_info->devHandle; >+ __le16 *pDevHandle = &io_info->devHandle; > > if ((instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER || > instance->pdev->device == PCI_DEVICE_ID_LSI_FURY)) @@ - >1341,11 +1341,11 @@ u8 megasas_get_best_arm_pd(struct >megasas_instance *instance, > return io_info->pd_after_lb; > } > >-u16 get_updated_dev_handle(struct megasas_instance *instance, >+__le16 get_updated_dev_handle(struct megasas_instance *instance, > struct LD_LOAD_BALANCE_INFO *lbInfo, struct IO_REQUEST_INFO >*io_info) { > u8 arm_pd; >- u16 devHandle; >+ __le16 devHandle; > struct fusion_context *fusion; > struct MR_DRV_RAID_MAP_ALL *drv_map; > >diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c >b/drivers/scsi/megaraid/megaraid_sas_fusion.c >index 675b5e7..983635f 100644 >--- a/drivers/scsi/megaraid/megaraid_sas_fusion.c >+++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c >@@ -1670,7 +1670,7 @@ megasas_build_dcdb_fusion(struct >megasas_instance *instance, > struct MR_DRV_RAID_MAP_ALL *local_map_ptr; > struct fusion_context *fusion = instance->ctrl_context; > u8 span, physArm; >- u16 devHandle; >+ __le16 devHandle; > u32 ld, arRef, pd; > struct MR_LD_RAID *raid; > struct RAID_CONTEXT *pRAID_Context; >diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.h >b/drivers/scsi/megaraid/megaraid_sas_fusion.h >index 56e6db2..d62285e 100644 >--- a/drivers/scsi/megaraid/megaraid_sas_fusion.h >+++ b/drivers/scsi/megaraid/megaraid_sas_fusion.h >@@ -104,18 +104,18 @@ struct RAID_CONTEXT { > u8 nseg:4; > #endif > u8 resvd0; >- u16 timeoutValue; >+ __le16 timeoutValue; > u8 regLockFlags; > u8 resvd1; >- u16 VirtualDiskTgtId; >- u64 regLockRowLBA; >- u32 regLockLength; >- u16 nextLMId; >+ __le16 VirtualDiskTgtId; >+ __le64 regLockRowLBA; >+ __le32 regLockLength; >+ __le16 nextLMId; > u8 exStatus; > u8 status; > u8 RAIDFlags; > u8 numSGE; >- u16 configSeqNum; >+ __le16 configSeqNum; > u8 spanArm; > u8 resvd2[3]; > }; >@@ -182,61 +182,61 @@ enum REGION_TYPE { > #define MPI2_WRSEQ_6TH_KEY_VALUE (0xD) > > struct MPI25_IEEE_SGE_CHAIN64 { >- u64 Address; >- u32 Length; >- u16 Reserved1; >+ __le64 Address; >+ __le32 Length; >+ __le16 Reserved1; > u8 NextChainOffset; > u8 Flags; > }; > > struct MPI2_SGE_SIMPLE_UNION { >- u32 FlagsLength; >+ __le32 FlagsLength; > union { >- u32 Address32; >- u64 Address64; >+ __le32 Address32; >+ __le64 Address64; > } u; > }; > > struct MPI2_SCSI_IO_CDB_EEDP32 { > u8 CDB[20]; /* 0x00 */ >- u32 PrimaryReferenceTag; /* 0x14 */ >- u16 PrimaryApplicationTag; /* 0x18 */ >- u16 PrimaryApplicationTagMask; /* 0x1A */ >- u32 TransferLength; /* 0x1C */ >+ __be32 PrimaryReferenceTag; /* 0x14 */ >+ __be16 PrimaryApplicationTag; /* 0x18 */ >+ __be16 PrimaryApplicationTagMask; /* 0x1A */ >+ __le32 TransferLength; /* 0x1C */ > }; > > struct MPI2_SGE_CHAIN_UNION { >- u16 Length; >+ __le16 Length; > u8 NextChainOffset; > u8 Flags; > union { >- u32 Address32; >- u64 Address64; >+ __le32 Address32; >+ __le64 Address64; > } u; > }; > > struct MPI2_IEEE_SGE_SIMPLE32 { >- u32 Address; >- u32 FlagsLength; >+ __le32 Address; >+ __le32 FlagsLength; > }; > > struct MPI2_IEEE_SGE_CHAIN32 { >- u32 Address; >- u32 FlagsLength; >+ __le32 Address; >+ __le32 FlagsLength; > }; > > struct MPI2_IEEE_SGE_SIMPLE64 { >- u64 Address; >- u32 Length; >- u16 Reserved1; >+ __le64 Address; >+ __le32 Length; >+ __le16 Reserved1; > u8 Reserved2; > u8 Flags; > }; > > struct MPI2_IEEE_SGE_CHAIN64 { >- u64 Address; >- u32 Length; >- u16 Reserved1; >+ __le64 Address; >+ __le32 Length; >+ __le16 Reserved1; > u8 Reserved2; > u8 Flags; > }; >@@ -269,34 +269,34 @@ union MPI2_SCSI_IO_CDB_UNION { > * Total SGE count will be one less than _MPI2_SCSI_IO_REQUEST > */ > struct MPI2_RAID_SCSI_IO_REQUEST { >- u16 DevHandle; /* 0x00 */ >+ __le16 DevHandle; /* 0x00 */ > u8 ChainOffset; /* 0x02 */ > u8 Function; /* 0x03 */ >- u16 Reserved1; /* 0x04 */ >+ __le16 Reserved1; /* 0x04 */ > u8 Reserved2; /* 0x06 */ > u8 MsgFlags; /* 0x07 */ > u8 VP_ID; /* 0x08 */ > u8 VF_ID; /* 0x09 */ >- u16 Reserved3; /* 0x0A */ >- u32 SenseBufferLowAddress; /* 0x0C */ >- u16 SGLFlags; /* 0x10 */ >+ __le16 Reserved3; /* 0x0A */ >+ __le32 SenseBufferLowAddress; /* 0x0C */ >+ __le16 SGLFlags; /* 0x10 */ > u8 SenseBufferLength; /* 0x12 */ > u8 Reserved4; /* 0x13 */ > u8 SGLOffset0; /* 0x14 */ > u8 SGLOffset1; /* 0x15 */ > u8 SGLOffset2; /* 0x16 */ > u8 SGLOffset3; /* 0x17 */ >- u32 SkipCount; /* 0x18 */ >- u32 DataLength; /* 0x1C */ >- u32 BidirectionalDataLength; /* 0x20 */ >- u16 IoFlags; /* 0x24 */ >- u16 EEDPFlags; /* 0x26 */ >- u32 EEDPBlockSize; /* 0x28 */ >- u32 SecondaryReferenceTag; /* 0x2C */ >- u16 SecondaryApplicationTag; /* 0x30 */ >- u16 ApplicationTagTranslationMask; /* 0x32 */ >+ __le32 SkipCount; /* 0x18 */ >+ __le32 DataLength; /* 0x1C */ >+ __le32 BidirectionalDataLength; /* 0x20 */ >+ __le16 IoFlags; /* 0x24 */ >+ __le16 EEDPFlags; /* 0x26 */ >+ __le32 EEDPBlockSize; /* 0x28 */ >+ __le32 SecondaryReferenceTag; /* 0x2C */ >+ __le16 SecondaryApplicationTag; /* 0x30 */ >+ __le16 ApplicationTagTranslationMask; /* 0x32 */ > u8 LUN[8]; /* 0x34 */ >- u32 Control; /* 0x3C */ >+ __le32 Control; /* 0x3C */ > union MPI2_SCSI_IO_CDB_UNION CDB; /* >0x40 */ > struct RAID_CONTEXT RaidContext; /* 0x60 */ > union MPI2_SGE_IO_UNION SGL; /* 0x80 */ >@@ -315,45 +315,45 @@ struct >MEGASAS_RAID_MFA_IO_REQUEST_DESCRIPTOR { struct >MPI2_DEFAULT_REQUEST_DESCRIPTOR { > u8 RequestFlags; /* 0x00 */ > u8 MSIxIndex; /* 0x01 */ >- u16 SMID; /* 0x02 */ >- u16 LMID; /* 0x04 */ >- u16 DescriptorTypeDependent; /* 0x06 */ >+ __le16 SMID; /* 0x02 */ >+ __le16 LMID; /* 0x04 */ >+ __le16 DescriptorTypeDependent; /* 0x06 */ > }; > > /* High Priority Request Descriptor */ > struct MPI2_HIGH_PRIORITY_REQUEST_DESCRIPTOR { > u8 RequestFlags; /* 0x00 */ > u8 MSIxIndex; /* 0x01 */ >- u16 SMID; /* 0x02 */ >- u16 LMID; /* 0x04 */ >- u16 Reserved1; /* 0x06 */ >+ __le16 SMID; /* 0x02 */ >+ __le16 LMID; /* 0x04 */ >+ __le16 Reserved1; /* 0x06 */ > }; > > /* SCSI IO Request Descriptor */ > struct MPI2_SCSI_IO_REQUEST_DESCRIPTOR { > u8 RequestFlags; /* 0x00 */ > u8 MSIxIndex; /* 0x01 */ >- u16 SMID; /* 0x02 */ >- u16 LMID; /* 0x04 */ >- u16 DevHandle; /* 0x06 */ >+ __le16 SMID; /* 0x02 */ >+ __le16 LMID; /* 0x04 */ >+ __le16 DevHandle; /* 0x06 */ > }; > > /* SCSI Target Request Descriptor */ > struct MPI2_SCSI_TARGET_REQUEST_DESCRIPTOR { > u8 RequestFlags; /* 0x00 */ > u8 MSIxIndex; /* 0x01 */ >- u16 SMID; /* 0x02 */ >- u16 LMID; /* 0x04 */ >- u16 IoIndex; /* 0x06 */ >+ __le16 SMID; /* 0x02 */ >+ __le16 LMID; /* 0x04 */ >+ __le16 IoIndex; /* 0x06 */ > }; > > /* RAID Accelerator Request Descriptor */ struct >MPI2_RAID_ACCEL_REQUEST_DESCRIPTOR { > u8 RequestFlags; /* 0x00 */ > u8 MSIxIndex; /* 0x01 */ >- u16 SMID; /* 0x02 */ >- u16 LMID; /* 0x04 */ >- u16 Reserved; /* 0x06 */ >+ __le16 SMID; /* 0x02 */ >+ __le16 LMID; /* 0x04 */ >+ __le16 Reserved; /* 0x06 */ > }; > > /* union of Request Descriptors */ >@@ -366,10 +366,10 @@ union MEGASAS_REQUEST_DESCRIPTOR_UNION { > struct MEGASAS_RAID_MFA_IO_REQUEST_DESCRIPTOR MFAIo; > union { > struct { >- u32 low; >- u32 high; >+ __le32 low; >+ __le32 high; > } u; >- u64 Words; >+ __le64 Words; > }; > }; > >@@ -377,35 +377,35 @@ union MEGASAS_REQUEST_DESCRIPTOR_UNION { >struct MPI2_DEFAULT_REPLY_DESCRIPTOR { > u8 ReplyFlags; /* 0x00 */ > u8 MSIxIndex; /* 0x01 */ >- u16 DescriptorTypeDependent1; /* 0x02 */ >- u32 DescriptorTypeDependent2; /* 0x04 */ >+ __le16 DescriptorTypeDependent1; /* 0x02 */ >+ __le32 DescriptorTypeDependent2; /* 0x04 */ > }; > > /* Address Reply Descriptor */ > struct MPI2_ADDRESS_REPLY_DESCRIPTOR { > u8 ReplyFlags; /* 0x00 */ > u8 MSIxIndex; /* 0x01 */ >- u16 SMID; /* 0x02 */ >- u32 ReplyFrameAddress; /* 0x04 */ >+ __le16 SMID; /* 0x02 */ >+ __le32 ReplyFrameAddress; /* 0x04 */ > }; > > /* SCSI IO Success Reply Descriptor */ > struct MPI2_SCSI_IO_SUCCESS_REPLY_DESCRIPTOR { > u8 ReplyFlags; /* 0x00 */ > u8 MSIxIndex; /* 0x01 */ >- u16 SMID; /* 0x02 */ >- u16 TaskTag; /* 0x04 */ >- u16 Reserved1; /* 0x06 */ >+ __le16 SMID; /* 0x02 */ >+ __le16 TaskTag; /* 0x04 */ >+ __le16 Reserved1; /* 0x06 */ > }; > > /* TargetAssist Success Reply Descriptor */ struct >MPI2_TARGETASSIST_SUCCESS_REPLY_DESCRIPTOR { > u8 ReplyFlags; /* 0x00 */ > u8 MSIxIndex; /* 0x01 */ >- u16 SMID; /* 0x02 */ >+ __le16 SMID; /* 0x02 */ > u8 SequenceNumber; /* 0x04 */ > u8 Reserved1; /* 0x05 */ >- u16 IoIndex; /* 0x06 */ >+ __le16 IoIndex; /* 0x06 */ > }; > > /* Target Command Buffer Reply Descriptor */ @@ -414,16 +414,16 @@ >struct MPI2_TARGET_COMMAND_BUFFER_REPLY_DESCRIPTOR { > u8 MSIxIndex; /* 0x01 */ > u8 VP_ID; /* 0x02 */ > u8 Flags; /* 0x03 */ >- u16 InitiatorDevHandle; /* 0x04 */ >- u16 IoIndex; /* 0x06 */ >+ __le16 InitiatorDevHandle; /* 0x04 */ >+ __le16 IoIndex; /* 0x06 */ > }; > > /* RAID Accelerator Success Reply Descriptor */ struct >MPI2_RAID_ACCELERATOR_SUCCESS_REPLY_DESCRIPTOR { > u8 ReplyFlags; /* 0x00 */ > u8 MSIxIndex; /* 0x01 */ >- u16 SMID; /* 0x02 */ >- u32 Reserved; /* 0x04 */ >+ __le16 SMID; /* 0x02 */ >+ __le32 Reserved; /* 0x04 */ > }; > > /* union of Reply Descriptors */ >@@ -435,7 +435,7 @@ union MPI2_REPLY_DESCRIPTORS_UNION { > struct MPI2_TARGET_COMMAND_BUFFER_REPLY_DESCRIPTOR >TargetCommandBuffer; > struct MPI2_RAID_ACCELERATOR_SUCCESS_REPLY_DESCRIPTOR > RAIDAcceleratorSuccess; >- u64 Words; >+ __le64 Words; > }; > > /* IOCInit Request message */ >@@ -444,28 +444,28 @@ struct MPI2_IOC_INIT_REQUEST { > u8 Reserved1; /* 0x01 */ > u8 ChainOffset; /* 0x02 */ > u8 Function; /* 0x03 */ >- u16 Reserved2; /* 0x04 */ >+ __le16 Reserved2; /* 0x04 */ > u8 Reserved3; /* 0x06 */ > u8 MsgFlags; /* 0x07 */ > u8 VP_ID; /* 0x08 */ > u8 VF_ID; /* 0x09 */ >- u16 Reserved4; /* 0x0A */ >- u16 MsgVersion; /* 0x0C */ >- u16 HeaderVersion; /* 0x0E */ >+ __le16 Reserved4; /* 0x0A */ >+ __le16 MsgVersion; /* 0x0C */ >+ __le16 HeaderVersion; /* 0x0E */ > u32 Reserved5; /* 0x10 */ >- u16 Reserved6; /* 0x14 */ >+ __le16 Reserved6; /* 0x14 */ > u8 Reserved7; /* 0x16 */ > u8 HostMSIxVectors; /* 0x17 */ >- u16 Reserved8; /* 0x18 */ >- u16 SystemRequestFrameSize; /* 0x1A */ >- u16 ReplyDescriptorPostQueueDepth; /* 0x1C */ >- u16 ReplyFreeQueueDepth; /* 0x1E */ >- u32 SenseBufferAddressHigh; /* 0x20 */ >- u32 SystemReplyAddressHigh; /* 0x24 */ >- u64 SystemRequestFrameBaseAddress; /* 0x28 */ >- u64 ReplyDescriptorPostQueueAddress;/* 0x30 */ >- u64 ReplyFreeQueueAddress; /* 0x38 */ >- u64 TimeStamp; /* 0x40 */ >+ __le16 Reserved8; /* 0x18 */ >+ __le16 SystemRequestFrameSize; /* 0x1A */ >+ __le16 ReplyDescriptorPostQueueDepth; /* 0x1C */ >+ __le16 ReplyFreeQueueDepth; /* 0x1E */ >+ __le32 SenseBufferAddressHigh; /* 0x20 */ >+ __le32 SystemReplyAddressHigh; /* 0x24 */ >+ __le64 SystemRequestFrameBaseAddress; /* 0x28 >*/ >+ __le64 ReplyDescriptorPostQueueAddress;/* 0x30 */ >+ __le64 ReplyFreeQueueAddress; /* 0x38 */ >+ __le64 TimeStamp; /* 0x40 */ > }; > > /* mrpriv defines */ >@@ -491,41 +491,41 @@ struct MPI2_IOC_INIT_REQUEST { > #define MR_DCMD_LD_VF_MAP_GET_ALL_LDS 0x03150200 > > struct MR_DEV_HANDLE_INFO { >- u16 curDevHdl; >+ __le16 curDevHdl; > u8 validHandles; > u8 reserved; >- u16 devHandle[2]; >+ __le16 devHandle[2]; > }; > > struct MR_ARRAY_INFO { >- u16 pd[MAX_RAIDMAP_ROW_SIZE]; >+ __le16 pd[MAX_RAIDMAP_ROW_SIZE]; > }; > > struct MR_QUAD_ELEMENT { >- u64 logStart; >- u64 logEnd; >- u64 offsetInSpan; >- u32 diff; >- u32 reserved1; >+ __le64 logStart; >+ __le64 logEnd; >+ __le64 offsetInSpan; >+ __le32 diff; >+ __le32 reserved1; > }; > > struct MR_SPAN_INFO { >- u32 noElements; >- u32 reserved1; >+ __le32 noElements; >+ __le32 reserved1; > struct MR_QUAD_ELEMENT quad[MAX_RAIDMAP_SPAN_DEPTH]; }; > > struct MR_LD_SPAN { >- u64 startBlk; >- u64 numBlks; >- u16 arrayRef; >+ __le64 startBlk; >+ __le64 numBlks; >+ __le16 arrayRef; > u8 spanRowSize; > u8 spanRowDataSize; > u8 reserved[4]; > }; > > struct MR_SPAN_BLOCK_INFO { >- u64 num_rows; >+ __le64 num_rows; > struct MR_LD_SPAN span; > struct MR_SPAN_INFO block_span_info; > }; >@@ -558,8 +558,8 @@ struct MR_LD_RAID { > u32 reserved4:7; > #endif > } capability; >- u32 reserved6; >- u64 size; >+ __le32 reserved6; >+ __le64 size; > u8 spanDepth; > u8 level; > u8 stripeShift; >@@ -568,12 +568,12 @@ struct MR_LD_RAID { > u8 writeMode; > u8 PRL; > u8 SRL; >- u16 targetId; >+ __le16 targetId; > u8 ldState; > u8 regTypeReqOnWrite; > u8 modFactor; > u8 regTypeReqOnRead; >- u16 seqNum; >+ __le16 seqNum; > > struct { > u32 ldSyncRequired:1; >@@ -592,20 +592,20 @@ struct MR_LD_SPAN_MAP { }; > > struct MR_FW_RAID_MAP { >- u32 totalSize; >+ __le32 totalSize; > union { > struct { >- u32 maxLd; >- u32 maxSpanDepth; >- u32 maxRowSize; >- u32 maxPdCount; >- u32 maxArrays; >+ __le32 maxLd; >+ __le32 maxSpanDepth; >+ __le32 maxRowSize; >+ __le32 maxPdCount; >+ __le32 maxArrays; > } validationInfo; >- u32 version[5]; >+ __le32 version[5]; > }; > >- u32 ldCount; >- u32 Reserved1; >+ __le32 ldCount; >+ __le32 Reserved1; > u8 ldTgtIdToLd[MAX_RAIDMAP_LOGICAL_DRIVES+ > MAX_RAIDMAP_VIEWS]; > u8 fpPdIoTimeoutSec; >@@ -620,7 +620,7 @@ struct IO_REQUEST_INFO { > u32 numBlocks; > u16 ldTgtId; > u8 isRead; >- u16 devHandle; >+ __le16 devHandle; > u64 pdBlock; > u8 fpOkForIo; > u8 IoforUnevenSpan; >@@ -634,7 +634,7 @@ struct IO_REQUEST_INFO { struct >MR_LD_TARGET_SYNC { > u8 targetId; > u8 reserved; >- u16 seqNum; >+ __le16 seqNum; > }; > > #define IEEE_SGE_FLAGS_ADDR_MASK (0x03) >@@ -720,27 +720,27 @@ struct MR_DRV_RAID_MAP { > * This feild will be manupulated by driver for ext raid map, > * else pick the value from firmware raid map. > */ >- u32 totalSize; >+ __le32 totalSize; > > union { > struct { >- u32 maxLd; >- u32 maxSpanDepth; >- u32 maxRowSize; >- u32 maxPdCount; >- u32 maxArrays; >+ __le32 maxLd; >+ __le32 maxSpanDepth; >+ __le32 maxRowSize; >+ __le32 maxPdCount; >+ __le32 maxArrays; > } validationInfo; >- u32 version[5]; >+ __le32 version[5]; > }; > > /* timeout value used by driver in FP IOs*/ > u8 fpPdIoTimeoutSec; > u8 reserved2[7]; > >- u16 ldCount; >- u16 arCount; >- u16 spanCount; >- u16 reserve3; >+ __le16 ldCount; >+ __le16 arCount; >+ __le16 spanCount; >+ __le16 reserve3; > > struct MR_DEV_HANDLE_INFO >devHndlInfo[MAX_RAIDMAP_PHYSICAL_DEVICES]; > u8 ldTgtIdToLd[MAX_LOGICAL_DRIVES_EXT]; >@@ -779,10 +779,10 @@ struct MR_FW_RAID_MAP_EXT { > u8 fpPdIoTimeoutSec; > u8 reserved2[7]; > >- u16 ldCount; >- u16 arCount; >- u16 spanCount; >- u16 reserve3; >+ __le16 ldCount; >+ __le16 arCount; >+ __le16 spanCount; >+ __le16 reserve3; > > struct MR_DEV_HANDLE_INFO >devHndlInfo[MAX_RAIDMAP_PHYSICAL_DEVICES]; > u8 ldTgtIdToLd[MAX_LOGICAL_DRIVES_EXT]; >@@ -839,10 +839,10 @@ struct fusion_context { }; > > union desc_value { >- u64 word; >+ __le64 word; > struct { >- u32 low; >- u32 high; >+ __le32 low; >+ __le32 high; > } u; > }; > Acked-by: Sumit Saxena <sumit.saxena@xxxxxxxxxxxxx> >-- >1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html