diff options
author | Kashyap, Desai <kashyap.desai@lsi.com> | 2011-06-14 01:24:56 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2011-06-29 17:07:00 -0400 |
commit | c97951ec46d4b076c2236b77db34eeed6dddb8eb (patch) | |
tree | 992d5e85f3dbc23bb702e9a295cae5c477683037 | |
parent | d7e01dc669e3f69d396ce3972ba87b7d678a94e4 (diff) |
[SCSI] mpt2sas: Fixed Big Indian Issues on 32 bit PPC
This patch addresses many endian issues solved by runing sparse with the
option __CHECK_ENDIAN__ turned on.
Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_base.c | 65 | ||||
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_base.h | 53 | ||||
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_ctl.c | 10 | ||||
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_debug.h | 2 | ||||
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_scsih.c | 12 | ||||
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_transport.c | 24 |
6 files changed, 96 insertions, 70 deletions
diff --git a/drivers/scsi/mpt2sas/mpt2sas_base.c b/drivers/scsi/mpt2sas/mpt2sas_base.c index efa0255491c2..1da606cb2461 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_base.c +++ b/drivers/scsi/mpt2sas/mpt2sas_base.c | |||
@@ -94,7 +94,7 @@ module_param(diag_buffer_enable, int, 0); | |||
94 | MODULE_PARM_DESC(diag_buffer_enable, " post diag buffers " | 94 | MODULE_PARM_DESC(diag_buffer_enable, " post diag buffers " |
95 | "(TRACE=1/SNAPSHOT=2/EXTENDED=4/default=0)"); | 95 | "(TRACE=1/SNAPSHOT=2/EXTENDED=4/default=0)"); |
96 | 96 | ||
97 | int mpt2sas_fwfault_debug; | 97 | static int mpt2sas_fwfault_debug; |
98 | MODULE_PARM_DESC(mpt2sas_fwfault_debug, " enable detection of firmware fault " | 98 | MODULE_PARM_DESC(mpt2sas_fwfault_debug, " enable detection of firmware fault " |
99 | "and halt firmware - (default=0)"); | 99 | "and halt firmware - (default=0)"); |
100 | 100 | ||
@@ -857,7 +857,7 @@ _base_interrupt(int irq, void *bus_id) | |||
857 | completed_cmds = 0; | 857 | completed_cmds = 0; |
858 | cb_idx = 0xFF; | 858 | cb_idx = 0xFF; |
859 | do { | 859 | do { |
860 | rd.word = rpf->Words; | 860 | rd.word = le64_to_cpu(rpf->Words); |
861 | if (rd.u.low == UINT_MAX || rd.u.high == UINT_MAX) | 861 | if (rd.u.low == UINT_MAX || rd.u.high == UINT_MAX) |
862 | goto out; | 862 | goto out; |
863 | reply = 0; | 863 | reply = 0; |
@@ -906,7 +906,7 @@ _base_interrupt(int irq, void *bus_id) | |||
906 | 906 | ||
907 | next: | 907 | next: |
908 | 908 | ||
909 | rpf->Words = ULLONG_MAX; | 909 | rpf->Words = cpu_to_le64(ULLONG_MAX); |
910 | ioc->reply_post_host_index = (ioc->reply_post_host_index == | 910 | ioc->reply_post_host_index = (ioc->reply_post_host_index == |
911 | (ioc->reply_post_queue_depth - 1)) ? 0 : | 911 | (ioc->reply_post_queue_depth - 1)) ? 0 : |
912 | ioc->reply_post_host_index + 1; | 912 | ioc->reply_post_host_index + 1; |
@@ -1817,7 +1817,9 @@ _base_display_ioc_capabilities(struct MPT2SAS_ADAPTER *ioc) | |||
1817 | char desc[16]; | 1817 | char desc[16]; |
1818 | u8 revision; | 1818 | u8 revision; |
1819 | u32 iounit_pg1_flags; | 1819 | u32 iounit_pg1_flags; |
1820 | u32 bios_version; | ||
1820 | 1821 | ||
1822 | bios_version = le32_to_cpu(ioc->bios_pg3.BiosVersion); | ||
1821 | pci_read_config_byte(ioc->pdev, PCI_CLASS_REVISION, &revision); | 1823 | pci_read_config_byte(ioc->pdev, PCI_CLASS_REVISION, &revision); |
1822 | strncpy(desc, ioc->manu_pg0.ChipName, 16); | 1824 | strncpy(desc, ioc->manu_pg0.ChipName, 16); |
1823 | printk(MPT2SAS_INFO_FMT "%s: FWVersion(%02d.%02d.%02d.%02d), " | 1825 | printk(MPT2SAS_INFO_FMT "%s: FWVersion(%02d.%02d.%02d.%02d), " |
@@ -1828,10 +1830,10 @@ _base_display_ioc_capabilities(struct MPT2SAS_ADAPTER *ioc) | |||
1828 | (ioc->facts.FWVersion.Word & 0x0000FF00) >> 8, | 1830 | (ioc->facts.FWVersion.Word & 0x0000FF00) >> 8, |
1829 | ioc->facts.FWVersion.Word & 0x000000FF, | 1831 | ioc->facts.FWVersion.Word & 0x000000FF, |
1830 | revision, | 1832 | revision, |
1831 | (ioc->bios_pg3.BiosVersion & 0xFF000000) >> 24, | 1833 | (bios_version & 0xFF000000) >> 24, |
1832 | (ioc->bios_pg3.BiosVersion & 0x00FF0000) >> 16, | 1834 | (bios_version & 0x00FF0000) >> 16, |
1833 | (ioc->bios_pg3.BiosVersion & 0x0000FF00) >> 8, | 1835 | (bios_version & 0x0000FF00) >> 8, |
1834 | ioc->bios_pg3.BiosVersion & 0x000000FF); | 1836 | bios_version & 0x000000FF); |
1835 | 1837 | ||
1836 | _base_display_dell_branding(ioc); | 1838 | _base_display_dell_branding(ioc); |
1837 | _base_display_intel_branding(ioc); | 1839 | _base_display_intel_branding(ioc); |
@@ -2150,7 +2152,7 @@ _base_release_memory_pools(struct MPT2SAS_ADAPTER *ioc) | |||
2150 | static int | 2152 | static int |
2151 | _base_allocate_memory_pools(struct MPT2SAS_ADAPTER *ioc, int sleep_flag) | 2153 | _base_allocate_memory_pools(struct MPT2SAS_ADAPTER *ioc, int sleep_flag) |
2152 | { | 2154 | { |
2153 | Mpi2IOCFactsReply_t *facts; | 2155 | struct mpt2sas_facts *facts; |
2154 | u32 queue_size, queue_diff; | 2156 | u32 queue_size, queue_diff; |
2155 | u16 max_sge_elements; | 2157 | u16 max_sge_elements; |
2156 | u16 num_of_reply_frames; | 2158 | u16 num_of_reply_frames; |
@@ -2783,7 +2785,7 @@ _base_handshake_req_reply_wait(struct MPT2SAS_ADAPTER *ioc, int request_bytes, | |||
2783 | int i; | 2785 | int i; |
2784 | u8 failed; | 2786 | u8 failed; |
2785 | u16 dummy; | 2787 | u16 dummy; |
2786 | u32 *mfp; | 2788 | __le32 *mfp; |
2787 | 2789 | ||
2788 | /* make sure doorbell is not in use */ | 2790 | /* make sure doorbell is not in use */ |
2789 | if ((readl(&ioc->chip->Doorbell) & MPI2_DOORBELL_USED)) { | 2791 | if ((readl(&ioc->chip->Doorbell) & MPI2_DOORBELL_USED)) { |
@@ -2871,7 +2873,7 @@ _base_handshake_req_reply_wait(struct MPT2SAS_ADAPTER *ioc, int request_bytes, | |||
2871 | writel(0, &ioc->chip->HostInterruptStatus); | 2873 | writel(0, &ioc->chip->HostInterruptStatus); |
2872 | 2874 | ||
2873 | if (ioc->logging_level & MPT_DEBUG_INIT) { | 2875 | if (ioc->logging_level & MPT_DEBUG_INIT) { |
2874 | mfp = (u32 *)reply; | 2876 | mfp = (__le32 *)reply; |
2875 | printk(KERN_INFO "\toffset:data\n"); | 2877 | printk(KERN_INFO "\toffset:data\n"); |
2876 | for (i = 0; i < reply_bytes/4; i++) | 2878 | for (i = 0; i < reply_bytes/4; i++) |
2877 | printk(KERN_INFO "\t[0x%02x]:%08x\n", i*4, | 2879 | printk(KERN_INFO "\t[0x%02x]:%08x\n", i*4, |
@@ -3097,7 +3099,8 @@ static int | |||
3097 | _base_get_port_facts(struct MPT2SAS_ADAPTER *ioc, int port, int sleep_flag) | 3099 | _base_get_port_facts(struct MPT2SAS_ADAPTER *ioc, int port, int sleep_flag) |
3098 | { | 3100 | { |
3099 | Mpi2PortFactsRequest_t mpi_request; | 3101 | Mpi2PortFactsRequest_t mpi_request; |
3100 | Mpi2PortFactsReply_t mpi_reply, *pfacts; | 3102 | Mpi2PortFactsReply_t mpi_reply; |
3103 | struct mpt2sas_port_facts *pfacts; | ||
3101 | int mpi_reply_sz, mpi_request_sz, r; | 3104 | int mpi_reply_sz, mpi_request_sz, r; |
3102 | 3105 | ||
3103 | dinitprintk(ioc, printk(MPT2SAS_INFO_FMT "%s\n", ioc->name, | 3106 | dinitprintk(ioc, printk(MPT2SAS_INFO_FMT "%s\n", ioc->name, |
@@ -3139,7 +3142,8 @@ static int | |||
3139 | _base_get_ioc_facts(struct MPT2SAS_ADAPTER *ioc, int sleep_flag) | 3142 | _base_get_ioc_facts(struct MPT2SAS_ADAPTER *ioc, int sleep_flag) |
3140 | { | 3143 | { |
3141 | Mpi2IOCFactsRequest_t mpi_request; | 3144 | Mpi2IOCFactsRequest_t mpi_request; |
3142 | Mpi2IOCFactsReply_t mpi_reply, *facts; | 3145 | Mpi2IOCFactsReply_t mpi_reply; |
3146 | struct mpt2sas_facts *facts; | ||
3143 | int mpi_reply_sz, mpi_request_sz, r; | 3147 | int mpi_reply_sz, mpi_request_sz, r; |
3144 | 3148 | ||
3145 | dinitprintk(ioc, printk(MPT2SAS_INFO_FMT "%s\n", ioc->name, | 3149 | dinitprintk(ioc, printk(MPT2SAS_INFO_FMT "%s\n", ioc->name, |
@@ -3225,17 +3229,6 @@ _base_send_ioc_init(struct MPT2SAS_ADAPTER *ioc, int sleep_flag) | |||
3225 | mpi_request.MsgVersion = cpu_to_le16(MPI2_VERSION); | 3229 | mpi_request.MsgVersion = cpu_to_le16(MPI2_VERSION); |
3226 | mpi_request.HeaderVersion = cpu_to_le16(MPI2_HEADER_VERSION); | 3230 | mpi_request.HeaderVersion = cpu_to_le16(MPI2_HEADER_VERSION); |
3227 | 3231 | ||
3228 | /* In MPI Revision I (0xA), the SystemReplyFrameSize(offset 0x18) was | ||
3229 | * removed and made reserved. For those with older firmware will need | ||
3230 | * this fix. It was decided that the Reply and Request frame sizes are | ||
3231 | * the same. | ||
3232 | */ | ||
3233 | if ((ioc->facts.HeaderVersion >> 8) < 0xA) { | ||
3234 | mpi_request.Reserved7 = cpu_to_le16(ioc->reply_sz); | ||
3235 | /* mpi_request.SystemReplyFrameSize = | ||
3236 | * cpu_to_le16(ioc->reply_sz); | ||
3237 | */ | ||
3238 | } | ||
3239 | 3232 | ||
3240 | mpi_request.SystemRequestFrameSize = cpu_to_le16(ioc->request_sz/4); | 3233 | mpi_request.SystemRequestFrameSize = cpu_to_le16(ioc->request_sz/4); |
3241 | mpi_request.ReplyDescriptorPostQueueDepth = | 3234 | mpi_request.ReplyDescriptorPostQueueDepth = |
@@ -3243,25 +3236,17 @@ _base_send_ioc_init(struct MPT2SAS_ADAPTER *ioc, int sleep_flag) | |||
3243 | mpi_request.ReplyFreeQueueDepth = | 3236 | mpi_request.ReplyFreeQueueDepth = |
3244 | cpu_to_le16(ioc->reply_free_queue_depth); | 3237 | cpu_to_le16(ioc->reply_free_queue_depth); |
3245 | 3238 | ||
3246 | #if BITS_PER_LONG > 32 | ||
3247 | mpi_request.SenseBufferAddressHigh = | 3239 | mpi_request.SenseBufferAddressHigh = |
3248 | cpu_to_le32(ioc->sense_dma >> 32); | 3240 | cpu_to_le32((u64)ioc->sense_dma >> 32); |
3249 | mpi_request.SystemReplyAddressHigh = | 3241 | mpi_request.SystemReplyAddressHigh = |
3250 | cpu_to_le32(ioc->reply_dma >> 32); | 3242 | cpu_to_le32((u64)ioc->reply_dma >> 32); |
3251 | mpi_request.SystemRequestFrameBaseAddress = | 3243 | mpi_request.SystemRequestFrameBaseAddress = |
3252 | cpu_to_le64(ioc->request_dma); | 3244 | cpu_to_le64((u64)ioc->request_dma); |
3253 | mpi_request.ReplyFreeQueueAddress = | 3245 | mpi_request.ReplyFreeQueueAddress = |
3254 | cpu_to_le64(ioc->reply_free_dma); | 3246 | cpu_to_le64((u64)ioc->reply_free_dma); |
3255 | mpi_request.ReplyDescriptorPostQueueAddress = | 3247 | mpi_request.ReplyDescriptorPostQueueAddress = |
3256 | cpu_to_le64(ioc->reply_post_free_dma); | 3248 | cpu_to_le64((u64)ioc->reply_post_free_dma); |
3257 | #else | 3249 | |
3258 | mpi_request.SystemRequestFrameBaseAddress = | ||
3259 | cpu_to_le32(ioc->request_dma); | ||
3260 | mpi_request.ReplyFreeQueueAddress = | ||
3261 | cpu_to_le32(ioc->reply_free_dma); | ||
3262 | mpi_request.ReplyDescriptorPostQueueAddress = | ||
3263 | cpu_to_le32(ioc->reply_post_free_dma); | ||
3264 | #endif | ||
3265 | 3250 | ||
3266 | /* This time stamp specifies number of milliseconds | 3251 | /* This time stamp specifies number of milliseconds |
3267 | * since epoch ~ midnight January 1, 1970. | 3252 | * since epoch ~ midnight January 1, 1970. |
@@ -3271,10 +3256,10 @@ _base_send_ioc_init(struct MPT2SAS_ADAPTER *ioc, int sleep_flag) | |||
3271 | (current_time.tv_usec / 1000)); | 3256 | (current_time.tv_usec / 1000)); |
3272 | 3257 | ||
3273 | if (ioc->logging_level & MPT_DEBUG_INIT) { | 3258 | if (ioc->logging_level & MPT_DEBUG_INIT) { |
3274 | u32 *mfp; | 3259 | __le32 *mfp; |
3275 | int i; | 3260 | int i; |
3276 | 3261 | ||
3277 | mfp = (u32 *)&mpi_request; | 3262 | mfp = (__le32 *)&mpi_request; |
3278 | printk(KERN_INFO "\toffset:data\n"); | 3263 | printk(KERN_INFO "\toffset:data\n"); |
3279 | for (i = 0; i < sizeof(Mpi2IOCInitRequest_t)/4; i++) | 3264 | for (i = 0; i < sizeof(Mpi2IOCInitRequest_t)/4; i++) |
3280 | printk(KERN_INFO "\t[0x%02x]:%08x\n", i*4, | 3265 | printk(KERN_INFO "\t[0x%02x]:%08x\n", i*4, |
@@ -3759,7 +3744,7 @@ _base_make_ioc_operational(struct MPT2SAS_ADAPTER *ioc, int sleep_flag) | |||
3759 | 3744 | ||
3760 | /* initialize Reply Post Free Queue */ | 3745 | /* initialize Reply Post Free Queue */ |
3761 | for (i = 0; i < ioc->reply_post_queue_depth; i++) | 3746 | for (i = 0; i < ioc->reply_post_queue_depth; i++) |
3762 | ioc->reply_post_free[i].Words = ULLONG_MAX; | 3747 | ioc->reply_post_free[i].Words = cpu_to_le64(ULLONG_MAX); |
3763 | 3748 | ||
3764 | r = _base_send_ioc_init(ioc, sleep_flag); | 3749 | r = _base_send_ioc_init(ioc, sleep_flag); |
3765 | if (r) | 3750 | if (r) |
diff --git a/drivers/scsi/mpt2sas/mpt2sas_base.h b/drivers/scsi/mpt2sas/mpt2sas_base.h index dcc289c25459..451dc1ce2287 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_base.h +++ b/drivers/scsi/mpt2sas/mpt2sas_base.h | |||
@@ -541,6 +541,53 @@ struct _tr_list { | |||
541 | 541 | ||
542 | typedef void (*MPT_ADD_SGE)(void *paddr, u32 flags_length, dma_addr_t dma_addr); | 542 | typedef void (*MPT_ADD_SGE)(void *paddr, u32 flags_length, dma_addr_t dma_addr); |
543 | 543 | ||
544 | /* IOC Facts and Port Facts converted from little endian to cpu */ | ||
545 | union mpi2_version_union { | ||
546 | MPI2_VERSION_STRUCT Struct; | ||
547 | u32 Word; | ||
548 | }; | ||
549 | |||
550 | struct mpt2sas_facts { | ||
551 | u16 MsgVersion; | ||
552 | u16 HeaderVersion; | ||
553 | u8 IOCNumber; | ||
554 | u8 VP_ID; | ||
555 | u8 VF_ID; | ||
556 | u16 IOCExceptions; | ||
557 | u16 IOCStatus; | ||
558 | u32 IOCLogInfo; | ||
559 | u8 MaxChainDepth; | ||
560 | u8 WhoInit; | ||
561 | u8 NumberOfPorts; | ||
562 | u8 MaxMSIxVectors; | ||
563 | u16 RequestCredit; | ||
564 | u16 ProductID; | ||
565 | u32 IOCCapabilities; | ||
566 | union mpi2_version_union FWVersion; | ||
567 | u16 IOCRequestFrameSize; | ||
568 | u16 Reserved3; | ||
569 | u16 MaxInitiators; | ||
570 | u16 MaxTargets; | ||
571 | u16 MaxSasExpanders; | ||
572 | u16 MaxEnclosures; | ||
573 | u16 ProtocolFlags; | ||
574 | u16 HighPriorityCredit; | ||
575 | u16 MaxReplyDescriptorPostQueueDepth; | ||
576 | u8 ReplyFrameSize; | ||
577 | u8 MaxVolumes; | ||
578 | u16 MaxDevHandle; | ||
579 | u16 MaxPersistentEntries; | ||
580 | u16 MinDevHandle; | ||
581 | }; | ||
582 | |||
583 | struct mpt2sas_port_facts { | ||
584 | u8 PortNumber; | ||
585 | u8 VP_ID; | ||
586 | u8 VF_ID; | ||
587 | u8 PortType; | ||
588 | u16 MaxPostedCmdBuffers; | ||
589 | }; | ||
590 | |||
544 | /** | 591 | /** |
545 | * struct MPT2SAS_ADAPTER - per adapter struct | 592 | * struct MPT2SAS_ADAPTER - per adapter struct |
546 | * @list: ioc_list | 593 | * @list: ioc_list |
@@ -749,8 +796,8 @@ struct MPT2SAS_ADAPTER { | |||
749 | u32 event_masks[MPI2_EVENT_NOTIFY_EVENTMASK_WORDS]; | 796 | u32 event_masks[MPI2_EVENT_NOTIFY_EVENTMASK_WORDS]; |
750 | 797 | ||
751 | /* static config pages */ | 798 | /* static config pages */ |
752 | Mpi2IOCFactsReply_t facts; | 799 | struct mpt2sas_facts facts; |
753 | Mpi2PortFactsReply_t *pfacts; | 800 | struct mpt2sas_port_facts *pfacts; |
754 | Mpi2ManufacturingPage0_t manu_pg0; | 801 | Mpi2ManufacturingPage0_t manu_pg0; |
755 | Mpi2BiosPage2_t bios_pg2; | 802 | Mpi2BiosPage2_t bios_pg2; |
756 | Mpi2BiosPage3_t bios_pg3; | 803 | Mpi2BiosPage3_t bios_pg3; |
@@ -840,7 +887,7 @@ struct MPT2SAS_ADAPTER { | |||
840 | 887 | ||
841 | /* reply free queue */ | 888 | /* reply free queue */ |
842 | u16 reply_free_queue_depth; | 889 | u16 reply_free_queue_depth; |
843 | u32 *reply_free; | 890 | __le32 *reply_free; |
844 | dma_addr_t reply_free_dma; | 891 | dma_addr_t reply_free_dma; |
845 | struct dma_pool *reply_free_dma_pool; | 892 | struct dma_pool *reply_free_dma_pool; |
846 | u32 reply_free_host_index; | 893 | u32 reply_free_host_index; |
diff --git a/drivers/scsi/mpt2sas/mpt2sas_ctl.c b/drivers/scsi/mpt2sas/mpt2sas_ctl.c index 437c2d94c45a..d1c3bba7e936 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_ctl.c +++ b/drivers/scsi/mpt2sas/mpt2sas_ctl.c | |||
@@ -2706,13 +2706,13 @@ static DEVICE_ATTR(ioc_reset_count, S_IRUGO, | |||
2706 | _ctl_ioc_reset_count_show, NULL); | 2706 | _ctl_ioc_reset_count_show, NULL); |
2707 | 2707 | ||
2708 | struct DIAG_BUFFER_START { | 2708 | struct DIAG_BUFFER_START { |
2709 | u32 Size; | 2709 | __le32 Size; |
2710 | u32 DiagVersion; | 2710 | __le32 DiagVersion; |
2711 | u8 BufferType; | 2711 | u8 BufferType; |
2712 | u8 Reserved[3]; | 2712 | u8 Reserved[3]; |
2713 | u32 Reserved1; | 2713 | __le32 Reserved1; |
2714 | u32 Reserved2; | 2714 | __le32 Reserved2; |
2715 | u32 Reserved3; | 2715 | __le32 Reserved3; |
2716 | }; | 2716 | }; |
2717 | /** | 2717 | /** |
2718 | * _ctl_host_trace_buffer_size_show - host buffer size (trace only) | 2718 | * _ctl_host_trace_buffer_size_show - host buffer size (trace only) |
diff --git a/drivers/scsi/mpt2sas/mpt2sas_debug.h b/drivers/scsi/mpt2sas/mpt2sas_debug.h index 3dcddfeb6f4c..9731f8e661bf 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_debug.h +++ b/drivers/scsi/mpt2sas/mpt2sas_debug.h | |||
@@ -164,7 +164,7 @@ static inline void | |||
164 | _debug_dump_mf(void *mpi_request, int sz) | 164 | _debug_dump_mf(void *mpi_request, int sz) |
165 | { | 165 | { |
166 | int i; | 166 | int i; |
167 | u32 *mfp = (u32 *)mpi_request; | 167 | __le32 *mfp = (__le32 *)mpi_request; |
168 | 168 | ||
169 | printk(KERN_INFO "mf:\n\t"); | 169 | printk(KERN_INFO "mf:\n\t"); |
170 | for (i = 0; i < sz; i++) { | 170 | for (i = 0; i < sz; i++) { |
diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c index a7dbc6825f5f..e327a3c03608 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c +++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c | |||
@@ -1956,7 +1956,7 @@ _scsih_slave_configure(struct scsi_device *sdev) | |||
1956 | case MPI2_RAID_VOL_TYPE_RAID1E: | 1956 | case MPI2_RAID_VOL_TYPE_RAID1E: |
1957 | qdepth = MPT2SAS_RAID_QUEUE_DEPTH; | 1957 | qdepth = MPT2SAS_RAID_QUEUE_DEPTH; |
1958 | if (ioc->manu_pg10.OEMIdentifier && | 1958 | if (ioc->manu_pg10.OEMIdentifier && |
1959 | (ioc->manu_pg10.GenericFlags0 & | 1959 | (le32_to_cpu(ioc->manu_pg10.GenericFlags0) & |
1960 | MFG10_GF0_R10_DISPLAY) && | 1960 | MFG10_GF0_R10_DISPLAY) && |
1961 | !(raid_device->num_pds % 2)) | 1961 | !(raid_device->num_pds % 2)) |
1962 | r_level = "RAID10"; | 1962 | r_level = "RAID10"; |
@@ -4598,7 +4598,7 @@ _scsih_expander_add(struct MPT2SAS_ADAPTER *ioc, u16 handle) | |||
4598 | Mpi2SasEnclosurePage0_t enclosure_pg0; | 4598 | Mpi2SasEnclosurePage0_t enclosure_pg0; |
4599 | u32 ioc_status; | 4599 | u32 ioc_status; |
4600 | u16 parent_handle; | 4600 | u16 parent_handle; |
4601 | __le64 sas_address, sas_address_parent = 0; | 4601 | u64 sas_address, sas_address_parent = 0; |
4602 | int i; | 4602 | int i; |
4603 | unsigned long flags; | 4603 | unsigned long flags; |
4604 | struct _sas_port *mpt2sas_port = NULL; | 4604 | struct _sas_port *mpt2sas_port = NULL; |
@@ -5404,7 +5404,7 @@ _scsih_sas_device_status_change_event(struct MPT2SAS_ADAPTER *ioc, | |||
5404 | { | 5404 | { |
5405 | struct MPT2SAS_TARGET *target_priv_data; | 5405 | struct MPT2SAS_TARGET *target_priv_data; |
5406 | struct _sas_device *sas_device; | 5406 | struct _sas_device *sas_device; |
5407 | __le64 sas_address; | 5407 | u64 sas_address; |
5408 | unsigned long flags; | 5408 | unsigned long flags; |
5409 | Mpi2EventDataSasDeviceStatusChange_t *event_data = | 5409 | Mpi2EventDataSasDeviceStatusChange_t *event_data = |
5410 | fw_event->event_data; | 5410 | fw_event->event_data; |
@@ -6566,7 +6566,7 @@ _scsih_search_responding_expanders(struct MPT2SAS_ADAPTER *ioc) | |||
6566 | Mpi2ExpanderPage0_t expander_pg0; | 6566 | Mpi2ExpanderPage0_t expander_pg0; |
6567 | Mpi2ConfigReply_t mpi_reply; | 6567 | Mpi2ConfigReply_t mpi_reply; |
6568 | u16 ioc_status; | 6568 | u16 ioc_status; |
6569 | __le64 sas_address; | 6569 | u64 sas_address; |
6570 | u16 handle; | 6570 | u16 handle; |
6571 | 6571 | ||
6572 | printk(MPT2SAS_INFO_FMT "%s\n", ioc->name, __func__); | 6572 | printk(MPT2SAS_INFO_FMT "%s\n", ioc->name, __func__); |
@@ -7505,7 +7505,7 @@ _scsih_suspend(struct pci_dev *pdev, pm_message_t state) | |||
7505 | { | 7505 | { |
7506 | struct Scsi_Host *shost = pci_get_drvdata(pdev); | 7506 | struct Scsi_Host *shost = pci_get_drvdata(pdev); |
7507 | struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); | 7507 | struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); |
7508 | u32 device_state; | 7508 | pci_power_t device_state; |
7509 | 7509 | ||
7510 | mpt2sas_base_stop_watchdog(ioc); | 7510 | mpt2sas_base_stop_watchdog(ioc); |
7511 | scsi_block_requests(shost); | 7511 | scsi_block_requests(shost); |
@@ -7532,7 +7532,7 @@ _scsih_resume(struct pci_dev *pdev) | |||
7532 | { | 7532 | { |
7533 | struct Scsi_Host *shost = pci_get_drvdata(pdev); | 7533 | struct Scsi_Host *shost = pci_get_drvdata(pdev); |
7534 | struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); | 7534 | struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); |
7535 | u32 device_state = pdev->current_state; | 7535 | pci_power_t device_state = pdev->current_state; |
7536 | int r; | 7536 | int r; |
7537 | 7537 | ||
7538 | printk(MPT2SAS_INFO_FMT "pdev=0x%p, slot=%s, previous " | 7538 | printk(MPT2SAS_INFO_FMT "pdev=0x%p, slot=%s, previous " |
diff --git a/drivers/scsi/mpt2sas/mpt2sas_transport.c b/drivers/scsi/mpt2sas/mpt2sas_transport.c index cb1cdecbe0f8..15c798026217 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_transport.c +++ b/drivers/scsi/mpt2sas/mpt2sas_transport.c | |||
@@ -299,7 +299,6 @@ _transport_expander_report_manufacture(struct MPT2SAS_ADAPTER *ioc, | |||
299 | void *data_out = NULL; | 299 | void *data_out = NULL; |
300 | dma_addr_t data_out_dma; | 300 | dma_addr_t data_out_dma; |
301 | u32 sz; | 301 | u32 sz; |
302 | u64 *sas_address_le; | ||
303 | u16 wait_state_count; | 302 | u16 wait_state_count; |
304 | 303 | ||
305 | if (ioc->shost_recovery || ioc->pci_error_recovery) { | 304 | if (ioc->shost_recovery || ioc->pci_error_recovery) { |
@@ -372,8 +371,7 @@ _transport_expander_report_manufacture(struct MPT2SAS_ADAPTER *ioc, | |||
372 | mpi_request->PhysicalPort = 0xFF; | 371 | mpi_request->PhysicalPort = 0xFF; |
373 | mpi_request->VF_ID = 0; /* TODO */ | 372 | mpi_request->VF_ID = 0; /* TODO */ |
374 | mpi_request->VP_ID = 0; | 373 | mpi_request->VP_ID = 0; |
375 | sas_address_le = (u64 *)&mpi_request->SASAddress; | 374 | mpi_request->SASAddress = cpu_to_le64(sas_address); |
376 | *sas_address_le = cpu_to_le64(sas_address); | ||
377 | mpi_request->RequestDataLength = | 375 | mpi_request->RequestDataLength = |
378 | cpu_to_le16(sizeof(struct rep_manu_request)); | 376 | cpu_to_le16(sizeof(struct rep_manu_request)); |
379 | psge = &mpi_request->SGL; | 377 | psge = &mpi_request->SGL; |
@@ -1049,14 +1047,14 @@ struct phy_error_log_reply{ | |||
1049 | u8 function; /* 0x11 */ | 1047 | u8 function; /* 0x11 */ |
1050 | u8 function_result; | 1048 | u8 function_result; |
1051 | u8 response_length; | 1049 | u8 response_length; |
1052 | u16 expander_change_count; | 1050 | __be16 expander_change_count; |
1053 | u8 reserved_1[3]; | 1051 | u8 reserved_1[3]; |
1054 | u8 phy_identifier; | 1052 | u8 phy_identifier; |
1055 | u8 reserved_2[2]; | 1053 | u8 reserved_2[2]; |
1056 | u32 invalid_dword; | 1054 | __be32 invalid_dword; |
1057 | u32 running_disparity_error; | 1055 | __be32 running_disparity_error; |
1058 | u32 loss_of_dword_sync; | 1056 | __be32 loss_of_dword_sync; |
1059 | u32 phy_reset_problem; | 1057 | __be32 phy_reset_problem; |
1060 | }; | 1058 | }; |
1061 | 1059 | ||
1062 | /** | 1060 | /** |
@@ -1085,7 +1083,6 @@ _transport_get_expander_phy_error_log(struct MPT2SAS_ADAPTER *ioc, | |||
1085 | void *data_out = NULL; | 1083 | void *data_out = NULL; |
1086 | dma_addr_t data_out_dma; | 1084 | dma_addr_t data_out_dma; |
1087 | u32 sz; | 1085 | u32 sz; |
1088 | u64 *sas_address_le; | ||
1089 | u16 wait_state_count; | 1086 | u16 wait_state_count; |
1090 | 1087 | ||
1091 | if (ioc->shost_recovery || ioc->pci_error_recovery) { | 1088 | if (ioc->shost_recovery || ioc->pci_error_recovery) { |
@@ -1160,8 +1157,7 @@ _transport_get_expander_phy_error_log(struct MPT2SAS_ADAPTER *ioc, | |||
1160 | mpi_request->PhysicalPort = 0xFF; | 1157 | mpi_request->PhysicalPort = 0xFF; |
1161 | mpi_request->VF_ID = 0; /* TODO */ | 1158 | mpi_request->VF_ID = 0; /* TODO */ |
1162 | mpi_request->VP_ID = 0; | 1159 | mpi_request->VP_ID = 0; |
1163 | sas_address_le = (u64 *)&mpi_request->SASAddress; | 1160 | mpi_request->SASAddress = cpu_to_le64(phy->identify.sas_address); |
1164 | *sas_address_le = cpu_to_le64(phy->identify.sas_address); | ||
1165 | mpi_request->RequestDataLength = | 1161 | mpi_request->RequestDataLength = |
1166 | cpu_to_le16(sizeof(struct phy_error_log_request)); | 1162 | cpu_to_le16(sizeof(struct phy_error_log_request)); |
1167 | psge = &mpi_request->SGL; | 1163 | psge = &mpi_request->SGL; |
@@ -1406,7 +1402,6 @@ _transport_expander_phy_control(struct MPT2SAS_ADAPTER *ioc, | |||
1406 | void *data_out = NULL; | 1402 | void *data_out = NULL; |
1407 | dma_addr_t data_out_dma; | 1403 | dma_addr_t data_out_dma; |
1408 | u32 sz; | 1404 | u32 sz; |
1409 | u64 *sas_address_le; | ||
1410 | u16 wait_state_count; | 1405 | u16 wait_state_count; |
1411 | 1406 | ||
1412 | if (ioc->shost_recovery) { | 1407 | if (ioc->shost_recovery) { |
@@ -1486,8 +1481,7 @@ _transport_expander_phy_control(struct MPT2SAS_ADAPTER *ioc, | |||
1486 | mpi_request->PhysicalPort = 0xFF; | 1481 | mpi_request->PhysicalPort = 0xFF; |
1487 | mpi_request->VF_ID = 0; /* TODO */ | 1482 | mpi_request->VF_ID = 0; /* TODO */ |
1488 | mpi_request->VP_ID = 0; | 1483 | mpi_request->VP_ID = 0; |
1489 | sas_address_le = (u64 *)&mpi_request->SASAddress; | 1484 | mpi_request->SASAddress = cpu_to_le64(phy->identify.sas_address); |
1490 | *sas_address_le = cpu_to_le64(phy->identify.sas_address); | ||
1491 | mpi_request->RequestDataLength = | 1485 | mpi_request->RequestDataLength = |
1492 | cpu_to_le16(sizeof(struct phy_error_log_request)); | 1486 | cpu_to_le16(sizeof(struct phy_error_log_request)); |
1493 | psge = &mpi_request->SGL; | 1487 | psge = &mpi_request->SGL; |
@@ -1914,7 +1908,7 @@ _transport_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy, | |||
1914 | mpi_request->PhysicalPort = 0xFF; | 1908 | mpi_request->PhysicalPort = 0xFF; |
1915 | mpi_request->VF_ID = 0; /* TODO */ | 1909 | mpi_request->VF_ID = 0; /* TODO */ |
1916 | mpi_request->VP_ID = 0; | 1910 | mpi_request->VP_ID = 0; |
1917 | *((u64 *)&mpi_request->SASAddress) = (rphy) ? | 1911 | mpi_request->SASAddress = (rphy) ? |
1918 | cpu_to_le64(rphy->identify.sas_address) : | 1912 | cpu_to_le64(rphy->identify.sas_address) : |
1919 | cpu_to_le64(ioc->sas_hba.sas_address); | 1913 | cpu_to_le64(ioc->sas_hba.sas_address); |
1920 | mpi_request->RequestDataLength = cpu_to_le16(blk_rq_bytes(req) - 4); | 1914 | mpi_request->RequestDataLength = cpu_to_le16(blk_rq_bytes(req) - 4); |