Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1706237
| From | Suganath Prabu S <suganath-prabu.subramani@broadcom.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH v3 11/13] mpt3sas: NVMe drive support for BTDHMAPPING ioctl command and log info |
| Date | 2017-08-08 11:10 +0200 |
| Message-ID | <uc8Gv-5Tu-35@gated-at.bofh.it> (permalink) |
| References | <uc8Gu-5Tu-9@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
* Added debug prints for pcie devices in ioctl debug path. Which
will be helpful for debugging.
* Added PCIe device support for ioctl BTDHMAPPING ioctl.
Signed-off-by: Chaitra P B <chaitra.basappa@broadcom.com>
Signed-off-by: Suganath Prabu S <suganath-prabu.subramani@broadcom.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
---
drivers/scsi/mpt3sas/mpt3sas_ctl.c | 88 +++++++++++++++++++++++------------
1 files changed, 58 insertions(+), 30 deletions(-)
diff --git a/drivers/scsi/mpt3sas/mpt3sas_ctl.c b/drivers/scsi/mpt3sas/mpt3sas_ctl.c
index 6362d60..99147ad 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_ctl.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_ctl.c
@@ -79,32 +79,6 @@ enum block_state {
};
/**
- * _ctl_sas_device_find_by_handle - sas device search
- * @ioc: per adapter object
- * @handle: sas device handle (assigned by firmware)
- * Context: Calling function should acquire ioc->sas_device_lock
- *
- * This searches for sas_device based on sas_address, then return sas_device
- * object.
- */
-static struct _sas_device *
-_ctl_sas_device_find_by_handle(struct MPT3SAS_ADAPTER *ioc, u16 handle)
-{
- struct _sas_device *sas_device, *r;
-
- r = NULL;
- list_for_each_entry(sas_device, &ioc->sas_device_list, list) {
- if (sas_device->handle != handle)
- continue;
- r = sas_device;
- goto out;
- }
-
- out:
- return r;
-}
-
-/**
* _ctl_display_some_debug - debug routine
* @ioc: per adapter object
* @smid: system request message index
@@ -229,10 +203,9 @@ _ctl_display_some_debug(struct MPT3SAS_ADAPTER *ioc, u16 smid,
Mpi2SCSIIOReply_t *scsi_reply =
(Mpi2SCSIIOReply_t *)mpi_reply;
struct _sas_device *sas_device = NULL;
- unsigned long flags;
+ struct _pcie_device *pcie_device = NULL;
- spin_lock_irqsave(&ioc->sas_device_lock, flags);
- sas_device = _ctl_sas_device_find_by_handle(ioc,
+ sas_device = mpt3sas_get_sdev_by_handle(ioc,
le16_to_cpu(scsi_reply->DevHandle));
if (sas_device) {
pr_warn(MPT3SAS_FMT "\tsas_address(0x%016llx), phy(%d)\n",
@@ -242,8 +215,25 @@ _ctl_display_some_debug(struct MPT3SAS_ADAPTER *ioc, u16 smid,
"\tenclosure_logical_id(0x%016llx), slot(%d)\n",
ioc->name, (unsigned long long)
sas_device->enclosure_logical_id, sas_device->slot);
+ sas_device_put(sas_device);
+ }
+ if (!sas_device) {
+ pcie_device = mpt3sas_get_pdev_by_handle(ioc,
+ le16_to_cpu(scsi_reply->DevHandle));
+ if (pcie_device) {
+ pr_warn(MPT3SAS_FMT
+ "\tWWID(0x%016llx), port(%d)\n", ioc->name,
+ (unsigned long long)pcie_device->wwid,
+ pcie_device->port_num);
+ if (pcie_device->enclosure_handle != 0)
+ pr_warn(MPT3SAS_FMT
+ "\tenclosure_logical_id(0x%016llx), slot(%d)\n",
+ ioc->name, (unsigned long long)
+ pcie_device->enclosure_logical_id,
+ pcie_device->slot);
+ pcie_device_put(pcie_device);
+ }
}
- spin_unlock_irqrestore(&ioc->sas_device_lock, flags);
if (scsi_reply->SCSIState || scsi_reply->SCSIStatus)
pr_info(MPT3SAS_FMT
"\tscsi_state(0x%02x), scsi_status"
@@ -1353,6 +1343,42 @@ _ctl_btdh_search_sas_device(struct MPT3SAS_ADAPTER *ioc,
}
/**
+ * _ctl_btdh_search_pcie_device - searching for pcie device
+ * @ioc: per adapter object
+ * @btdh: btdh ioctl payload
+ */
+static int
+_ctl_btdh_search_pcie_device(struct MPT3SAS_ADAPTER *ioc,
+ struct mpt3_ioctl_btdh_mapping *btdh)
+{
+ struct _pcie_device *pcie_device;
+ unsigned long flags;
+ int rc = 0;
+
+ if (list_empty(&ioc->pcie_device_list))
+ return rc;
+
+ spin_lock_irqsave(&ioc->pcie_device_lock, flags);
+ list_for_each_entry(pcie_device, &ioc->pcie_device_list, list) {
+ if (btdh->bus == 0xFFFFFFFF && btdh->id == 0xFFFFFFFF &&
+ btdh->handle == pcie_device->handle) {
+ btdh->bus = pcie_device->channel;
+ btdh->id = pcie_device->id;
+ rc = 1;
+ goto out;
+ } else if (btdh->bus == pcie_device->channel && btdh->id ==
+ pcie_device->id && btdh->handle == 0xFFFF) {
+ btdh->handle = pcie_device->handle;
+ rc = 1;
+ goto out;
+ }
+ }
+ out:
+ spin_unlock_irqrestore(&ioc->pcie_device_lock, flags);
+ return rc;
+}
+
+/**
* _ctl_btdh_search_raid_device - searching for raid device
* @ioc: per adapter object
* @btdh: btdh ioctl payload
@@ -1410,6 +1436,8 @@ _ctl_btdh_mapping(struct MPT3SAS_ADAPTER *ioc, void __user *arg)
rc = _ctl_btdh_search_sas_device(ioc, &karg);
if (!rc)
+ rc = _ctl_btdh_search_pcie_device(ioc, &karg);
+ if (!rc)
_ctl_btdh_search_raid_device(ioc, &karg);
if (copy_to_user(arg, &karg, sizeof(karg))) {
--
1.7.1
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH v3 00/13] mpt3sas driver NVMe support: Suganath Prabu S <suganath-prabu.subramani@broadcom.com> - 2017-08-08 11:10 +0200
[PATCH v3 02/13] mpt3sas: Add nvme device support in slave alloc, target alloc and probe Suganath Prabu S <suganath-prabu.subramani@broadcom.com> - 2017-08-08 11:10 +0200
[PATCH v3 07/13] mpt3sas: Handle NVMe PCIe device related events generated from firmware. Suganath Prabu S <suganath-prabu.subramani@broadcom.com> - 2017-08-08 11:10 +0200
[PATCH v3 13/13] mpt3sas: Update mpt3sas driver version. Suganath Prabu S <suganath-prabu.subramani@broadcom.com> - 2017-08-08 11:10 +0200
[PATCH v3 04/13] mpt3sas: Added support for nvme encapsulated request message. Suganath Prabu S <suganath-prabu.subramani@broadcom.com> - 2017-08-08 11:10 +0200
[PATCH v3 06/13] mpt3sas: API's to remove nvme drive from sml Suganath Prabu S <suganath-prabu.subramani@broadcom.com> - 2017-08-08 11:10 +0200
[PATCH v3 11/13] mpt3sas: NVMe drive support for BTDHMAPPING ioctl command and log info Suganath Prabu S <suganath-prabu.subramani@broadcom.com> - 2017-08-08 11:10 +0200
[PATCH v3 03/13] mpt3sas: SGL to PRP Translation for I/Os to NVMe devices Suganath Prabu S <suganath-prabu.subramani@broadcom.com> - 2017-08-08 11:10 +0200
Re: [PATCH v3 03/13] mpt3sas: SGL to PRP Translation for I/Os to NVMe devices "Martin K. Petersen" <martin.petersen@oracle.com> - 2017-08-08 18:20 +0200
Re: [PATCH v3 03/13] mpt3sas: SGL to PRP Translation for I/Os to NVMe devices Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com> - 2017-08-09 14:40 +0200
[PATCH v3 10/13] mpt3as: Add-Task-management-debug-info-for-NVMe-drives. Suganath Prabu S <suganath-prabu.subramani@broadcom.com> - 2017-08-08 11:10 +0200
[PATCH v3 08/13] mpt3sas: Set NVMe device queue depth as 128 Suganath Prabu S <suganath-prabu.subramani@broadcom.com> - 2017-08-08 11:10 +0200
[PATCH v3 12/13] mpt3sas: Fix nvme drives checking for tlr. Suganath Prabu S <suganath-prabu.subramani@broadcom.com> - 2017-08-08 11:10 +0200
Re: [PATCH v3 01/13] mpt3sas: Update MPI Header J Freyensee <james_p_freyensee@linux.intel.com> - 2017-08-08 23:20 +0200
csiph-web