scsi: mpt3sas: Bug fix for big endian systems.
This patch fixes sparse warnings and bugs on big endian systems. Signed-off-by: Chaitra P B <chaitra.basappa@broadcom.com> Signed-off-by: Suganath Prabu S <suganath-prabu.subramani@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Родитель
23b389c231
Коммит
cf6bf9710c
|
@ -75,7 +75,7 @@
|
|||
|
||||
typedef struct _MPI2_SCSI_IO_CDB_EEDP32 {
|
||||
U8 CDB[20]; /*0x00 */
|
||||
U32 PrimaryReferenceTag; /*0x14 */
|
||||
__be32 PrimaryReferenceTag; /*0x14 */
|
||||
U16 PrimaryApplicationTag; /*0x18 */
|
||||
U16 PrimaryApplicationTagMask; /*0x1A */
|
||||
U32 TransferLength; /*0x1C */
|
||||
|
|
|
@ -394,13 +394,14 @@ static void _clone_sg_entries(struct MPT3SAS_ADAPTER *ioc,
|
|||
buff_ptr_phys = buffer_iomem_phys;
|
||||
WARN_ON(buff_ptr_phys > U32_MAX);
|
||||
|
||||
if (sgel->FlagsLength &
|
||||
if (le32_to_cpu(sgel->FlagsLength) &
|
||||
(MPI2_SGE_FLAGS_HOST_TO_IOC << MPI2_SGE_FLAGS_SHIFT))
|
||||
is_write = 1;
|
||||
|
||||
for (i = 0; i < MPT_MIN_PHYS_SEGMENTS + ioc->facts.MaxChainDepth; i++) {
|
||||
|
||||
sgl_flags = (sgel->FlagsLength >> MPI2_SGE_FLAGS_SHIFT);
|
||||
sgl_flags =
|
||||
(le32_to_cpu(sgel->FlagsLength) >> MPI2_SGE_FLAGS_SHIFT);
|
||||
|
||||
switch (sgl_flags & MPI2_SGE_FLAGS_ELEMENT_MASK) {
|
||||
case MPI2_SGE_FLAGS_CHAIN_ELEMENT:
|
||||
|
@ -411,7 +412,7 @@ static void _clone_sg_entries(struct MPT3SAS_ADAPTER *ioc,
|
|||
*/
|
||||
sgel_next =
|
||||
_base_get_chain_buffer_dma_to_chain_buffer(ioc,
|
||||
sgel->Address);
|
||||
le32_to_cpu(sgel->Address));
|
||||
if (sgel_next == NULL)
|
||||
return;
|
||||
/*
|
||||
|
@ -426,7 +427,8 @@ static void _clone_sg_entries(struct MPT3SAS_ADAPTER *ioc,
|
|||
dst_addr_phys = _base_get_chain_phys(ioc,
|
||||
smid, sge_chain_count);
|
||||
WARN_ON(dst_addr_phys > U32_MAX);
|
||||
sgel->Address = (u32)dst_addr_phys;
|
||||
sgel->Address =
|
||||
cpu_to_le32(lower_32_bits(dst_addr_phys));
|
||||
sgel = sgel_next;
|
||||
sge_chain_count++;
|
||||
break;
|
||||
|
@ -435,22 +437,28 @@ static void _clone_sg_entries(struct MPT3SAS_ADAPTER *ioc,
|
|||
if (is_scsiio_req) {
|
||||
_base_clone_to_sys_mem(buff_ptr,
|
||||
sg_virt(sg_scmd),
|
||||
(sgel->FlagsLength & 0x00ffffff));
|
||||
(le32_to_cpu(sgel->FlagsLength) &
|
||||
0x00ffffff));
|
||||
/*
|
||||
* FIXME: this relies on a a zero
|
||||
* PCI mem_offset.
|
||||
*/
|
||||
sgel->Address = (u32)buff_ptr_phys;
|
||||
sgel->Address =
|
||||
cpu_to_le32((u32)buff_ptr_phys);
|
||||
} else {
|
||||
_base_clone_to_sys_mem(buff_ptr,
|
||||
ioc->config_vaddr,
|
||||
(sgel->FlagsLength & 0x00ffffff));
|
||||
sgel->Address = (u32)buff_ptr_phys;
|
||||
(le32_to_cpu(sgel->FlagsLength) &
|
||||
0x00ffffff));
|
||||
sgel->Address =
|
||||
cpu_to_le32((u32)buff_ptr_phys);
|
||||
}
|
||||
}
|
||||
buff_ptr += (sgel->FlagsLength & 0x00ffffff);
|
||||
buff_ptr_phys += (sgel->FlagsLength & 0x00ffffff);
|
||||
if ((sgel->FlagsLength &
|
||||
buff_ptr += (le32_to_cpu(sgel->FlagsLength) &
|
||||
0x00ffffff);
|
||||
buff_ptr_phys += (le32_to_cpu(sgel->FlagsLength) &
|
||||
0x00ffffff);
|
||||
if ((le32_to_cpu(sgel->FlagsLength) &
|
||||
(MPI2_SGE_FLAGS_END_OF_BUFFER
|
||||
<< MPI2_SGE_FLAGS_SHIFT)))
|
||||
goto eob_clone_chain;
|
||||
|
@ -1433,7 +1441,7 @@ _base_interrupt(int irq, void *bus_id)
|
|||
cpu_to_le32(reply);
|
||||
if (ioc->is_mcpu_endpoint)
|
||||
_base_clone_reply_to_sys_mem(ioc,
|
||||
cpu_to_le32(reply),
|
||||
reply,
|
||||
ioc->reply_free_host_index);
|
||||
writel(ioc->reply_free_host_index,
|
||||
&ioc->chip->ReplyFreeHostIndex);
|
||||
|
@ -3044,7 +3052,7 @@ mpt3sas_base_map_resources(struct MPT3SAS_ADAPTER *ioc)
|
|||
|
||||
for (i = 0; i < ioc->combined_reply_index_count; i++) {
|
||||
ioc->replyPostRegisterIndex[i] = (resource_size_t *)
|
||||
((u8 *)&ioc->chip->Doorbell +
|
||||
((u8 __force *)&ioc->chip->Doorbell +
|
||||
MPI25_SUP_REPLY_POST_HOST_INDEX_OFFSET +
|
||||
(i * MPT3_SUP_REPLY_POST_HOST_INDEX_REG_OFFSET));
|
||||
}
|
||||
|
@ -3339,7 +3347,7 @@ _base_mpi_ep_writeq(__u64 b, volatile void __iomem *addr,
|
|||
spinlock_t *writeq_lock)
|
||||
{
|
||||
unsigned long flags;
|
||||
__u64 data_out = cpu_to_le64(b);
|
||||
__u64 data_out = b;
|
||||
|
||||
spin_lock_irqsave(writeq_lock, flags);
|
||||
writel((u32)(data_out), addr);
|
||||
|
@ -3362,7 +3370,7 @@ _base_mpi_ep_writeq(__u64 b, volatile void __iomem *addr,
|
|||
static inline void
|
||||
_base_writeq(__u64 b, volatile void __iomem *addr, spinlock_t *writeq_lock)
|
||||
{
|
||||
writeq(cpu_to_le64(b), addr);
|
||||
writeq(b, addr);
|
||||
}
|
||||
#else
|
||||
static inline void
|
||||
|
@ -3389,7 +3397,7 @@ _base_put_smid_mpi_ep_scsi_io(struct MPT3SAS_ADAPTER *ioc, u16 smid, u16 handle)
|
|||
__le32 *mfp = (__le32 *)mpt3sas_base_get_msg_frame(ioc, smid);
|
||||
|
||||
_clone_sg_entries(ioc, (void *) mfp, smid);
|
||||
mpi_req_iomem = (void *)ioc->chip +
|
||||
mpi_req_iomem = (void __force *)ioc->chip +
|
||||
MPI_FRAME_START_OFFSET + (smid * ioc->request_sz);
|
||||
_base_clone_mpi_to_sys_mem(mpi_req_iomem, (void *)mfp,
|
||||
ioc->request_sz);
|
||||
|
@ -3473,7 +3481,8 @@ mpt3sas_base_put_smid_hi_priority(struct MPT3SAS_ADAPTER *ioc, u16 smid,
|
|||
|
||||
request_hdr = (MPI2RequestHeader_t *)mfp;
|
||||
/* TBD 256 is offset within sys register. */
|
||||
mpi_req_iomem = (void *)ioc->chip + MPI_FRAME_START_OFFSET
|
||||
mpi_req_iomem = (void __force *)ioc->chip
|
||||
+ MPI_FRAME_START_OFFSET
|
||||
+ (smid * ioc->request_sz);
|
||||
_base_clone_mpi_to_sys_mem(mpi_req_iomem, (void *)mfp,
|
||||
ioc->request_sz);
|
||||
|
@ -3542,7 +3551,7 @@ mpt3sas_base_put_smid_default(struct MPT3SAS_ADAPTER *ioc, u16 smid)
|
|||
|
||||
_clone_sg_entries(ioc, (void *) mfp, smid);
|
||||
/* TBD 256 is offset within sys register */
|
||||
mpi_req_iomem = (void *)ioc->chip +
|
||||
mpi_req_iomem = (void __force *)ioc->chip +
|
||||
MPI_FRAME_START_OFFSET + (smid * ioc->request_sz);
|
||||
_base_clone_mpi_to_sys_mem(mpi_req_iomem, (void *)mfp,
|
||||
ioc->request_sz);
|
||||
|
@ -5002,7 +5011,7 @@ _base_handshake_req_reply_wait(struct MPT3SAS_ADAPTER *ioc, int request_bytes,
|
|||
|
||||
/* send message 32-bits at a time */
|
||||
for (i = 0, failed = 0; i < request_bytes/4 && !failed; i++) {
|
||||
writel(cpu_to_le32(request[i]), &ioc->chip->Doorbell);
|
||||
writel((u32)(request[i]), &ioc->chip->Doorbell);
|
||||
if ((_base_wait_for_doorbell_ack(ioc, 5)))
|
||||
failed = 1;
|
||||
}
|
||||
|
@ -5023,7 +5032,7 @@ _base_handshake_req_reply_wait(struct MPT3SAS_ADAPTER *ioc, int request_bytes,
|
|||
}
|
||||
|
||||
/* read the first two 16-bits, it gives the total length of the reply */
|
||||
reply[0] = le16_to_cpu(readl(&ioc->chip->Doorbell)
|
||||
reply[0] = (u16)(readl(&ioc->chip->Doorbell)
|
||||
& MPI2_DOORBELL_DATA_MASK);
|
||||
writel(0, &ioc->chip->HostInterruptStatus);
|
||||
if ((_base_wait_for_doorbell_int(ioc, 5))) {
|
||||
|
@ -5032,7 +5041,7 @@ _base_handshake_req_reply_wait(struct MPT3SAS_ADAPTER *ioc, int request_bytes,
|
|||
ioc->name, __LINE__);
|
||||
return -EFAULT;
|
||||
}
|
||||
reply[1] = le16_to_cpu(readl(&ioc->chip->Doorbell)
|
||||
reply[1] = (u16)(readl(&ioc->chip->Doorbell)
|
||||
& MPI2_DOORBELL_DATA_MASK);
|
||||
writel(0, &ioc->chip->HostInterruptStatus);
|
||||
|
||||
|
@ -5046,7 +5055,7 @@ _base_handshake_req_reply_wait(struct MPT3SAS_ADAPTER *ioc, int request_bytes,
|
|||
if (i >= reply_bytes/2) /* overflow case */
|
||||
readl(&ioc->chip->Doorbell);
|
||||
else
|
||||
reply[i] = le16_to_cpu(readl(&ioc->chip->Doorbell)
|
||||
reply[i] = (u16)(readl(&ioc->chip->Doorbell)
|
||||
& MPI2_DOORBELL_DATA_MASK);
|
||||
writel(0, &ioc->chip->HostInterruptStatus);
|
||||
}
|
||||
|
@ -6172,7 +6181,7 @@ _base_make_ioc_operational(struct MPT3SAS_ADAPTER *ioc)
|
|||
ioc->reply_free[i] = cpu_to_le32(reply_address);
|
||||
if (ioc->is_mcpu_endpoint)
|
||||
_base_clone_reply_to_sys_mem(ioc,
|
||||
(__le32)reply_address, i);
|
||||
reply_address, i);
|
||||
}
|
||||
|
||||
/* initialize reply queues */
|
||||
|
|
|
@ -829,8 +829,8 @@ struct _sc_list {
|
|||
*/
|
||||
struct _event_ack_list {
|
||||
struct list_head list;
|
||||
u16 Event;
|
||||
u32 EventContext;
|
||||
U16 Event;
|
||||
U32 EventContext;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -297,7 +297,7 @@ mpt3sas_ctl_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index,
|
|||
nvme_error_reply =
|
||||
(Mpi26NVMeEncapsulatedErrorReply_t *)mpi_reply;
|
||||
sz = min_t(u32, NVME_ERROR_RESPONSE_SIZE,
|
||||
le32_to_cpu(nvme_error_reply->ErrorResponseCount));
|
||||
le16_to_cpu(nvme_error_reply->ErrorResponseCount));
|
||||
sense_data = mpt3sas_base_get_sense_buffer(ioc, smid);
|
||||
memcpy(ioc->ctl_cmds.sense, sense_data, sz);
|
||||
}
|
||||
|
@ -803,12 +803,13 @@ _ctl_do_mpt_command(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command karg,
|
|||
* Build the PRPs and set direction bits.
|
||||
* Send the request.
|
||||
*/
|
||||
nvme_encap_request->ErrorResponseBaseAddress = ioc->sense_dma &
|
||||
0xFFFFFFFF00000000;
|
||||
nvme_encap_request->ErrorResponseBaseAddress =
|
||||
cpu_to_le64(ioc->sense_dma & 0xFFFFFFFF00000000UL);
|
||||
nvme_encap_request->ErrorResponseBaseAddress |=
|
||||
(U64)mpt3sas_base_get_sense_buffer_dma(ioc, smid);
|
||||
cpu_to_le64(le32_to_cpu(
|
||||
mpt3sas_base_get_sense_buffer_dma(ioc, smid)));
|
||||
nvme_encap_request->ErrorResponseAllocationLength =
|
||||
NVME_ERROR_RESPONSE_SIZE;
|
||||
cpu_to_le16(NVME_ERROR_RESPONSE_SIZE);
|
||||
memset(ioc->ctl_cmds.sense, 0, NVME_ERROR_RESPONSE_SIZE);
|
||||
ioc->build_nvme_prp(ioc, smid, nvme_encap_request,
|
||||
data_out_dma, data_out_sz, data_in_dma, data_in_sz);
|
||||
|
|
|
@ -157,8 +157,8 @@ MODULE_PARM_DESC(prot_mask, " host protection capabilities mask, def=7 ");
|
|||
|
||||
|
||||
/* raid transport support */
|
||||
struct raid_template *mpt3sas_raid_template;
|
||||
struct raid_template *mpt2sas_raid_template;
|
||||
static struct raid_template *mpt3sas_raid_template;
|
||||
static struct raid_template *mpt2sas_raid_template;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -3725,7 +3725,7 @@ _scsih_tm_tr_complete(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index,
|
|||
if (!delayed_sc)
|
||||
return _scsih_check_for_pending_tm(ioc, smid);
|
||||
INIT_LIST_HEAD(&delayed_sc->list);
|
||||
delayed_sc->handle = mpi_request_tm->DevHandle;
|
||||
delayed_sc->handle = le16_to_cpu(mpi_request_tm->DevHandle);
|
||||
list_add_tail(&delayed_sc->list, &ioc->delayed_sc_list);
|
||||
dewtprintk(ioc, pr_info(MPT3SAS_FMT
|
||||
"DELAYED:sc:handle(0x%04x), (open)\n",
|
||||
|
@ -3903,8 +3903,8 @@ _scsih_tm_volume_tr_complete(struct MPT3SAS_ADAPTER *ioc, u16 smid,
|
|||
* Context - processed in interrupt context.
|
||||
*/
|
||||
static void
|
||||
_scsih_issue_delayed_event_ack(struct MPT3SAS_ADAPTER *ioc, u16 smid, u16 event,
|
||||
u32 event_context)
|
||||
_scsih_issue_delayed_event_ack(struct MPT3SAS_ADAPTER *ioc, u16 smid, U16 event,
|
||||
U32 event_context)
|
||||
{
|
||||
Mpi2EventAckRequest_t *ack_request;
|
||||
int i = smid - ioc->internal_smid;
|
||||
|
@ -3979,13 +3979,13 @@ _scsih_issue_delayed_sas_io_unit_ctrl(struct MPT3SAS_ADAPTER *ioc,
|
|||
|
||||
dewtprintk(ioc, pr_info(MPT3SAS_FMT
|
||||
"sc_send:handle(0x%04x), (open), smid(%d), cb(%d)\n",
|
||||
ioc->name, le16_to_cpu(handle), smid,
|
||||
ioc->name, handle, smid,
|
||||
ioc->tm_sas_control_cb_idx));
|
||||
mpi_request = mpt3sas_base_get_msg_frame(ioc, smid);
|
||||
memset(mpi_request, 0, sizeof(Mpi2SasIoUnitControlRequest_t));
|
||||
mpi_request->Function = MPI2_FUNCTION_SAS_IO_UNIT_CONTROL;
|
||||
mpi_request->Operation = MPI2_SAS_OP_REMOVE_DEVICE;
|
||||
mpi_request->DevHandle = handle;
|
||||
mpi_request->DevHandle = cpu_to_le16(handle);
|
||||
mpt3sas_base_put_smid_default(ioc, smid);
|
||||
}
|
||||
|
||||
|
@ -6108,7 +6108,7 @@ _scsih_add_device(struct MPT3SAS_ADAPTER *ioc, u16 handle, u8 phy_num,
|
|||
if (sas_device_pg0.EnclosureHandle) {
|
||||
encl_pg0_rc = mpt3sas_config_get_enclosure_pg0(ioc, &mpi_reply,
|
||||
&enclosure_pg0, MPI2_SAS_ENCLOS_PGAD_FORM_HANDLE,
|
||||
sas_device_pg0.EnclosureHandle);
|
||||
le16_to_cpu(sas_device_pg0.EnclosureHandle));
|
||||
if (encl_pg0_rc)
|
||||
pr_info(MPT3SAS_FMT
|
||||
"Enclosure Pg0 read failed for handle(0x%04x)\n",
|
||||
|
@ -6917,7 +6917,7 @@ _scsih_pcie_add_device(struct MPT3SAS_ADAPTER *ioc, u16 handle)
|
|||
if (pcie_device->enclosure_handle != 0)
|
||||
pcie_device->slot = le16_to_cpu(pcie_device_pg0.Slot);
|
||||
|
||||
if (le16_to_cpu(pcie_device_pg0.Flags) &
|
||||
if (le32_to_cpu(pcie_device_pg0.Flags) &
|
||||
MPI26_PCIEDEV0_FLAGS_ENCL_LEVEL_VALID) {
|
||||
pcie_device->enclosure_level = pcie_device_pg0.EnclosureLevel;
|
||||
memcpy(&pcie_device->connector_name[0],
|
||||
|
@ -8364,8 +8364,9 @@ Mpi2SasDevicePage0_t *sas_device_pg0)
|
|||
|
||||
spin_lock_irqsave(&ioc->sas_device_lock, flags);
|
||||
list_for_each_entry(sas_device, &ioc->sas_device_list, list) {
|
||||
if ((sas_device->sas_address == sas_device_pg0->SASAddress) &&
|
||||
(sas_device->slot == sas_device_pg0->Slot)) {
|
||||
if ((sas_device->sas_address == le64_to_cpu(
|
||||
sas_device_pg0->SASAddress)) && (sas_device->slot ==
|
||||
le16_to_cpu(sas_device_pg0->Slot))) {
|
||||
sas_device->responding = 1;
|
||||
starget = sas_device->starget;
|
||||
if (starget && starget->hostdata) {
|
||||
|
@ -8377,7 +8378,7 @@ Mpi2SasDevicePage0_t *sas_device_pg0)
|
|||
if (starget) {
|
||||
starget_printk(KERN_INFO, starget,
|
||||
"handle(0x%04x), sas_addr(0x%016llx)\n",
|
||||
sas_device_pg0->DevHandle,
|
||||
le16_to_cpu(sas_device_pg0->DevHandle),
|
||||
(unsigned long long)
|
||||
sas_device->sas_address);
|
||||
|
||||
|
@ -8389,7 +8390,7 @@ Mpi2SasDevicePage0_t *sas_device_pg0)
|
|||
sas_device->enclosure_logical_id,
|
||||
sas_device->slot);
|
||||
}
|
||||
if (sas_device_pg0->Flags &
|
||||
if (le16_to_cpu(sas_device_pg0->Flags) &
|
||||
MPI2_SAS_DEVICE0_FLAGS_ENCL_LEVEL_VALID) {
|
||||
sas_device->enclosure_level =
|
||||
sas_device_pg0->EnclosureLevel;
|
||||
|
@ -8403,14 +8404,16 @@ Mpi2SasDevicePage0_t *sas_device_pg0)
|
|||
_scsih_get_enclosure_logicalid_chassis_slot(ioc,
|
||||
sas_device_pg0, sas_device);
|
||||
|
||||
if (sas_device->handle == sas_device_pg0->DevHandle)
|
||||
if (sas_device->handle == le16_to_cpu(
|
||||
sas_device_pg0->DevHandle))
|
||||
goto out;
|
||||
pr_info("\thandle changed from(0x%04x)!!!\n",
|
||||
sas_device->handle);
|
||||
sas_device->handle = sas_device_pg0->DevHandle;
|
||||
sas_device->handle = le16_to_cpu(
|
||||
sas_device_pg0->DevHandle);
|
||||
if (sas_target_priv_data)
|
||||
sas_target_priv_data->handle =
|
||||
sas_device_pg0->DevHandle;
|
||||
le16_to_cpu(sas_device_pg0->DevHandle);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
@ -8449,15 +8452,10 @@ _scsih_search_responding_sas_devices(struct MPT3SAS_ADAPTER *ioc)
|
|||
MPI2_IOCSTATUS_MASK;
|
||||
if (ioc_status != MPI2_IOCSTATUS_SUCCESS)
|
||||
break;
|
||||
handle = sas_device_pg0.DevHandle =
|
||||
le16_to_cpu(sas_device_pg0.DevHandle);
|
||||
handle = le16_to_cpu(sas_device_pg0.DevHandle);
|
||||
device_info = le32_to_cpu(sas_device_pg0.DeviceInfo);
|
||||
if (!(_scsih_is_end_device(device_info)))
|
||||
continue;
|
||||
sas_device_pg0.SASAddress =
|
||||
le64_to_cpu(sas_device_pg0.SASAddress);
|
||||
sas_device_pg0.Slot = le16_to_cpu(sas_device_pg0.Slot);
|
||||
sas_device_pg0.Flags = le16_to_cpu(sas_device_pg0.Flags);
|
||||
_scsih_mark_responding_sas_device(ioc, &sas_device_pg0);
|
||||
}
|
||||
|
||||
|
@ -8487,8 +8485,9 @@ _scsih_mark_responding_pcie_device(struct MPT3SAS_ADAPTER *ioc,
|
|||
|
||||
spin_lock_irqsave(&ioc->pcie_device_lock, flags);
|
||||
list_for_each_entry(pcie_device, &ioc->pcie_device_list, list) {
|
||||
if ((pcie_device->wwid == pcie_device_pg0->WWID) &&
|
||||
(pcie_device->slot == pcie_device_pg0->Slot)) {
|
||||
if ((pcie_device->wwid == le64_to_cpu(pcie_device_pg0->WWID))
|
||||
&& (pcie_device->slot == le16_to_cpu(
|
||||
pcie_device_pg0->Slot))) {
|
||||
pcie_device->responding = 1;
|
||||
starget = pcie_device->starget;
|
||||
if (starget && starget->hostdata) {
|
||||
|
@ -8523,14 +8522,16 @@ _scsih_mark_responding_pcie_device(struct MPT3SAS_ADAPTER *ioc,
|
|||
pcie_device->connector_name[0] = '\0';
|
||||
}
|
||||
|
||||
if (pcie_device->handle == pcie_device_pg0->DevHandle)
|
||||
if (pcie_device->handle == le16_to_cpu(
|
||||
pcie_device_pg0->DevHandle))
|
||||
goto out;
|
||||
pr_info("\thandle changed from(0x%04x)!!!\n",
|
||||
pcie_device->handle);
|
||||
pcie_device->handle = pcie_device_pg0->DevHandle;
|
||||
pcie_device->handle = le16_to_cpu(
|
||||
pcie_device_pg0->DevHandle);
|
||||
if (sas_target_priv_data)
|
||||
sas_target_priv_data->handle =
|
||||
pcie_device_pg0->DevHandle;
|
||||
le16_to_cpu(pcie_device_pg0->DevHandle);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
@ -8579,10 +8580,6 @@ _scsih_search_responding_pcie_devices(struct MPT3SAS_ADAPTER *ioc)
|
|||
device_info = le32_to_cpu(pcie_device_pg0.DeviceInfo);
|
||||
if (!(_scsih_is_nvme_device(device_info)))
|
||||
continue;
|
||||
pcie_device_pg0.WWID = le64_to_cpu(pcie_device_pg0.WWID),
|
||||
pcie_device_pg0.Slot = le16_to_cpu(pcie_device_pg0.Slot);
|
||||
pcie_device_pg0.Flags = le32_to_cpu(pcie_device_pg0.Flags);
|
||||
pcie_device_pg0.DevHandle = handle;
|
||||
_scsih_mark_responding_pcie_device(ioc, &pcie_device_pg0);
|
||||
}
|
||||
out:
|
||||
|
|
|
@ -177,7 +177,8 @@ mpt3sas_init_warpdrive_properties(struct MPT3SAS_ADAPTER *ioc,
|
|||
if (mpt3sas_config_get_phys_disk_pg0(ioc, &mpi_reply,
|
||||
&pd_pg0, MPI2_PHYSDISK_PGAD_FORM_PHYSDISKNUM,
|
||||
vol_pg0->PhysDisk[count].PhysDiskNum) ||
|
||||
pd_pg0.DevHandle == MPT3SAS_INVALID_DEVICE_HANDLE) {
|
||||
le16_to_cpu(pd_pg0.DevHandle) ==
|
||||
MPT3SAS_INVALID_DEVICE_HANDLE) {
|
||||
pr_info(MPT3SAS_FMT "WarpDrive : Direct IO is "
|
||||
"disabled for the drive with handle(0x%04x) member"
|
||||
"handle retrieval failed for member number=%d\n",
|
||||
|
|
Загрузка…
Ссылка в новой задаче