* [PATCH] mpt3sas: Cache enclosure pages during enclosure add.
@ 2018-03-20 10:15 Chaitra P B
2018-03-20 21:06 ` kbuild test robot
2018-03-20 21:06 ` kbuild test robot
0 siblings, 2 replies; 11+ messages in thread
From: Chaitra P B @ 2018-03-20 10:15 UTC (permalink / raw)
To: linux-scsi, stable
Cc: Bart.VanAssche, Sathya.Prakash, suganath-prabu.subramani, Chaitra P B
In function _scsih_add_device,
for each device connected to a enclosure, driver reads the
enclosure page.(To get details like enclosure handle,
enclosure logical ID, enclosure level etc.)
With this patch, Instead of reading enclosure page everytime,
driver maintains a list for enclosure device.(During enclosure
add event, enclosure device is added to the list and removed
from the list on delete events). and uses the enclosure
page from the list.
1) Enclosure page is read during enclosure add event and
added to the enclosure device list.
2) Introduced function "mpt3sas_scsih_enclosure_find_by_handle",
to get enclosure device and "mpt3sas_free_enclosure_list"
frees the list.
3) And "_scsih_create_enclosure_list_after_reset" reconstructs
the list after reset.
Signed-off-by: Chaitra P B <chaitra.basappa@broadcom.com>
Signed-off-by: Suganath Prabu S <suganath-prabu.subramani@broadcom.com>
---
drivers/scsi/mpt3sas/mpt3sas_base.c | 22 +++
drivers/scsi/mpt3sas/mpt3sas_base.h | 14 ++
drivers/scsi/mpt3sas/mpt3sas_scsih.c | 299 +++++++++++++++++++++++------------
3 files changed, 238 insertions(+), 97 deletions(-)
diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c
index 0a0e7aa..fa438e7 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_base.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_base.c
@@ -4082,6 +4082,27 @@ _base_static_config_pages(struct MPT3SAS_ADAPTER *ioc)
}
/**
+ * mpt3sas_free_enclosure_list - release memory
+ * @ioc: per adapter object
+ *
+ * Free memory allocated during encloure add.
+ *
+ * Return nothing.
+ */
+void
+mpt3sas_free_enclosure_list(struct MPT3SAS_ADAPTER *ioc)
+{
+ struct _enclosure_node *enclosure_dev, *enclosure_dev_next;
+
+ /* Free enclosure list */
+ list_for_each_entry_safe(enclosure_dev,
+ enclosure_dev_next, &ioc->enclosure_list, list) {
+ list_del(&enclosure_dev->list);
+ kfree(enclosure_dev);
+ }
+}
+
+/**
* _base_release_memory_pools - release memory
* @ioc: per adapter object
*
@@ -6555,6 +6576,7 @@ mpt3sas_base_detach(struct MPT3SAS_ADAPTER *ioc)
mpt3sas_base_stop_watchdog(ioc);
mpt3sas_base_free_resources(ioc);
_base_release_memory_pools(ioc);
+ mpt3sas_free_enclosure_list(ioc);
pci_set_drvdata(ioc->pdev, NULL);
kfree(ioc->cpu_msix_table);
if (ioc->is_warpdrive)
diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.h b/drivers/scsi/mpt3sas/mpt3sas_base.h
index 4de0251..35252c6 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_base.h
+++ b/drivers/scsi/mpt3sas/mpt3sas_base.h
@@ -741,6 +741,17 @@ struct _sas_node {
struct list_head sas_port_list;
};
+
+/**
+ * struct _enclosure_node - enclosure information
+ * @list: list of enclosures
+ * @pg0: enclosure pg0;
+ */
+struct _enclosure_node {
+ struct list_head list;
+ Mpi2SasEnclosurePage0_t pg0;
+};
+
/**
* enum reset_type - reset state
* @FORCE_BIG_HAMMER: issue diagnostic reset
@@ -1009,6 +1020,7 @@ typedef void (*MPT3SAS_FLUSH_RUNNING_CMDS)(struct MPT3SAS_ADAPTER *ioc);
* @iounit_pg8: static iounit page 8
* @sas_hba: sas host object
* @sas_expander_list: expander object list
+ * @enclosure_list: enclosure object list
* @sas_node_lock:
* @sas_device_list: sas device object list
* @sas_device_init_list: sas device object list (used only at init time)
@@ -1214,6 +1226,7 @@ struct MPT3SAS_ADAPTER {
/* sas hba, expander, and device list */
struct _sas_node sas_hba;
struct list_head sas_expander_list;
+ struct list_head enclosure_list;
spinlock_t sas_node_lock;
struct list_head sas_device_list;
struct list_head sas_device_init_list;
@@ -1384,6 +1397,7 @@ int mpt3sas_base_attach(struct MPT3SAS_ADAPTER *ioc);
void mpt3sas_base_detach(struct MPT3SAS_ADAPTER *ioc);
int mpt3sas_base_map_resources(struct MPT3SAS_ADAPTER *ioc);
void mpt3sas_base_free_resources(struct MPT3SAS_ADAPTER *ioc);
+void mpt3sas_free_enclosure_list(struct MPT3SAS_ADAPTER *ioc);
int mpt3sas_base_hard_reset_handler(struct MPT3SAS_ADAPTER *ioc,
enum reset_type type);
diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
index 50efccd..2c03873 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
@@ -1362,6 +1362,30 @@ mpt3sas_scsih_expander_find_by_handle(struct MPT3SAS_ADAPTER *ioc, u16 handle)
}
/**
+ * mpt3sas_scsih_enclosure_find_by_handle - exclosure device search
+ * @ioc: per adapter object
+ * @handle: enclosure handle (assigned by firmware)
+ * Context: Calling function should acquire ioc->sas_device_lock
+ *
+ * This searches for enclosure device based on handle, then returns the
+ * enclosure object.
+ */
+struct _enclosure_node *
+mpt3sas_scsih_enclosure_find_by_handle(struct MPT3SAS_ADAPTER *ioc, u16 handle)
+{
+ struct _enclosure_node *enclosure_dev, *r;
+
+ r = NULL;
+ list_for_each_entry(enclosure_dev, &ioc->enclosure_list, list) {
+ if (le16_to_cpu(enclosure_dev->pg0.EnclosureHandle) != handle)
+ continue;
+ r = enclosure_dev;
+ goto out;
+ }
+out:
+ return r;
+}
+/**
* mpt3sas_scsih_expander_find_by_sas_address - expander device search
* @ioc: per adapter object
* @sas_address: sas address
@@ -5615,10 +5639,10 @@ static int
_scsih_expander_add(struct MPT3SAS_ADAPTER *ioc, u16 handle)
{
struct _sas_node *sas_expander;
+ struct _enclosure_node *enclosure_dev;
Mpi2ConfigReply_t mpi_reply;
Mpi2ExpanderPage0_t expander_pg0;
Mpi2ExpanderPage1_t expander_pg1;
- Mpi2SasEnclosurePage0_t enclosure_pg0;
u32 ioc_status;
u16 parent_handle;
u64 sas_address, sas_address_parent = 0;
@@ -5740,11 +5764,12 @@ _scsih_expander_add(struct MPT3SAS_ADAPTER *ioc, u16 handle)
}
if (sas_expander->enclosure_handle) {
- if (!(mpt3sas_config_get_enclosure_pg0(ioc, &mpi_reply,
- &enclosure_pg0, MPI2_SAS_ENCLOS_PGAD_FORM_HANDLE,
- sas_expander->enclosure_handle)))
+ enclosure_dev =
+ mpt3sas_scsih_enclosure_find_by_handle(ioc,
+ sas_expander->enclosure_handle);
+ if (enclosure_dev)
sas_expander->enclosure_logical_id =
- le64_to_cpu(enclosure_pg0.EnclosureLogicalID);
+ le64_to_cpu(enclosure_dev->pg0.EnclosureLogicalID);
}
_scsih_expander_node_add(ioc, sas_expander);
@@ -5888,52 +5913,6 @@ _scsih_check_access_status(struct MPT3SAS_ADAPTER *ioc, u64 sas_address,
}
/**
- * _scsih_get_enclosure_logicalid_chassis_slot - get device's
- * EnclosureLogicalID and ChassisSlot information.
- * @ioc: per adapter object
- * @sas_device_pg0: SAS device page0
- * @sas_device: per sas device object
- *
- * Returns nothing.
- */
-static void
-_scsih_get_enclosure_logicalid_chassis_slot(struct MPT3SAS_ADAPTER *ioc,
- Mpi2SasDevicePage0_t *sas_device_pg0, struct _sas_device *sas_device)
-{
- Mpi2ConfigReply_t mpi_reply;
- Mpi2SasEnclosurePage0_t enclosure_pg0;
-
- if (!sas_device_pg0 || !sas_device)
- return;
-
- sas_device->enclosure_handle =
- le16_to_cpu(sas_device_pg0->EnclosureHandle);
- sas_device->is_chassis_slot_valid = 0;
-
- if (!le16_to_cpu(sas_device_pg0->EnclosureHandle))
- return;
-
- if (mpt3sas_config_get_enclosure_pg0(ioc, &mpi_reply,
- &enclosure_pg0, MPI2_SAS_ENCLOS_PGAD_FORM_HANDLE,
- le16_to_cpu(sas_device_pg0->EnclosureHandle))) {
- pr_err(MPT3SAS_FMT
- "Enclosure Pg0 read failed for handle(0x%04x)\n",
- ioc->name, le16_to_cpu(sas_device_pg0->EnclosureHandle));
- return;
- }
-
- sas_device->enclosure_logical_id =
- le64_to_cpu(enclosure_pg0.EnclosureLogicalID);
-
- if (le16_to_cpu(enclosure_pg0.Flags) &
- MPI2_SAS_ENCLS0_FLAGS_CHASSIS_SLOT_VALID) {
- sas_device->is_chassis_slot_valid = 1;
- sas_device->chassis_slot = enclosure_pg0.ChassisSlot;
- }
-}
-
-
-/**
* _scsih_check_device - checking device responsiveness
* @ioc: per adapter object
* @parent_sas_address: sas address of parent expander or sas host
@@ -5950,6 +5929,7 @@ _scsih_check_device(struct MPT3SAS_ADAPTER *ioc,
Mpi2ConfigReply_t mpi_reply;
Mpi2SasDevicePage0_t sas_device_pg0;
struct _sas_device *sas_device;
+ struct _enclosure_node *enclosure_dev = NULL;
u32 ioc_status;
unsigned long flags;
u64 sas_address;
@@ -6004,8 +5984,21 @@ _scsih_check_device(struct MPT3SAS_ADAPTER *ioc,
sas_device->connector_name[0] = '\0';
}
- _scsih_get_enclosure_logicalid_chassis_slot(ioc,
- &sas_device_pg0, sas_device);
+ sas_device->enclosure_handle =
+ le16_to_cpu(sas_device_pg0.EnclosureHandle);
+ sas_device->is_chassis_slot_valid = 0;
+ enclosure_dev = mpt3sas_scsih_enclosure_find_by_handle(ioc,
+ sas_device->enclosure_handle);
+ if (enclosure_dev) {
+ sas_device->enclosure_logical_id =
+ le64_to_cpu(enclosure_dev->pg0.EnclosureLogicalID);
+ if (le16_to_cpu(enclosure_dev->pg0.Flags) &
+ MPI2_SAS_ENCLS0_FLAGS_CHASSIS_SLOT_VALID) {
+ sas_device->is_chassis_slot_valid = 1;
+ sas_device->chassis_slot =
+ enclosure_dev->pg0.ChassisSlot;
+ }
+ }
}
/* check if device is present */
@@ -6052,12 +6045,11 @@ _scsih_add_device(struct MPT3SAS_ADAPTER *ioc, u16 handle, u8 phy_num,
{
Mpi2ConfigReply_t mpi_reply;
Mpi2SasDevicePage0_t sas_device_pg0;
- Mpi2SasEnclosurePage0_t enclosure_pg0;
struct _sas_device *sas_device;
+ struct _enclosure_node *enclosure_dev = NULL;
u32 ioc_status;
u64 sas_address;
u32 device_info;
- int encl_pg0_rc = -1;
if ((mpt3sas_config_get_sas_device_pg0(ioc, &mpi_reply, &sas_device_pg0,
MPI2_SAS_DEVICE_PGAD_FORM_HANDLE, handle))) {
@@ -6103,13 +6095,13 @@ _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);
- if (encl_pg0_rc)
- pr_info(MPT3SAS_FMT
- "Enclosure Pg0 read failed for handle(0x%04x)\n",
- ioc->name, sas_device_pg0.EnclosureHandle);
+ enclosure_dev =
+ mpt3sas_scsih_enclosure_find_by_handle(ioc,
+ sas_device_pg0.EnclosureHandle);
+ if (enclosure_dev == NULL)
+ pr_info(MPT3SAS_FMT "Enclosure handle(0x%04x)"
+ "doesn't match with enclosure device!\n",
+ ioc->name, sas_device_pg0.EnclosureHandle);
}
sas_device = kzalloc(sizeof(struct _sas_device),
@@ -6149,18 +6141,16 @@ _scsih_add_device(struct MPT3SAS_ADAPTER *ioc, u16 handle, u8 phy_num,
sas_device->enclosure_level = 0;
sas_device->connector_name[0] = '\0';
}
-
- /* get enclosure_logical_id & chassis_slot */
+ /* get enclosure_logical_id & chassis_slot*/
sas_device->is_chassis_slot_valid = 0;
- if (encl_pg0_rc == 0) {
+ if (enclosure_dev) {
sas_device->enclosure_logical_id =
- le64_to_cpu(enclosure_pg0.EnclosureLogicalID);
-
- if (le16_to_cpu(enclosure_pg0.Flags) &
+ le64_to_cpu(enclosure_dev->pg0.EnclosureLogicalID);
+ if (le16_to_cpu(enclosure_dev->pg0.Flags) &
MPI2_SAS_ENCLS0_FLAGS_CHASSIS_SLOT_VALID) {
sas_device->is_chassis_slot_valid = 1;
sas_device->chassis_slot =
- enclosure_pg0.ChassisSlot;
+ enclosure_dev->pg0.ChassisSlot;
}
}
@@ -6842,8 +6832,8 @@ _scsih_pcie_add_device(struct MPT3SAS_ADAPTER *ioc, u16 handle)
Mpi26PCIeDevicePage0_t pcie_device_pg0;
Mpi26PCIeDevicePage2_t pcie_device_pg2;
Mpi2ConfigReply_t mpi_reply;
- Mpi2SasEnclosurePage0_t enclosure_pg0;
struct _pcie_device *pcie_device;
+ struct _enclosure_node *enclosure_dev;
u32 pcie_device_type;
u32 ioc_status;
u64 wwid;
@@ -6925,13 +6915,14 @@ _scsih_pcie_add_device(struct MPT3SAS_ADAPTER *ioc, u16 handle)
}
/* get enclosure_logical_id */
- if (pcie_device->enclosure_handle &&
- !(mpt3sas_config_get_enclosure_pg0(ioc, &mpi_reply,
- &enclosure_pg0, MPI2_SAS_ENCLOS_PGAD_FORM_HANDLE,
- pcie_device->enclosure_handle)))
- pcie_device->enclosure_logical_id =
- le64_to_cpu(enclosure_pg0.EnclosureLogicalID);
-
+ if (pcie_device->enclosure_handle) {
+ enclosure_dev =
+ mpt3sas_scsih_enclosure_find_by_handle(ioc,
+ pcie_device->enclosure_handle);
+ if (enclosure_dev)
+ pcie_device->enclosure_logical_id =
+ le64_to_cpu(enclosure_dev->pg0.EnclosureLogicalID);
+ }
/* TODO -- Add device name once FW supports it */
if (mpt3sas_config_get_pcie_device_pg2(ioc, &mpi_reply,
&pcie_device_pg2, MPI2_SAS_DEVICE_PGAD_FORM_HANDLE, handle)) {
@@ -7317,10 +7308,61 @@ static void
_scsih_sas_enclosure_dev_status_change_event(struct MPT3SAS_ADAPTER *ioc,
struct fw_event_work *fw_event)
{
+ Mpi2ConfigReply_t mpi_reply;
+ struct _enclosure_node *enclosure_dev = NULL;
+ Mpi2EventDataSasEnclDevStatusChange_t *event_data =
+ (Mpi2EventDataSasEnclDevStatusChange_t *)fw_event->event_data;
+ int rc;
+
if (ioc->logging_level & MPT_DEBUG_EVENT_WORK_TASK)
_scsih_sas_enclosure_dev_status_change_event_debug(ioc,
(Mpi2EventDataSasEnclDevStatusChange_t *)
fw_event->event_data);
+ if (ioc->shost_recovery)
+ return;
+
+ event_data->EnclosureHandle = le16_to_cpu(event_data->EnclosureHandle);
+
+ if (event_data->EnclosureHandle)
+ enclosure_dev =
+ mpt3sas_scsih_enclosure_find_by_handle(ioc,
+ event_data->EnclosureHandle);
+ switch (event_data->ReasonCode) {
+ case MPI2_EVENT_SAS_ENCL_RC_ADDED:
+ if (!enclosure_dev) {
+ enclosure_dev =
+ kzalloc(sizeof(struct _enclosure_node),
+ GFP_KERNEL);
+ if (!enclosure_dev) {
+ pr_info(MPT3SAS_FMT
+ "failure at %s:%d/%s()!\n", ioc->name,
+ __FILE__, __LINE__, __func__);
+ return;
+ }
+ rc = mpt3sas_config_get_enclosure_pg0(ioc, &mpi_reply,
+ &enclosure_dev->pg0,
+ MPI2_SAS_ENCLOS_PGAD_FORM_HANDLE,
+ event_data->EnclosureHandle);
+
+ if (rc || (le16_to_cpu(mpi_reply.IOCStatus) &
+ MPI2_IOCSTATUS_MASK)) {
+ kfree(enclosure_dev);
+ return;
+ }
+
+ list_add_tail(&enclosure_dev->list,
+ &ioc->enclosure_list);
+ }
+ break;
+ case MPI2_EVENT_SAS_ENCL_RC_NOT_RESPONDING:
+ if (enclosure_dev) {
+ list_del(&enclosure_dev->list);
+ kfree(enclosure_dev);
+ }
+ break;
+ default:
+ break;
+ }
}
/**
@@ -8357,8 +8399,18 @@ Mpi2SasDevicePage0_t *sas_device_pg0)
struct MPT3SAS_TARGET *sas_target_priv_data = NULL;
struct scsi_target *starget;
struct _sas_device *sas_device = NULL;
+ struct _enclosure_node *enclosure_dev = NULL;
unsigned long flags;
+ if (sas_device_pg0->EnclosureHandle) {
+ enclosure_dev =
+ mpt3sas_scsih_enclosure_find_by_handle(ioc,
+ sas_device_pg0->EnclosureHandle);
+ if (enclosure_dev == NULL)
+ pr_info(MPT3SAS_FMT "Enclosure handle(0x%04x)"
+ "doesn't match with enclosure device!\n",
+ ioc->name, sas_device_pg0->EnclosureHandle);
+ }
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) &&
@@ -8397,8 +8449,19 @@ Mpi2SasDevicePage0_t *sas_device_pg0)
sas_device->connector_name[0] = '\0';
}
- _scsih_get_enclosure_logicalid_chassis_slot(ioc,
- sas_device_pg0, sas_device);
+ sas_device->enclosure_handle =
+ le16_to_cpu(sas_device_pg0->EnclosureHandle);
+ sas_device->is_chassis_slot_valid = 0;
+ if (enclosure_dev) {
+ sas_device->enclosure_logical_id = le64_to_cpu(
+ enclosure_dev->pg0.EnclosureLogicalID);
+ if (le16_to_cpu(enclosure_dev->pg0.Flags) &
+ MPI2_SAS_ENCLS0_FLAGS_CHASSIS_SLOT_VALID) {
+ sas_device->is_chassis_slot_valid = 1;
+ sas_device->chassis_slot =
+ enclosure_dev->pg0.ChassisSlot;
+ }
+ }
if (sas_device->handle == sas_device_pg0->DevHandle)
goto out;
@@ -8416,6 +8479,52 @@ Mpi2SasDevicePage0_t *sas_device_pg0)
}
/**
+ * _scsih_create_enclosure_list_after_reset - Free Existing list,
+ * And create enclosure list by scanning all Enclosure Page(0)s
+ * @ioc: per adapter object
+ *
+ * Return nothing.
+ */
+static void
+_scsih_create_enclosure_list_after_reset(struct MPT3SAS_ADAPTER *ioc)
+{
+ struct _enclosure_node *enclosure_dev;
+ Mpi2ConfigReply_t mpi_reply;
+ u16 enclosure_handle;
+ int rc;
+
+ /* Free existing enclosure list */
+ mpt3sas_free_enclosure_list(ioc);
+
+ /* Re constructing enclosure list after reset*/
+ enclosure_handle = 0xFFFF;
+ do {
+ enclosure_dev =
+ kzalloc(sizeof(struct _enclosure_node), GFP_KERNEL);
+ if (!enclosure_dev) {
+ pr_err(MPT3SAS_FMT
+ "failure at %s:%d/%s()!\n", ioc->name,
+ __FILE__, __LINE__, __func__);
+ return;
+ }
+ rc = mpt3sas_config_get_enclosure_pg0(ioc, &mpi_reply,
+ &enclosure_dev->pg0,
+ MPI2_SAS_ENCLOS_PGAD_FORM_GET_NEXT_HANDLE,
+ enclosure_handle);
+
+ if (rc || (le16_to_cpu(mpi_reply.IOCStatus) &
+ MPI2_IOCSTATUS_MASK)) {
+ kfree(enclosure_dev);
+ return;
+ }
+ list_add_tail(&enclosure_dev->list,
+ &ioc->enclosure_list);
+ enclosure_handle =
+ le16_to_cpu(enclosure_dev->pg0.EnclosureHandle);
+ } while (1);
+}
+
+/**
* _scsih_search_responding_sas_devices -
* @ioc: per adapter object
*
@@ -8733,22 +8842,16 @@ _scsih_mark_responding_expander(struct MPT3SAS_ADAPTER *ioc,
{
struct _sas_node *sas_expander = NULL;
unsigned long flags;
- int i, encl_pg0_rc = -1;
- Mpi2ConfigReply_t mpi_reply;
- Mpi2SasEnclosurePage0_t enclosure_pg0;
+ int i;
+ struct _enclosure_node *enclosure_dev = NULL;
u16 handle = le16_to_cpu(expander_pg0->DevHandle);
+ u16 enclosure_handle = le16_to_cpu(expander_pg0->EnclosureHandle);
u64 sas_address = le64_to_cpu(expander_pg0->SASAddress);
- if (le16_to_cpu(expander_pg0->EnclosureHandle)) {
- encl_pg0_rc = mpt3sas_config_get_enclosure_pg0(ioc, &mpi_reply,
- &enclosure_pg0, MPI2_SAS_ENCLOS_PGAD_FORM_HANDLE,
- le16_to_cpu(expander_pg0->EnclosureHandle));
- if (encl_pg0_rc)
- pr_info(MPT3SAS_FMT
- "Enclosure Pg0 read failed for handle(0x%04x)\n",
- ioc->name,
- le16_to_cpu(expander_pg0->EnclosureHandle));
- }
+ if (enclosure_handle)
+ enclosure_dev =
+ mpt3sas_scsih_enclosure_find_by_handle(ioc,
+ enclosure_handle);
spin_lock_irqsave(&ioc->sas_node_lock, flags);
list_for_each_entry(sas_expander, &ioc->sas_expander_list, list) {
@@ -8756,12 +8859,12 @@ _scsih_mark_responding_expander(struct MPT3SAS_ADAPTER *ioc,
continue;
sas_expander->responding = 1;
- if (!encl_pg0_rc)
+ if (enclosure_dev) {
sas_expander->enclosure_logical_id =
- le64_to_cpu(enclosure_pg0.EnclosureLogicalID);
-
- sas_expander->enclosure_handle =
- le16_to_cpu(expander_pg0->EnclosureHandle);
+ le64_to_cpu(enclosure_dev->pg0.EnclosureLogicalID);
+ sas_expander->enclosure_handle =
+ le16_to_cpu(expander_pg0->EnclosureHandle);
+ }
if (sas_expander->handle == handle)
goto out;
@@ -9283,6 +9386,7 @@ mpt3sas_scsih_reset_handler(struct MPT3SAS_ADAPTER *ioc, int reset_phase)
if ((!ioc->is_driver_loading) && !(disable_discovery > 0 &&
!ioc->sas_hba.num_phys)) {
_scsih_prep_device_scan(ioc);
+ _scsih_create_enclosure_list_after_reset(ioc);
_scsih_search_responding_sas_devices(ioc);
_scsih_search_responding_pcie_devices(ioc);
_scsih_search_responding_raid_devices(ioc);
@@ -10502,6 +10606,7 @@ _scsih_probe(struct pci_dev *pdev, const struct pci_device_id *id)
INIT_LIST_HEAD(&ioc->sas_device_list);
INIT_LIST_HEAD(&ioc->sas_device_init_list);
INIT_LIST_HEAD(&ioc->sas_expander_list);
+ INIT_LIST_HEAD(&ioc->enclosure_list);
INIT_LIST_HEAD(&ioc->pcie_device_list);
INIT_LIST_HEAD(&ioc->pcie_device_init_list);
INIT_LIST_HEAD(&ioc->fw_event_list);
--
1.8.3.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [RFC PATCH] mpt3sas: mpt3sas_scsih_enclosure_find_by_handle can be static
2018-03-20 10:15 [PATCH] mpt3sas: Cache enclosure pages during enclosure add Chaitra P B
@ 2018-03-20 21:06 ` kbuild test robot
2018-03-20 21:06 ` kbuild test robot
1 sibling, 0 replies; 11+ messages in thread
From: kbuild test robot @ 2018-03-20 21:06 UTC (permalink / raw)
To: Chaitra P B
Cc: kbuild-all, linux-scsi, stable, Bart.VanAssche, Sathya.Prakash,
suganath-prabu.subramani, Chaitra P B
Fixes: 793a6223beef ("mpt3sas: Cache enclosure pages during enclosure add.")
Signed-off-by: Fengguang Wu <fengguang.wu@intel.com>
---
mpt3sas_scsih.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
index c93c5c5..67a43957 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
@@ -1370,7 +1370,7 @@ mpt3sas_scsih_expander_find_by_handle(struct MPT3SAS_ADAPTER *ioc, u16 handle)
* This searches for enclosure device based on handle, then returns the
* enclosure object.
*/
-struct _enclosure_node *
+static struct _enclosure_node *
mpt3sas_scsih_enclosure_find_by_handle(struct MPT3SAS_ADAPTER *ioc, u16 handle)
{
struct _enclosure_node *enclosure_dev, *r;
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH] mpt3sas: Cache enclosure pages during enclosure add.
2018-03-20 10:15 [PATCH] mpt3sas: Cache enclosure pages during enclosure add Chaitra P B
@ 2018-03-20 21:06 ` kbuild test robot
2018-03-20 21:06 ` kbuild test robot
1 sibling, 0 replies; 11+ messages in thread
From: kbuild test robot @ 2018-03-20 21:06 UTC (permalink / raw)
To: Chaitra P B
Cc: kbuild-all, linux-scsi, stable, Bart.VanAssche, Sathya.Prakash,
suganath-prabu.subramani, Chaitra P B
Hi Chaitra,
I love your patch! Perhaps something to improve:
[auto build test WARNING on v4.16-rc4]
[also build test WARNING on next-20180320]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Chaitra-P-B/mpt3sas-Cache-enclosure-pages-during-enclosure-add/20180320-220411
reproduce:
# apt-get install sparse
make ARCH=x86_64 allmodconfig
make C=1 CF=-D__CHECK_ENDIAN__
sparse warnings: (new ones prefixed by >>)
>> drivers/scsi/mpt3sas/mpt3sas_scsih.c:6100:63: sparse: incorrect type in argument 2 (different base types) @@ expected unsigned short [unsigned] [usertype] handle @@ got restriunsigned short [unsigned] [usertype] handle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:6100:63: expected unsigned short [unsigned] [usertype] handle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:6100:63: got restricted __le16 [addressable] [usertype] EnclosureHandle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:6907:13: sparse: cast to restricted __le16
drivers/scsi/mpt3sas/mpt3sas_scsih.c:6907:13: sparse: cast from restricted __le32
drivers/scsi/mpt3sas/mpt3sas_scsih.c:160:22: sparse: symbol 'mpt3sas_raid_template' was not declared. Should it be static?
drivers/scsi/mpt3sas/mpt3sas_scsih.c:161:22: sparse: symbol 'mpt2sas_raid_template' was not declared. Should it be static?
>> drivers/scsi/mpt3sas/mpt3sas_scsih.c:1373:24: sparse: symbol 'mpt3sas_scsih_enclosure_find_by_handle' was not declared. Should it be static?
drivers/scsi/mpt3sas/mpt3sas_scsih.c:3749:36: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [usertype] handle @@ got short [unsigned] [usertype] handle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:3749:36: expected unsigned short [unsigned] [usertype] handle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:3749:36: got restricted __le16 [usertype] DevHandle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:3942:9: sparse: cast to restricted __le16
drivers/scsi/mpt3sas/mpt3sas_scsih.c:3949:28: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] Event @@ got unsignedrestricted __le16 [usertype] Event @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:3949:28: expected restricted __le16 [usertype] Event
drivers/scsi/mpt3sas/mpt3sas_scsih.c:3949:28: got unsigned short [unsigned] [usertype] event
drivers/scsi/mpt3sas/mpt3sas_scsih.c:3950:35: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] EventContext @@ got unsignrestricted __le32 [usertype] EventContext @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:3950:35: expected restricted __le32 [usertype] EventContext
drivers/scsi/mpt3sas/mpt3sas_scsih.c:3950:35: got unsigned int [unsigned] [usertype] event_context
drivers/scsi/mpt3sas/mpt3sas_scsih.c:4001:9: sparse: cast to restricted __le16
drivers/scsi/mpt3sas/mpt3sas_scsih.c:4009:32: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] DevHandle @@ got unsignedrestricted __le16 [usertype] DevHandle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:4009:32: expected restricted __le16 [usertype] DevHandle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:4009:32: got unsigned short [unsigned] [usertype] handle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:4531:61: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] PrimaryReferenceTag @@ got restricted __le32 [usertype] PrimaryReferenceTag @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:4531:61: expected restricted __le32 [usertype] PrimaryReferenceTag
drivers/scsi/mpt3sas/mpt3sas_scsih.c:4531:61: got restricted __be32 [usertype] <noident>
>> drivers/scsi/mpt3sas/mpt3sas_scsih.c:7324:37: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] EnclosureHandle @@ got unsignedrestricted __le16 [usertype] EnclosureHandle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:7324:37: expected restricted __le16 [usertype] EnclosureHandle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:7324:37: got unsigned short [unsigned] [usertype] <noident>
>> drivers/scsi/mpt3sas/mpt3sas_scsih.c:7329:59: sparse: incorrect type in argument 2 (different base types) @@ expected unsigned short [unsigned] [usertype] handle @@ got short [unsigned] [usertype] handle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:7329:59: expected unsigned short [unsigned] [usertype] handle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:7329:59: got restricted __le16 [usertype] EnclosureHandle
>> drivers/scsi/mpt3sas/mpt3sas_scsih.c:7345:43: sparse: incorrect type in argument 5 (different base types) @@ expected unsigned int [unsigned] [usertype] handle @@ got ed int [unsigned] [usertype] handle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:7345:43: expected unsigned int [unsigned] [usertype] handle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:7345:43: got restricted __le16 [usertype] EnclosureHandle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8408:55: sparse: incorrect type in argument 2 (different base types) @@ expected unsigned short [unsigned] [usertype] handle @@ got short [unsigned] [usertype] handle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8408:55: expected unsigned short [unsigned] [usertype] handle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8408:55: got restricted __le16 [usertype] EnclosureHandle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8416:63: sparse: restricted __le64 degrades to integer
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8417:60: sparse: restricted __le16 degrades to integer
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8441:43: sparse: restricted __le16 degrades to integer
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8466:65: sparse: restricted __le16 degrades to integer
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8470:44: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [usertype] handle @@ got short [unsigned] [usertype] handle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8470:44: expected unsigned short [unsigned] [usertype] handle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8470:44: got restricted __le16 [usertype] DevHandle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8472:62: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [usertype] handle @@ got short [unsigned] [usertype] handle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8472:62: expected unsigned short [unsigned] [usertype] handle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8472:62: got restricted __le16 [usertype] DevHandle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8558:51: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [addressable] [usertype] DevHandle @@ got cted __le16 [addressable] [usertype] DevHandle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8558:51: expected restricted __le16 [addressable] [usertype] DevHandle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8558:51: got unsigned short [unsigned] [usertype] <noident>
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8563:43: sparse: incorrect type in assignment (different base types) @@ expected restricted __le64 [addressable] [usertype] SASAddress @@ got stricted __le64 [addressable] [usertype] SASAddress @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8563:43: expected restricted __le64 [addressable] [usertype] SASAddress
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8563:43: got unsigned long long [unsigned] [usertype] <noident>
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8565:37: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [addressable] [usertype] Slot @@ got cted __le16 [addressable] [usertype] Slot @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8565:37: expected restricted __le16 [addressable] [usertype] Slot
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8565:37: got unsigned short [unsigned] [usertype] <noident>
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8566:38: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [addressable] [usertype] Flags @@ got cted __le16 [addressable] [usertype] Flags @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8566:38: expected restricted __le16 [addressable] [usertype] Flags
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8566:38: got unsigned short [unsigned] [usertype] <noident>
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8596:58: sparse: restricted __le64 degrades to integer
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8597:58: sparse: restricted __le16 degrades to integer
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8632:67: sparse: restricted __le16 degrades to integer
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8636:45: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [usertype] handle @@ got short [unsigned] [usertype] handle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8636:45: expected unsigned short [unsigned] [usertype] handle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8636:45: got restricted __le16 [usertype] DevHandle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8638:62: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [usertype] handle @@ got short [unsigned] [usertype] handle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8638:62: expected unsigned short [unsigned] [usertype] handle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8638:62: got restricted __le16 [usertype] DevHandle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8688:38: sparse: incorrect type in assignment (different base types) @@ expected restricted __le64 [addressable] [usertype] WWID @@ got stricted __le64 [addressable] [usertype] WWID @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8688:38: expected restricted __le64 [addressable] [usertype] WWID
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8688:38: got unsigned long long [unsigned] [usertype] <noident>
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8689:38: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [addressable] [usertype] Slot @@ got cted __le16 [addressable] [usertype] Slot @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8689:38: expected restricted __le16 [addressable] [usertype] Slot
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8689:38: got unsigned short [unsigned] [usertype] <noident>
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8690:39: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [addressable] [usertype] Flags @@ got ed __le32 [addressable] [usertype] Flags @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8690:39: expected restricted __le32 [addressable] [usertype] Flags
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8690:39: got unsigned int [unsigned] [usertype] <noident>
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8691:43: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [addressable] [usertype] DevHandle @@ got unsigrestricted __le16 [addressable] [usertype] DevHandle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8691:43: expected restricted __le16 [addressable] [usertype] DevHandle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8691:43: got unsigned short [unsigned] [assigned] [usertype] handle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:9610:25: sparse: cast to restricted __le32
Please review and possibly fold the followup patch.
vim +6100 drivers/scsi/mpt3sas/mpt3sas_scsih.c
f92363d12 Sreekanth Reddy 2012-11-30 6030
f92363d12 Sreekanth Reddy 2012-11-30 6031 /**
f92363d12 Sreekanth Reddy 2012-11-30 6032 * _scsih_add_device - creating sas device object
f92363d12 Sreekanth Reddy 2012-11-30 6033 * @ioc: per adapter object
f92363d12 Sreekanth Reddy 2012-11-30 6034 * @handle: sas device handle
f92363d12 Sreekanth Reddy 2012-11-30 6035 * @phy_num: phy number end device attached to
f92363d12 Sreekanth Reddy 2012-11-30 6036 * @is_pd: is this hidden raid component
f92363d12 Sreekanth Reddy 2012-11-30 6037 *
f92363d12 Sreekanth Reddy 2012-11-30 6038 * Creating end device object, stored in ioc->sas_device_list.
f92363d12 Sreekanth Reddy 2012-11-30 6039 *
f92363d12 Sreekanth Reddy 2012-11-30 6040 * Returns 0 for success, non-zero for failure.
f92363d12 Sreekanth Reddy 2012-11-30 6041 */
f92363d12 Sreekanth Reddy 2012-11-30 6042 static int
f92363d12 Sreekanth Reddy 2012-11-30 6043 _scsih_add_device(struct MPT3SAS_ADAPTER *ioc, u16 handle, u8 phy_num,
f92363d12 Sreekanth Reddy 2012-11-30 6044 u8 is_pd)
f92363d12 Sreekanth Reddy 2012-11-30 6045 {
f92363d12 Sreekanth Reddy 2012-11-30 6046 Mpi2ConfigReply_t mpi_reply;
f92363d12 Sreekanth Reddy 2012-11-30 6047 Mpi2SasDevicePage0_t sas_device_pg0;
f92363d12 Sreekanth Reddy 2012-11-30 6048 struct _sas_device *sas_device;
793a6223b Chaitra P B 2018-03-20 6049 struct _enclosure_node *enclosure_dev = NULL;
f92363d12 Sreekanth Reddy 2012-11-30 6050 u32 ioc_status;
f92363d12 Sreekanth Reddy 2012-11-30 6051 u64 sas_address;
f92363d12 Sreekanth Reddy 2012-11-30 6052 u32 device_info;
f92363d12 Sreekanth Reddy 2012-11-30 6053
f92363d12 Sreekanth Reddy 2012-11-30 6054 if ((mpt3sas_config_get_sas_device_pg0(ioc, &mpi_reply, &sas_device_pg0,
f92363d12 Sreekanth Reddy 2012-11-30 6055 MPI2_SAS_DEVICE_PGAD_FORM_HANDLE, handle))) {
f92363d12 Sreekanth Reddy 2012-11-30 6056 pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n",
f92363d12 Sreekanth Reddy 2012-11-30 6057 ioc->name, __FILE__, __LINE__, __func__);
f92363d12 Sreekanth Reddy 2012-11-30 6058 return -1;
f92363d12 Sreekanth Reddy 2012-11-30 6059 }
f92363d12 Sreekanth Reddy 2012-11-30 6060
f92363d12 Sreekanth Reddy 2012-11-30 6061 ioc_status = le16_to_cpu(mpi_reply.IOCStatus) &
f92363d12 Sreekanth Reddy 2012-11-30 6062 MPI2_IOCSTATUS_MASK;
f92363d12 Sreekanth Reddy 2012-11-30 6063 if (ioc_status != MPI2_IOCSTATUS_SUCCESS) {
f92363d12 Sreekanth Reddy 2012-11-30 6064 pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n",
f92363d12 Sreekanth Reddy 2012-11-30 6065 ioc->name, __FILE__, __LINE__, __func__);
f92363d12 Sreekanth Reddy 2012-11-30 6066 return -1;
f92363d12 Sreekanth Reddy 2012-11-30 6067 }
f92363d12 Sreekanth Reddy 2012-11-30 6068
f92363d12 Sreekanth Reddy 2012-11-30 6069 /* check if this is end device */
f92363d12 Sreekanth Reddy 2012-11-30 6070 device_info = le32_to_cpu(sas_device_pg0.DeviceInfo);
f92363d12 Sreekanth Reddy 2012-11-30 6071 if (!(_scsih_is_end_device(device_info)))
f92363d12 Sreekanth Reddy 2012-11-30 6072 return -1;
c696f7b83 Suganath Prabu Subramani 2016-10-26 6073 set_bit(handle, ioc->pend_os_device_add);
f92363d12 Sreekanth Reddy 2012-11-30 6074 sas_address = le64_to_cpu(sas_device_pg0.SASAddress);
f92363d12 Sreekanth Reddy 2012-11-30 6075
f92363d12 Sreekanth Reddy 2012-11-30 6076 /* check if device is present */
f92363d12 Sreekanth Reddy 2012-11-30 6077 if (!(le16_to_cpu(sas_device_pg0.Flags) &
f92363d12 Sreekanth Reddy 2012-11-30 6078 MPI2_SAS_DEVICE0_FLAGS_DEVICE_PRESENT)) {
f92363d12 Sreekanth Reddy 2012-11-30 6079 pr_err(MPT3SAS_FMT "device is not present handle(0x04%x)!!!\n",
f92363d12 Sreekanth Reddy 2012-11-30 6080 ioc->name, handle);
f92363d12 Sreekanth Reddy 2012-11-30 6081 return -1;
f92363d12 Sreekanth Reddy 2012-11-30 6082 }
f92363d12 Sreekanth Reddy 2012-11-30 6083
f92363d12 Sreekanth Reddy 2012-11-30 6084 /* check if there were any issues with discovery */
f92363d12 Sreekanth Reddy 2012-11-30 6085 if (_scsih_check_access_status(ioc, sas_address, handle,
f92363d12 Sreekanth Reddy 2012-11-30 6086 sas_device_pg0.AccessStatus))
f92363d12 Sreekanth Reddy 2012-11-30 6087 return -1;
f92363d12 Sreekanth Reddy 2012-11-30 6088
d1cb5e495 Sreekanth Reddy 2015-11-11 6089 sas_device = mpt3sas_get_sdev_by_addr(ioc,
f92363d12 Sreekanth Reddy 2012-11-30 6090 sas_address);
d1cb5e495 Sreekanth Reddy 2015-11-11 6091 if (sas_device) {
c696f7b83 Suganath Prabu Subramani 2016-10-26 6092 clear_bit(handle, ioc->pend_os_device_add);
d1cb5e495 Sreekanth Reddy 2015-11-11 6093 sas_device_put(sas_device);
f92363d12 Sreekanth Reddy 2012-11-30 6094 return -1;
d1cb5e495 Sreekanth Reddy 2015-11-11 6095 }
f92363d12 Sreekanth Reddy 2012-11-30 6096
758889564 Sreekanth Reddy 2017-10-10 6097 if (sas_device_pg0.EnclosureHandle) {
793a6223b Chaitra P B 2018-03-20 6098 enclosure_dev =
793a6223b Chaitra P B 2018-03-20 6099 mpt3sas_scsih_enclosure_find_by_handle(ioc,
758889564 Sreekanth Reddy 2017-10-10 @6100 sas_device_pg0.EnclosureHandle);
793a6223b Chaitra P B 2018-03-20 6101 if (enclosure_dev == NULL)
793a6223b Chaitra P B 2018-03-20 6102 pr_info(MPT3SAS_FMT "Enclosure handle(0x%04x)"
793a6223b Chaitra P B 2018-03-20 6103 "doesn't match with enclosure device!\n",
758889564 Sreekanth Reddy 2017-10-10 6104 ioc->name, sas_device_pg0.EnclosureHandle);
758889564 Sreekanth Reddy 2017-10-10 6105 }
758889564 Sreekanth Reddy 2017-10-10 6106
f92363d12 Sreekanth Reddy 2012-11-30 6107 sas_device = kzalloc(sizeof(struct _sas_device),
f92363d12 Sreekanth Reddy 2012-11-30 6108 GFP_KERNEL);
f92363d12 Sreekanth Reddy 2012-11-30 6109 if (!sas_device) {
f92363d12 Sreekanth Reddy 2012-11-30 6110 pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n",
f92363d12 Sreekanth Reddy 2012-11-30 6111 ioc->name, __FILE__, __LINE__, __func__);
f92363d12 Sreekanth Reddy 2012-11-30 6112 return 0;
f92363d12 Sreekanth Reddy 2012-11-30 6113 }
f92363d12 Sreekanth Reddy 2012-11-30 6114
d1cb5e495 Sreekanth Reddy 2015-11-11 6115 kref_init(&sas_device->refcount);
f92363d12 Sreekanth Reddy 2012-11-30 6116 sas_device->handle = handle;
f92363d12 Sreekanth Reddy 2012-11-30 6117 if (_scsih_get_sas_address(ioc,
f92363d12 Sreekanth Reddy 2012-11-30 6118 le16_to_cpu(sas_device_pg0.ParentDevHandle),
f92363d12 Sreekanth Reddy 2012-11-30 6119 &sas_device->sas_address_parent) != 0)
f92363d12 Sreekanth Reddy 2012-11-30 6120 pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n",
f92363d12 Sreekanth Reddy 2012-11-30 6121 ioc->name, __FILE__, __LINE__, __func__);
f92363d12 Sreekanth Reddy 2012-11-30 6122 sas_device->enclosure_handle =
f92363d12 Sreekanth Reddy 2012-11-30 6123 le16_to_cpu(sas_device_pg0.EnclosureHandle);
e6d45e3e7 Sreekanth Reddy 2015-06-30 6124 if (sas_device->enclosure_handle != 0)
f92363d12 Sreekanth Reddy 2012-11-30 6125 sas_device->slot =
f92363d12 Sreekanth Reddy 2012-11-30 6126 le16_to_cpu(sas_device_pg0.Slot);
f92363d12 Sreekanth Reddy 2012-11-30 6127 sas_device->device_info = device_info;
f92363d12 Sreekanth Reddy 2012-11-30 6128 sas_device->sas_address = sas_address;
f92363d12 Sreekanth Reddy 2012-11-30 6129 sas_device->phy = sas_device_pg0.PhyNum;
f92363d12 Sreekanth Reddy 2012-11-30 6130 sas_device->fast_path = (le16_to_cpu(sas_device_pg0.Flags) &
f92363d12 Sreekanth Reddy 2012-11-30 6131 MPI25_SAS_DEVICE0_FLAGS_FAST_PATH_CAPABLE) ? 1 : 0;
f92363d12 Sreekanth Reddy 2012-11-30 6132
aa53bb895 Suganath Prabu Subramani 2016-10-26 6133 if (le16_to_cpu(sas_device_pg0.Flags)
aa53bb895 Suganath Prabu Subramani 2016-10-26 6134 & MPI2_SAS_DEVICE0_FLAGS_ENCL_LEVEL_VALID) {
e6d45e3e7 Sreekanth Reddy 2015-06-30 6135 sas_device->enclosure_level =
aa53bb895 Suganath Prabu Subramani 2016-10-26 6136 sas_device_pg0.EnclosureLevel;
310c8e40d Calvin Owens 2016-07-27 6137 memcpy(sas_device->connector_name,
310c8e40d Calvin Owens 2016-07-27 6138 sas_device_pg0.ConnectorName, 4);
310c8e40d Calvin Owens 2016-07-27 6139 sas_device->connector_name[4] = '\0';
e6d45e3e7 Sreekanth Reddy 2015-06-30 6140 } else {
e6d45e3e7 Sreekanth Reddy 2015-06-30 6141 sas_device->enclosure_level = 0;
e6d45e3e7 Sreekanth Reddy 2015-06-30 6142 sas_device->connector_name[0] = '\0';
e6d45e3e7 Sreekanth Reddy 2015-06-30 6143 }
758889564 Sreekanth Reddy 2017-10-10 6144 /* get enclosure_logical_id & chassis_slot*/
758889564 Sreekanth Reddy 2017-10-10 6145 sas_device->is_chassis_slot_valid = 0;
793a6223b Chaitra P B 2018-03-20 6146 if (enclosure_dev) {
f92363d12 Sreekanth Reddy 2012-11-30 6147 sas_device->enclosure_logical_id =
793a6223b Chaitra P B 2018-03-20 6148 le64_to_cpu(enclosure_dev->pg0.EnclosureLogicalID);
793a6223b Chaitra P B 2018-03-20 6149 if (le16_to_cpu(enclosure_dev->pg0.Flags) &
758889564 Sreekanth Reddy 2017-10-10 6150 MPI2_SAS_ENCLS0_FLAGS_CHASSIS_SLOT_VALID) {
758889564 Sreekanth Reddy 2017-10-10 6151 sas_device->is_chassis_slot_valid = 1;
758889564 Sreekanth Reddy 2017-10-10 6152 sas_device->chassis_slot =
793a6223b Chaitra P B 2018-03-20 6153 enclosure_dev->pg0.ChassisSlot;
758889564 Sreekanth Reddy 2017-10-10 6154 }
758889564 Sreekanth Reddy 2017-10-10 6155 }
758889564 Sreekanth Reddy 2017-10-10 6156
f92363d12 Sreekanth Reddy 2012-11-30 6157 /* get device name */
f92363d12 Sreekanth Reddy 2012-11-30 6158 sas_device->device_name = le64_to_cpu(sas_device_pg0.DeviceName);
f92363d12 Sreekanth Reddy 2012-11-30 6159
f92363d12 Sreekanth Reddy 2012-11-30 6160 if (ioc->wait_for_discovery_to_complete)
f92363d12 Sreekanth Reddy 2012-11-30 6161 _scsih_sas_device_init_add(ioc, sas_device);
f92363d12 Sreekanth Reddy 2012-11-30 6162 else
f92363d12 Sreekanth Reddy 2012-11-30 6163 _scsih_sas_device_add(ioc, sas_device);
f92363d12 Sreekanth Reddy 2012-11-30 6164
d1cb5e495 Sreekanth Reddy 2015-11-11 6165 sas_device_put(sas_device);
f92363d12 Sreekanth Reddy 2012-11-30 6166 return 0;
f92363d12 Sreekanth Reddy 2012-11-30 6167 }
f92363d12 Sreekanth Reddy 2012-11-30 6168
:::::: The code at line 6100 was first introduced by commit
:::::: 7588895646b5a943d3310271885c5935123a455c scsi: mpt3sas: Display chassis slot information of the drive
:::::: TO: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
:::::: CC: Martin K. Petersen <martin.petersen@oracle.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] mpt3sas: Cache enclosure pages during enclosure add.
@ 2018-03-20 21:06 ` kbuild test robot
0 siblings, 0 replies; 11+ messages in thread
From: kbuild test robot @ 2018-03-20 21:06 UTC (permalink / raw)
Cc: kbuild-all, linux-scsi, stable, Bart.VanAssche, Sathya.Prakash,
suganath-prabu.subramani, Chaitra P B
Hi Chaitra,
I love your patch! Perhaps something to improve:
[auto build test WARNING on v4.16-rc4]
[also build test WARNING on next-20180320]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Chaitra-P-B/mpt3sas-Cache-enclosure-pages-during-enclosure-add/20180320-220411
reproduce:
# apt-get install sparse
make ARCH=x86_64 allmodconfig
make C=1 CF=-D__CHECK_ENDIAN__
sparse warnings: (new ones prefixed by >>)
>> drivers/scsi/mpt3sas/mpt3sas_scsih.c:6100:63: sparse: incorrect type in argument 2 (different base types) @@ expected unsigned short [unsigned] [usertype] handle @@ got restriunsigned short [unsigned] [usertype] handle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:6100:63: expected unsigned short [unsigned] [usertype] handle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:6100:63: got restricted __le16 [addressable] [usertype] EnclosureHandle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:6907:13: sparse: cast to restricted __le16
drivers/scsi/mpt3sas/mpt3sas_scsih.c:6907:13: sparse: cast from restricted __le32
drivers/scsi/mpt3sas/mpt3sas_scsih.c:160:22: sparse: symbol 'mpt3sas_raid_template' was not declared. Should it be static?
drivers/scsi/mpt3sas/mpt3sas_scsih.c:161:22: sparse: symbol 'mpt2sas_raid_template' was not declared. Should it be static?
>> drivers/scsi/mpt3sas/mpt3sas_scsih.c:1373:24: sparse: symbol 'mpt3sas_scsih_enclosure_find_by_handle' was not declared. Should it be static?
drivers/scsi/mpt3sas/mpt3sas_scsih.c:3749:36: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [usertype] handle @@ got short [unsigned] [usertype] handle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:3749:36: expected unsigned short [unsigned] [usertype] handle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:3749:36: got restricted __le16 [usertype] DevHandle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:3942:9: sparse: cast to restricted __le16
drivers/scsi/mpt3sas/mpt3sas_scsih.c:3949:28: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] Event @@ got unsignedrestricted __le16 [usertype] Event @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:3949:28: expected restricted __le16 [usertype] Event
drivers/scsi/mpt3sas/mpt3sas_scsih.c:3949:28: got unsigned short [unsigned] [usertype] event
drivers/scsi/mpt3sas/mpt3sas_scsih.c:3950:35: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] EventContext @@ got unsignrestricted __le32 [usertype] EventContext @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:3950:35: expected restricted __le32 [usertype] EventContext
drivers/scsi/mpt3sas/mpt3sas_scsih.c:3950:35: got unsigned int [unsigned] [usertype] event_context
drivers/scsi/mpt3sas/mpt3sas_scsih.c:4001:9: sparse: cast to restricted __le16
drivers/scsi/mpt3sas/mpt3sas_scsih.c:4009:32: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] DevHandle @@ got unsignedrestricted __le16 [usertype] DevHandle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:4009:32: expected restricted __le16 [usertype] DevHandle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:4009:32: got unsigned short [unsigned] [usertype] handle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:4531:61: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] PrimaryReferenceTag @@ got restricted __le32 [usertype] PrimaryReferenceTag @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:4531:61: expected restricted __le32 [usertype] PrimaryReferenceTag
drivers/scsi/mpt3sas/mpt3sas_scsih.c:4531:61: got restricted __be32 [usertype] <noident>
>> drivers/scsi/mpt3sas/mpt3sas_scsih.c:7324:37: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] EnclosureHandle @@ got unsignedrestricted __le16 [usertype] EnclosureHandle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:7324:37: expected restricted __le16 [usertype] EnclosureHandle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:7324:37: got unsigned short [unsigned] [usertype] <noident>
>> drivers/scsi/mpt3sas/mpt3sas_scsih.c:7329:59: sparse: incorrect type in argument 2 (different base types) @@ expected unsigned short [unsigned] [usertype] handle @@ got short [unsigned] [usertype] handle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:7329:59: expected unsigned short [unsigned] [usertype] handle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:7329:59: got restricted __le16 [usertype] EnclosureHandle
>> drivers/scsi/mpt3sas/mpt3sas_scsih.c:7345:43: sparse: incorrect type in argument 5 (different base types) @@ expected unsigned int [unsigned] [usertype] handle @@ got ed int [unsigned] [usertype] handle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:7345:43: expected unsigned int [unsigned] [usertype] handle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:7345:43: got restricted __le16 [usertype] EnclosureHandle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8408:55: sparse: incorrect type in argument 2 (different base types) @@ expected unsigned short [unsigned] [usertype] handle @@ got short [unsigned] [usertype] handle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8408:55: expected unsigned short [unsigned] [usertype] handle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8408:55: got restricted __le16 [usertype] EnclosureHandle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8416:63: sparse: restricted __le64 degrades to integer
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8417:60: sparse: restricted __le16 degrades to integer
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8441:43: sparse: restricted __le16 degrades to integer
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8466:65: sparse: restricted __le16 degrades to integer
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8470:44: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [usertype] handle @@ got short [unsigned] [usertype] handle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8470:44: expected unsigned short [unsigned] [usertype] handle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8470:44: got restricted __le16 [usertype] DevHandle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8472:62: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [usertype] handle @@ got short [unsigned] [usertype] handle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8472:62: expected unsigned short [unsigned] [usertype] handle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8472:62: got restricted __le16 [usertype] DevHandle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8558:51: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [addressable] [usertype] DevHandle @@ got cted __le16 [addressable] [usertype] DevHandle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8558:51: expected restricted __le16 [addressable] [usertype] DevHandle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8558:51: got unsigned short [unsigned] [usertype] <noident>
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8563:43: sparse: incorrect type in assignment (different base types) @@ expected restricted __le64 [addressable] [usertype] SASAddress @@ got stricted __le64 [addressable] [usertype] SASAddress @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8563:43: expected restricted __le64 [addressable] [usertype] SASAddress
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8563:43: got unsigned long long [unsigned] [usertype] <noident>
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8565:37: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [addressable] [usertype] Slot @@ got cted __le16 [addressable] [usertype] Slot @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8565:37: expected restricted __le16 [addressable] [usertype] Slot
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8565:37: got unsigned short [unsigned] [usertype] <noident>
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8566:38: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [addressable] [usertype] Flags @@ got cted __le16 [addressable] [usertype] Flags @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8566:38: expected restricted __le16 [addressable] [usertype] Flags
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8566:38: got unsigned short [unsigned] [usertype] <noident>
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8596:58: sparse: restricted __le64 degrades to integer
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8597:58: sparse: restricted __le16 degrades to integer
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8632:67: sparse: restricted __le16 degrades to integer
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8636:45: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [usertype] handle @@ got short [unsigned] [usertype] handle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8636:45: expected unsigned short [unsigned] [usertype] handle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8636:45: got restricted __le16 [usertype] DevHandle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8638:62: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [usertype] handle @@ got short [unsigned] [usertype] handle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8638:62: expected unsigned short [unsigned] [usertype] handle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8638:62: got restricted __le16 [usertype] DevHandle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8688:38: sparse: incorrect type in assignment (different base types) @@ expected restricted __le64 [addressable] [usertype] WWID @@ got stricted __le64 [addressable] [usertype] WWID @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8688:38: expected restricted __le64 [addressable] [usertype] WWID
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8688:38: got unsigned long long [unsigned] [usertype] <noident>
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8689:38: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [addressable] [usertype] Slot @@ got cted __le16 [addressable] [usertype] Slot @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8689:38: expected restricted __le16 [addressable] [usertype] Slot
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8689:38: got unsigned short [unsigned] [usertype] <noident>
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8690:39: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [addressable] [usertype] Flags @@ got ed __le32 [addressable] [usertype] Flags @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8690:39: expected restricted __le32 [addressable] [usertype] Flags
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8690:39: got unsigned int [unsigned] [usertype] <noident>
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8691:43: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [addressable] [usertype] DevHandle @@ got unsigrestricted __le16 [addressable] [usertype] DevHandle @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8691:43: expected restricted __le16 [addressable] [usertype] DevHandle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:8691:43: got unsigned short [unsigned] [assigned] [usertype] handle
drivers/scsi/mpt3sas/mpt3sas_scsih.c:9610:25: sparse: cast to restricted __le32
Please review and possibly fold the followup patch.
vim +6100 drivers/scsi/mpt3sas/mpt3sas_scsih.c
f92363d12 Sreekanth Reddy 2012-11-30 6030
f92363d12 Sreekanth Reddy 2012-11-30 6031 /**
f92363d12 Sreekanth Reddy 2012-11-30 6032 * _scsih_add_device - creating sas device object
f92363d12 Sreekanth Reddy 2012-11-30 6033 * @ioc: per adapter object
f92363d12 Sreekanth Reddy 2012-11-30 6034 * @handle: sas device handle
f92363d12 Sreekanth Reddy 2012-11-30 6035 * @phy_num: phy number end device attached to
f92363d12 Sreekanth Reddy 2012-11-30 6036 * @is_pd: is this hidden raid component
f92363d12 Sreekanth Reddy 2012-11-30 6037 *
f92363d12 Sreekanth Reddy 2012-11-30 6038 * Creating end device object, stored in ioc->sas_device_list.
f92363d12 Sreekanth Reddy 2012-11-30 6039 *
f92363d12 Sreekanth Reddy 2012-11-30 6040 * Returns 0 for success, non-zero for failure.
f92363d12 Sreekanth Reddy 2012-11-30 6041 */
f92363d12 Sreekanth Reddy 2012-11-30 6042 static int
f92363d12 Sreekanth Reddy 2012-11-30 6043 _scsih_add_device(struct MPT3SAS_ADAPTER *ioc, u16 handle, u8 phy_num,
f92363d12 Sreekanth Reddy 2012-11-30 6044 u8 is_pd)
f92363d12 Sreekanth Reddy 2012-11-30 6045 {
f92363d12 Sreekanth Reddy 2012-11-30 6046 Mpi2ConfigReply_t mpi_reply;
f92363d12 Sreekanth Reddy 2012-11-30 6047 Mpi2SasDevicePage0_t sas_device_pg0;
f92363d12 Sreekanth Reddy 2012-11-30 6048 struct _sas_device *sas_device;
793a6223b Chaitra P B 2018-03-20 6049 struct _enclosure_node *enclosure_dev = NULL;
f92363d12 Sreekanth Reddy 2012-11-30 6050 u32 ioc_status;
f92363d12 Sreekanth Reddy 2012-11-30 6051 u64 sas_address;
f92363d12 Sreekanth Reddy 2012-11-30 6052 u32 device_info;
f92363d12 Sreekanth Reddy 2012-11-30 6053
f92363d12 Sreekanth Reddy 2012-11-30 6054 if ((mpt3sas_config_get_sas_device_pg0(ioc, &mpi_reply, &sas_device_pg0,
f92363d12 Sreekanth Reddy 2012-11-30 6055 MPI2_SAS_DEVICE_PGAD_FORM_HANDLE, handle))) {
f92363d12 Sreekanth Reddy 2012-11-30 6056 pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n",
f92363d12 Sreekanth Reddy 2012-11-30 6057 ioc->name, __FILE__, __LINE__, __func__);
f92363d12 Sreekanth Reddy 2012-11-30 6058 return -1;
f92363d12 Sreekanth Reddy 2012-11-30 6059 }
f92363d12 Sreekanth Reddy 2012-11-30 6060
f92363d12 Sreekanth Reddy 2012-11-30 6061 ioc_status = le16_to_cpu(mpi_reply.IOCStatus) &
f92363d12 Sreekanth Reddy 2012-11-30 6062 MPI2_IOCSTATUS_MASK;
f92363d12 Sreekanth Reddy 2012-11-30 6063 if (ioc_status != MPI2_IOCSTATUS_SUCCESS) {
f92363d12 Sreekanth Reddy 2012-11-30 6064 pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n",
f92363d12 Sreekanth Reddy 2012-11-30 6065 ioc->name, __FILE__, __LINE__, __func__);
f92363d12 Sreekanth Reddy 2012-11-30 6066 return -1;
f92363d12 Sreekanth Reddy 2012-11-30 6067 }
f92363d12 Sreekanth Reddy 2012-11-30 6068
f92363d12 Sreekanth Reddy 2012-11-30 6069 /* check if this is end device */
f92363d12 Sreekanth Reddy 2012-11-30 6070 device_info = le32_to_cpu(sas_device_pg0.DeviceInfo);
f92363d12 Sreekanth Reddy 2012-11-30 6071 if (!(_scsih_is_end_device(device_info)))
f92363d12 Sreekanth Reddy 2012-11-30 6072 return -1;
c696f7b83 Suganath Prabu Subramani 2016-10-26 6073 set_bit(handle, ioc->pend_os_device_add);
f92363d12 Sreekanth Reddy 2012-11-30 6074 sas_address = le64_to_cpu(sas_device_pg0.SASAddress);
f92363d12 Sreekanth Reddy 2012-11-30 6075
f92363d12 Sreekanth Reddy 2012-11-30 6076 /* check if device is present */
f92363d12 Sreekanth Reddy 2012-11-30 6077 if (!(le16_to_cpu(sas_device_pg0.Flags) &
f92363d12 Sreekanth Reddy 2012-11-30 6078 MPI2_SAS_DEVICE0_FLAGS_DEVICE_PRESENT)) {
f92363d12 Sreekanth Reddy 2012-11-30 6079 pr_err(MPT3SAS_FMT "device is not present handle(0x04%x)!!!\n",
f92363d12 Sreekanth Reddy 2012-11-30 6080 ioc->name, handle);
f92363d12 Sreekanth Reddy 2012-11-30 6081 return -1;
f92363d12 Sreekanth Reddy 2012-11-30 6082 }
f92363d12 Sreekanth Reddy 2012-11-30 6083
f92363d12 Sreekanth Reddy 2012-11-30 6084 /* check if there were any issues with discovery */
f92363d12 Sreekanth Reddy 2012-11-30 6085 if (_scsih_check_access_status(ioc, sas_address, handle,
f92363d12 Sreekanth Reddy 2012-11-30 6086 sas_device_pg0.AccessStatus))
f92363d12 Sreekanth Reddy 2012-11-30 6087 return -1;
f92363d12 Sreekanth Reddy 2012-11-30 6088
d1cb5e495 Sreekanth Reddy 2015-11-11 6089 sas_device = mpt3sas_get_sdev_by_addr(ioc,
f92363d12 Sreekanth Reddy 2012-11-30 6090 sas_address);
d1cb5e495 Sreekanth Reddy 2015-11-11 6091 if (sas_device) {
c696f7b83 Suganath Prabu Subramani 2016-10-26 6092 clear_bit(handle, ioc->pend_os_device_add);
d1cb5e495 Sreekanth Reddy 2015-11-11 6093 sas_device_put(sas_device);
f92363d12 Sreekanth Reddy 2012-11-30 6094 return -1;
d1cb5e495 Sreekanth Reddy 2015-11-11 6095 }
f92363d12 Sreekanth Reddy 2012-11-30 6096
758889564 Sreekanth Reddy 2017-10-10 6097 if (sas_device_pg0.EnclosureHandle) {
793a6223b Chaitra P B 2018-03-20 6098 enclosure_dev =
793a6223b Chaitra P B 2018-03-20 6099 mpt3sas_scsih_enclosure_find_by_handle(ioc,
758889564 Sreekanth Reddy 2017-10-10 @6100 sas_device_pg0.EnclosureHandle);
793a6223b Chaitra P B 2018-03-20 6101 if (enclosure_dev == NULL)
793a6223b Chaitra P B 2018-03-20 6102 pr_info(MPT3SAS_FMT "Enclosure handle(0x%04x)"
793a6223b Chaitra P B 2018-03-20 6103 "doesn't match with enclosure device!\n",
758889564 Sreekanth Reddy 2017-10-10 6104 ioc->name, sas_device_pg0.EnclosureHandle);
758889564 Sreekanth Reddy 2017-10-10 6105 }
758889564 Sreekanth Reddy 2017-10-10 6106
f92363d12 Sreekanth Reddy 2012-11-30 6107 sas_device = kzalloc(sizeof(struct _sas_device),
f92363d12 Sreekanth Reddy 2012-11-30 6108 GFP_KERNEL);
f92363d12 Sreekanth Reddy 2012-11-30 6109 if (!sas_device) {
f92363d12 Sreekanth Reddy 2012-11-30 6110 pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n",
f92363d12 Sreekanth Reddy 2012-11-30 6111 ioc->name, __FILE__, __LINE__, __func__);
f92363d12 Sreekanth Reddy 2012-11-30 6112 return 0;
f92363d12 Sreekanth Reddy 2012-11-30 6113 }
f92363d12 Sreekanth Reddy 2012-11-30 6114
d1cb5e495 Sreekanth Reddy 2015-11-11 6115 kref_init(&sas_device->refcount);
f92363d12 Sreekanth Reddy 2012-11-30 6116 sas_device->handle = handle;
f92363d12 Sreekanth Reddy 2012-11-30 6117 if (_scsih_get_sas_address(ioc,
f92363d12 Sreekanth Reddy 2012-11-30 6118 le16_to_cpu(sas_device_pg0.ParentDevHandle),
f92363d12 Sreekanth Reddy 2012-11-30 6119 &sas_device->sas_address_parent) != 0)
f92363d12 Sreekanth Reddy 2012-11-30 6120 pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n",
f92363d12 Sreekanth Reddy 2012-11-30 6121 ioc->name, __FILE__, __LINE__, __func__);
f92363d12 Sreekanth Reddy 2012-11-30 6122 sas_device->enclosure_handle =
f92363d12 Sreekanth Reddy 2012-11-30 6123 le16_to_cpu(sas_device_pg0.EnclosureHandle);
e6d45e3e7 Sreekanth Reddy 2015-06-30 6124 if (sas_device->enclosure_handle != 0)
f92363d12 Sreekanth Reddy 2012-11-30 6125 sas_device->slot =
f92363d12 Sreekanth Reddy 2012-11-30 6126 le16_to_cpu(sas_device_pg0.Slot);
f92363d12 Sreekanth Reddy 2012-11-30 6127 sas_device->device_info = device_info;
f92363d12 Sreekanth Reddy 2012-11-30 6128 sas_device->sas_address = sas_address;
f92363d12 Sreekanth Reddy 2012-11-30 6129 sas_device->phy = sas_device_pg0.PhyNum;
f92363d12 Sreekanth Reddy 2012-11-30 6130 sas_device->fast_path = (le16_to_cpu(sas_device_pg0.Flags) &
f92363d12 Sreekanth Reddy 2012-11-30 6131 MPI25_SAS_DEVICE0_FLAGS_FAST_PATH_CAPABLE) ? 1 : 0;
f92363d12 Sreekanth Reddy 2012-11-30 6132
aa53bb895 Suganath Prabu Subramani 2016-10-26 6133 if (le16_to_cpu(sas_device_pg0.Flags)
aa53bb895 Suganath Prabu Subramani 2016-10-26 6134 & MPI2_SAS_DEVICE0_FLAGS_ENCL_LEVEL_VALID) {
e6d45e3e7 Sreekanth Reddy 2015-06-30 6135 sas_device->enclosure_level =
aa53bb895 Suganath Prabu Subramani 2016-10-26 6136 sas_device_pg0.EnclosureLevel;
310c8e40d Calvin Owens 2016-07-27 6137 memcpy(sas_device->connector_name,
310c8e40d Calvin Owens 2016-07-27 6138 sas_device_pg0.ConnectorName, 4);
310c8e40d Calvin Owens 2016-07-27 6139 sas_device->connector_name[4] = '\0';
e6d45e3e7 Sreekanth Reddy 2015-06-30 6140 } else {
e6d45e3e7 Sreekanth Reddy 2015-06-30 6141 sas_device->enclosure_level = 0;
e6d45e3e7 Sreekanth Reddy 2015-06-30 6142 sas_device->connector_name[0] = '\0';
e6d45e3e7 Sreekanth Reddy 2015-06-30 6143 }
758889564 Sreekanth Reddy 2017-10-10 6144 /* get enclosure_logical_id & chassis_slot*/
758889564 Sreekanth Reddy 2017-10-10 6145 sas_device->is_chassis_slot_valid = 0;
793a6223b Chaitra P B 2018-03-20 6146 if (enclosure_dev) {
f92363d12 Sreekanth Reddy 2012-11-30 6147 sas_device->enclosure_logical_id =
793a6223b Chaitra P B 2018-03-20 6148 le64_to_cpu(enclosure_dev->pg0.EnclosureLogicalID);
793a6223b Chaitra P B 2018-03-20 6149 if (le16_to_cpu(enclosure_dev->pg0.Flags) &
758889564 Sreekanth Reddy 2017-10-10 6150 MPI2_SAS_ENCLS0_FLAGS_CHASSIS_SLOT_VALID) {
758889564 Sreekanth Reddy 2017-10-10 6151 sas_device->is_chassis_slot_valid = 1;
758889564 Sreekanth Reddy 2017-10-10 6152 sas_device->chassis_slot =
793a6223b Chaitra P B 2018-03-20 6153 enclosure_dev->pg0.ChassisSlot;
758889564 Sreekanth Reddy 2017-10-10 6154 }
758889564 Sreekanth Reddy 2017-10-10 6155 }
758889564 Sreekanth Reddy 2017-10-10 6156
f92363d12 Sreekanth Reddy 2012-11-30 6157 /* get device name */
f92363d12 Sreekanth Reddy 2012-11-30 6158 sas_device->device_name = le64_to_cpu(sas_device_pg0.DeviceName);
f92363d12 Sreekanth Reddy 2012-11-30 6159
f92363d12 Sreekanth Reddy 2012-11-30 6160 if (ioc->wait_for_discovery_to_complete)
f92363d12 Sreekanth Reddy 2012-11-30 6161 _scsih_sas_device_init_add(ioc, sas_device);
f92363d12 Sreekanth Reddy 2012-11-30 6162 else
f92363d12 Sreekanth Reddy 2012-11-30 6163 _scsih_sas_device_add(ioc, sas_device);
f92363d12 Sreekanth Reddy 2012-11-30 6164
d1cb5e495 Sreekanth Reddy 2015-11-11 6165 sas_device_put(sas_device);
f92363d12 Sreekanth Reddy 2012-11-30 6166 return 0;
f92363d12 Sreekanth Reddy 2012-11-30 6167 }
f92363d12 Sreekanth Reddy 2012-11-30 6168
:::::: The code at line 6100 was first introduced by commit
:::::: 7588895646b5a943d3310271885c5935123a455c scsi: mpt3sas: Display chassis slot information of the drive
:::::: TO: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
:::::: CC: Martin K. Petersen <martin.petersen@oracle.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
^ permalink raw reply [flat|nested] 11+ messages in thread
* [RFC PATCH] mpt3sas: mpt3sas_scsih_enclosure_find_by_handle can be static
@ 2018-03-20 21:06 ` kbuild test robot
0 siblings, 0 replies; 11+ messages in thread
From: kbuild test robot @ 2018-03-20 21:06 UTC (permalink / raw)
Cc: kbuild-all, linux-scsi, stable, Bart.VanAssche, Sathya.Prakash,
suganath-prabu.subramani, Chaitra P B
Fixes: 793a6223beef ("mpt3sas: Cache enclosure pages during enclosure add.")
Signed-off-by: Fengguang Wu <fengguang.wu@intel.com>
---
mpt3sas_scsih.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
index c93c5c5..67a43957 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
@@ -1370,7 +1370,7 @@ mpt3sas_scsih_expander_find_by_handle(struct MPT3SAS_ADAPTER *ioc, u16 handle)
* This searches for enclosure device based on handle, then returns the
* enclosure object.
*/
-struct _enclosure_node *
+static struct _enclosure_node *
mpt3sas_scsih_enclosure_find_by_handle(struct MPT3SAS_ADAPTER *ioc, u16 handle)
{
struct _enclosure_node *enclosure_dev, *r;
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [RFC PATCH] mpt3sas: mpt3sas_scsih_enclosure_find_by_handle can be static
2018-03-20 21:06 ` kbuild test robot
(?)
@ 2018-03-27 18:55 ` Bart Van Assche
2018-03-28 21:54 ` Martin K. Petersen
-1 siblings, 1 reply; 11+ messages in thread
From: Bart Van Assche @ 2018-03-27 18:55 UTC (permalink / raw)
To: chaitra.basappa, lkp
Cc: kbuild-all, linux-scsi, Sathya.Prakash, suganath-prabu.subramani,
stable, jaco
On Wed, 2018-03-21 at 05:06 +0800, kbuild test robot wrote:
> Fixes: 793a6223beef ("mpt3sas: Cache enclosure pages during enclosure add.")
> Signed-off-by: Fengguang Wu <fengguang.wu@intel.com>
> ---
> mpt3sas_scsih.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
> index c93c5c5..67a43957 100644
> --- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c
> +++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
> @@ -1370,7 +1370,7 @@ mpt3sas_scsih_expander_find_by_handle(struct MPT3SAS_ADAPTER *ioc, u16 handle)
> * This searches for enclosure device based on handle, then returns the
> * enclosure object.
> */
> -struct _enclosure_node *
> +static struct _enclosure_node *
> mpt3sas_scsih_enclosure_find_by_handle(struct MPT3SAS_ADAPTER *ioc, u16 handle)
> {
> struct _enclosure_node *enclosure_dev, *r;
Hello Chaitra,
Are you aware that if the 0-day test infrastructure suggests an improvement
for a patch that the patch that that improvement applies to gets ignored
unless either the patch is reposted with the improvement applied or that it
is explained why the suggested improvement is inappropriate?
Thanks,
Bart.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [RFC PATCH] mpt3sas: mpt3sas_scsih_enclosure_find_by_handle can be static
2018-03-27 18:55 ` Bart Van Assche
@ 2018-03-28 21:54 ` Martin K. Petersen
0 siblings, 0 replies; 11+ messages in thread
From: Martin K. Petersen @ 2018-03-28 21:54 UTC (permalink / raw)
To: Bart Van Assche
Cc: chaitra.basappa, lkp, kbuild-all, linux-scsi, Sathya.Prakash,
suganath-prabu.subramani, stable, jaco
Bart,
> Are you aware that if the 0-day test infrastructure suggests an improvement
> for a patch that the patch that that improvement applies to gets ignored
> unless either the patch is reposted with the improvement applied or that it
> is explained why the suggested improvement is inappropriate?
Correct. I don't apply anything that causes a 0-day warning. The patch
will be closed with "Changes Required" status in patchwork.
Always build patch submissions to linux-scsi with:
make C=1 CF="-D__CHECK_ENDIAN__"
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [RFC PATCH] mpt3sas: mpt3sas_scsih_enclosure_find_by_handle can be static
@ 2018-03-28 21:54 ` Martin K. Petersen
0 siblings, 0 replies; 11+ messages in thread
From: Martin K. Petersen @ 2018-03-28 21:54 UTC (permalink / raw)
To: Bart Van Assche
Cc: chaitra.basappa, lkp, kbuild-all, linux-scsi, Sathya.Prakash,
suganath-prabu.subramani, stable, jaco
Bart,
> Are you aware that if the 0-day test infrastructure suggests an improvement
> for a patch that the patch that that improvement applies to gets ignored
> unless either the patch is reposted with the improvement applied or that it
> is explained why the suggested improvement is inappropriate?
Correct. I don't apply anything that causes a 0-day warning. The patch
will be closed with "Changes Required" status in patchwork.
Always build patch submissions to linux-scsi with:
make C=1 CF="-D__CHECK_ENDIAN__"
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: *** SPAM *** Re: [RFC PATCH] mpt3sas: mpt3sas_scsih_enclosure_find_by_handle can be static
2018-03-28 21:54 ` Martin K. Petersen
(?)
@ 2018-04-05 11:43 ` Jaco Kroon
-1 siblings, 0 replies; 11+ messages in thread
From: Jaco Kroon @ 2018-04-05 11:43 UTC (permalink / raw)
To: Martin K. Petersen, Bart Van Assche
Cc: chaitra.basappa, lkp, kbuild-all, linux-scsi, Sathya.Prakash,
suganath-prabu.subramani, stable
Hi,
Further to that, in the second last hunk there is a very clear
functionality change:
@@ -8756,12 +8859,12 @@ _scsih_mark_responding_expander(struct
MPT3SAS_ADAPTER *ioc,
continue;
sas_expander->responding = 1;
- if (!encl_pg0_rc)
+ if (enclosure_dev) {
sas_expander->enclosure_logical_id =
- le64_to_cpu(enclosure_pg0.EnclosureLogicalID);
-
- sas_expander->enclosure_handle =
- le16_to_cpu(expander_pg0->EnclosureHandle);
+ le64_to_cpu(enclosure_dev->pg
0.EnclosureLogicalID);
+ sas_expander->enclosure_handle =
+ le16_to_cpu(expander_pg0->EnclosureHandle);
+ }
if (sas_expander->handle == handle)
goto out;
Note that the assignment to sas_expander->enclosure_handle is now
dependent on enclosure_dev being non-NULL.
Busy applying the patch to 4.16 - and now I have no idea whether that
functionality change should be part of the change or not. Having worked
through the rest of the patch it seems good otherwise (Keeping in mind
that I'm not familiar with the code in question, nor do I normally work
on kernel code, and this is definitely the first time I took a peek
anywhere near the IO subsystem).
Kind Regards,
Jaco
On 28/03/2018 23:54, Martin K. Petersen wrote:
> Bart,
>
>> Are you aware that if the 0-day test infrastructure suggests an improvement
>> for a patch that the patch that that improvement applies to gets ignored
>> unless either the patch is reposted with the improvement applied or that it
>> is explained why the suggested improvement is inappropriate?
> Correct. I don't apply anything that causes a 0-day warning. The patch
> will be closed with "Changes Required" status in patchwork.
>
> Always build patch submissions to linux-scsi with:
>
> make C=1 CF="-D__CHECK_ENDIAN__"
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: *** SPAM *** Re: [RFC PATCH] mpt3sas: mpt3sas_scsih_enclosure_find_by_handle can be static
2018-03-28 21:54 ` Martin K. Petersen
(?)
(?)
@ 2018-04-10 7:15 ` Jaco Kroon
2018-04-10 12:46 ` Bart Van Assche
-1 siblings, 1 reply; 11+ messages in thread
From: Jaco Kroon @ 2018-04-10 7:15 UTC (permalink / raw)
To: Martin K. Petersen, Bart Van Assche
Cc: chaitra.basappa, lkp, kbuild-all, linux-scsi, Sathya.Prakash,
suganath-prabu.subramani, stable
Hi Martin, Bart,
I've not seen additional feedback on this (I may simply not be CCed).
I've applied the patch to one of our hosts where we've had endless IO
lockups (with MQ enabled the host died within a day or two, sometimes
sub one hour, without it typically ran for about two weeks). With this
patch (on top of 4.16) we're now at four days and 17 hours, with IO
still going strong (including a mdadm reshape to add a disk, as well as
a rebuild on a drive that failed - concurrently on two different arrays,
same controller). Very subjective, but the host also feels more
responsive under heavy IO load.
What can I do from my side (I've got some development experience) to
help push this patch forward?
Kind Regards,
Jaco
On 28/03/2018 23:54, Martin K. Petersen wrote:
> Bart,
>
>> Are you aware that if the 0-day test infrastructure suggests an improvement
>> for a patch that the patch that that improvement applies to gets ignored
>> unless either the patch is reposted with the improvement applied or that it
>> is explained why the suggested improvement is inappropriate?
> Correct. I don't apply anything that causes a 0-day warning. The patch
> will be closed with "Changes Required" status in patchwork.
>
> Always build patch submissions to linux-scsi with:
>
> make C=1 CF="-D__CHECK_ENDIAN__"
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [RFC PATCH] mpt3sas: mpt3sas_scsih_enclosure_find_by_handle can be static
2018-04-10 7:15 ` Jaco Kroon
@ 2018-04-10 12:46 ` Bart Van Assche
0 siblings, 0 replies; 11+ messages in thread
From: Bart Van Assche @ 2018-04-10 12:46 UTC (permalink / raw)
To: martin.petersen, jaco
Cc: chaitra.basappa, kbuild-all, Sathya.Prakash, lkp, stable,
suganath-prabu.subramani, linux-scsi
On Tue, 2018-04-10 at 09:15 +0200, Jaco Kroon wrote:
> I've not seen additional feedback on this (I may simply not be CCed).
>
> I've applied the patch to one of our hosts where we've had endless IO
> lockups (with MQ enabled the host died within a day or two, sometimes
> sub one hour, without it typically ran for about two weeks). With this
> patch (on top of 4.16) we're now at four days and 17 hours, with IO
> still going strong (including a mdadm reshape to add a disk, as well as
> a rebuild on a drive that failed - concurrently on two different arrays,
> same controller). Very subjective, but the host also feels more
> responsive under heavy IO load.
>
> What can I do from my side (I've got some development experience) to
> help push this patch forward?
Hello Jaco,
If you want to follow mpt3sas development please consider to subscribe to the
linux-scsi mailing list. Recently Broadcom posted a new mpt3sas patch series.
See also https://www.mail-archive.com/linux-scsi@vger.kernel.org/msg72823.html.
Bart.
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2018-04-10 12:46 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-20 10:15 [PATCH] mpt3sas: Cache enclosure pages during enclosure add Chaitra P B
2018-03-20 21:06 ` kbuild test robot
2018-03-20 21:06 ` kbuild test robot
2018-03-20 21:06 ` [RFC PATCH] mpt3sas: mpt3sas_scsih_enclosure_find_by_handle can be static kbuild test robot
2018-03-20 21:06 ` kbuild test robot
2018-03-27 18:55 ` Bart Van Assche
2018-03-28 21:54 ` Martin K. Petersen
2018-03-28 21:54 ` Martin K. Petersen
2018-04-05 11:43 ` *** SPAM *** " Jaco Kroon
2018-04-10 7:15 ` Jaco Kroon
2018-04-10 12:46 ` Bart Van Assche
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.