* [PATCH 00/11] smartpqi updates
@ 2019-08-22 20:38 Don Brace
2019-08-22 20:38 ` [PATCH 01/11] smartpqi: add module param for exposure order Don Brace
` (11 more replies)
0 siblings, 12 replies; 13+ messages in thread
From: Don Brace @ 2019-08-22 20:38 UTC (permalink / raw)
To: Kevin.Barnett, scott.teel, Justin.Lindley, scott.benesh,
bader.alisaleh, gerry.morong, mahesh.rajashekhara, hch, jejb,
joseph.szczypek, POSWALD, shunyong.yang
Cc: linux-scsi
These patches are based on Linus's tree
The changes are:
smartpqi-add-module-param-for-exposure-order
- allow LDs first
smartpqi-add-pci-ids-for-fiberhome-controller
- add in new controller support
smartpqi-add-module-param-to-hide-vsep
- allow driver to not expose the vsep device.
smartpqi-add-sysfs-entries
- add in vendor, model, and serial number of controller
devices.
smartpqi-add-bay-identifier
- add in bay and enclosure identifiers.
smartpqi-correct-hang-when-deleting-32-lds
- only allow one pending rescan at a time.
smartpqi-add-gigabyte-controller
- add in new controller support
smartpqi-correct-regnewd-return-value
- tell applications that a rescan is currently in progress.
smartpqi-add-new-pci-ids
- add in new controller support
smartpqi-update-copyright
smartpqi-bump-version
---
Dave Carroll (1):
smartpqi: add module param to hide vsep
Don Brace (2):
smartpqi: update copyright
smartpqi: bump version
Gilbert Wu (5):
smartpqi: add module param for exposure order
smartpqi: add pci ids for fiberhome controller
smartpqi: add bay identifier
smartpqi: add gigabyte controller
smartpqi: add new pci ids
Mahesh Rajashekhara (1):
smartpqi: correct hang when deleting 32 lds
Murthy Bhat (2):
smartpqi: add sysfs entries
smartpqi: correct REGNEWD return status
drivers/scsi/smartpqi/Kconfig | 2
drivers/scsi/smartpqi/smartpqi.h | 20 ++
drivers/scsi/smartpqi/smartpqi_init.c | 236 +++++++++++++++++++++---
drivers/scsi/smartpqi/smartpqi_sas_transport.c | 102 ++++++++++
4 files changed, 325 insertions(+), 35 deletions(-)
--
Signature
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 01/11] smartpqi: add module param for exposure order
2019-08-22 20:38 [PATCH 00/11] smartpqi updates Don Brace
@ 2019-08-22 20:38 ` Don Brace
2019-08-22 20:39 ` [PATCH 02/11] smartpqi: add pci ids for fiberhome controller Don Brace
` (10 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Don Brace @ 2019-08-22 20:38 UTC (permalink / raw)
To: Kevin.Barnett, scott.teel, Justin.Lindley, scott.benesh,
bader.alisaleh, gerry.morong, mahesh.rajashekhara, hch, jejb,
joseph.szczypek, POSWALD, shunyong.yang
Cc: linux-scsi
From: Gilbert Wu <gilbert.wu@microsemi.com>
- expose physical devices before logical devices
Reviewed-by: Scott Benesh <scott.benesh@microsemi.com>
Reviewed-by: Kevin Barnett <kevin.barnett@microsemi.com>
Signed-off-by: Gilbert Wu <gilbert.wu@microsemi.com>
Signed-off-by: Don Brace <don.brace@microsemi.com>
---
drivers/scsi/smartpqi/smartpqi_init.c | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
index 8fd5ffc55792..4324234aa26c 100644
--- a/drivers/scsi/smartpqi/smartpqi_init.c
+++ b/drivers/scsi/smartpqi/smartpqi_init.c
@@ -145,6 +145,12 @@ MODULE_PARM_DESC(lockup_action, "Action to take when controller locked up.\n"
"\t\tSupported: none, reboot, panic\n"
"\t\tDefault: none");
+static int pqi_expose_ld_first;
+module_param_named(expose_ld_first,
+ pqi_expose_ld_first, int, 0644);
+MODULE_PARM_DESC(expose_ld_first,
+ "Expose logical drives before physical drives.");
+
static char *raid_levels[] = {
"RAID-0",
"RAID-4",
@@ -1988,6 +1994,8 @@ static int pqi_update_scsi_devices(struct pqi_ctrl_info *ctrl_info)
unsigned int num_valid_devices;
bool is_physical_device;
u8 *scsi3addr;
+ unsigned int physical_index;
+ unsigned int logical_index;
static char *out_of_memory_msg =
"failed to allocate memory, device discovery stopped";
@@ -2050,19 +2058,23 @@ static int pqi_update_scsi_devices(struct pqi_ctrl_info *ctrl_info)
device = NULL;
num_valid_devices = 0;
+ physical_index = 0;
+ logical_index = 0;
for (i = 0; i < num_new_devices; i++) {
- if (i < num_physicals) {
+ if ((!pqi_expose_ld_first && i < num_physicals) ||
+ (pqi_expose_ld_first && i >= num_logicals)) {
is_physical_device = true;
- phys_lun_ext_entry = &physdev_list->lun_entries[i];
+ phys_lun_ext_entry =
+ &physdev_list->lun_entries[physical_index++];
log_lun_ext_entry = NULL;
scsi3addr = phys_lun_ext_entry->lunid;
} else {
is_physical_device = false;
phys_lun_ext_entry = NULL;
log_lun_ext_entry =
- &logdev_list->lun_entries[i - num_physicals];
+ &logdev_list->lun_entries[logical_index++];
scsi3addr = log_lun_ext_entry->lunid;
}
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 02/11] smartpqi: add pci ids for fiberhome controller
2019-08-22 20:38 [PATCH 00/11] smartpqi updates Don Brace
2019-08-22 20:38 ` [PATCH 01/11] smartpqi: add module param for exposure order Don Brace
@ 2019-08-22 20:39 ` Don Brace
2019-08-22 20:39 ` [PATCH 03/11] smartpqi: add module param to hide vsep Don Brace
` (9 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Don Brace @ 2019-08-22 20:39 UTC (permalink / raw)
To: Kevin.Barnett, scott.teel, Justin.Lindley, scott.benesh,
bader.alisaleh, gerry.morong, mahesh.rajashekhara, hch, jejb,
joseph.szczypek, POSWALD, shunyong.yang
Cc: linux-scsi
From: Gilbert Wu <gilbert.wu@microsemi.com>
Reviewed-by: Scott Benesh <scott.benesh@microsemi.com>
Reviewed-by: Kevin Barnett <kevin.barnett@microsemi.com>
Signed-off-by: Gilbert Wu <gilbert.wu@microsemi.com>
Signed-off-by: Don Brace <don.brace@microsemi.com>
---
drivers/scsi/smartpqi/smartpqi_init.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
index 4324234aa26c..fa6403b2741c 100644
--- a/drivers/scsi/smartpqi/smartpqi_init.c
+++ b/drivers/scsi/smartpqi/smartpqi_init.c
@@ -8254,6 +8254,22 @@ static const struct pci_device_id pqi_pci_id_table[] = {
PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
PCI_VENDOR_ID_HP, 0x1101)
},
+ {
+ PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
+ 0x1d8d, 0x0800)
+ },
+ {
+ PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
+ 0x1d8d, 0x0908)
+ },
+ {
+ PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
+ 0x1d8d, 0x0806)
+ },
+ {
+ PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
+ 0x1d8d, 0x0916)
+ },
{
PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
PCI_ANY_ID, PCI_ANY_ID)
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 03/11] smartpqi: add module param to hide vsep
2019-08-22 20:38 [PATCH 00/11] smartpqi updates Don Brace
2019-08-22 20:38 ` [PATCH 01/11] smartpqi: add module param for exposure order Don Brace
2019-08-22 20:39 ` [PATCH 02/11] smartpqi: add pci ids for fiberhome controller Don Brace
@ 2019-08-22 20:39 ` Don Brace
2019-08-22 20:39 ` [PATCH 04/11] smartpqi: add sysfs entries Don Brace
` (8 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Don Brace @ 2019-08-22 20:39 UTC (permalink / raw)
To: Kevin.Barnett, scott.teel, Justin.Lindley, scott.benesh,
bader.alisaleh, gerry.morong, mahesh.rajashekhara, hch, jejb,
joseph.szczypek, POSWALD, shunyong.yang
Cc: linux-scsi
From: Dave Carroll <david.carroll@microsemi.com>
Reviewed-by: Scott Benesh <scott.benesh@microsemi.com>
Reviewed-by: Kevin Barnett <kevin.barnett@microsemi.com>
Signed-off-by: Dave Carroll <david.carroll@microsemi.com>
Signed-off-by: Don Brace <don.brace@microsemi.com>
---
drivers/scsi/smartpqi/smartpqi.h | 1 +
drivers/scsi/smartpqi/smartpqi_init.c | 26 ++++++++++++++++++++++++++
2 files changed, 27 insertions(+)
diff --git a/drivers/scsi/smartpqi/smartpqi.h b/drivers/scsi/smartpqi/smartpqi.h
index e8e768849c70..0a629f2f447a 100644
--- a/drivers/scsi/smartpqi/smartpqi.h
+++ b/drivers/scsi/smartpqi/smartpqi.h
@@ -822,6 +822,7 @@ union pqi_reset_register {
#define PQI_HBA_BUS 2
#define PQI_EXTERNAL_RAID_VOLUME_BUS 3
#define PQI_MAX_BUS PQI_EXTERNAL_RAID_VOLUME_BUS
+#define PQI_VSEP_CISS_BTL 379
struct report_lun_header {
__be32 list_length;
diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
index fa6403b2741c..f289fbd4220d 100644
--- a/drivers/scsi/smartpqi/smartpqi_init.c
+++ b/drivers/scsi/smartpqi/smartpqi_init.c
@@ -151,6 +151,12 @@ module_param_named(expose_ld_first,
MODULE_PARM_DESC(expose_ld_first,
"Expose logical drives before physical drives.");
+static int pqi_hide_vsep;
+module_param_named(hide_vsep,
+ pqi_hide_vsep, int, 0644);
+MODULE_PARM_DESC(hide_vsep,
+ "Hide the virtual SEP for direct attached drives.");
+
static char *raid_levels[] = {
"RAID-0",
"RAID-4",
@@ -1951,6 +1957,11 @@ static inline bool pqi_skip_device(u8 *scsi3addr)
return false;
}
+static inline void pqi_mask_device(u8 *scsi3addr)
+{
+ scsi3addr[3] |= 0xc0;
+}
+
static inline bool pqi_is_device_with_sas_address(struct pqi_scsi_dev *device)
{
if (!device->is_physical_device)
@@ -2031,6 +2042,21 @@ static int pqi_update_scsi_devices(struct pqi_ctrl_info *ctrl_info)
rc = -ENOMEM;
goto out;
}
+ if (pqi_hide_vsep) {
+ int i;
+
+ for (i = num_physicals - 1; i >= 0; i--) {
+ phys_lun_ext_entry =
+ &physdev_list->lun_entries[i];
+ if (CISS_GET_DRIVE_NUMBER(
+ phys_lun_ext_entry->lunid) ==
+ PQI_VSEP_CISS_BTL) {
+ pqi_mask_device(
+ phys_lun_ext_entry->lunid);
+ break;
+ }
+ }
+ }
}
num_new_devices = num_physicals + num_logicals;
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 04/11] smartpqi: add sysfs entries
2019-08-22 20:38 [PATCH 00/11] smartpqi updates Don Brace
` (2 preceding siblings ...)
2019-08-22 20:39 ` [PATCH 03/11] smartpqi: add module param to hide vsep Don Brace
@ 2019-08-22 20:39 ` Don Brace
2019-08-22 20:39 ` [PATCH 05/11] smartpqi: add bay identifier Don Brace
` (7 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Don Brace @ 2019-08-22 20:39 UTC (permalink / raw)
To: Kevin.Barnett, scott.teel, Justin.Lindley, scott.benesh,
bader.alisaleh, gerry.morong, mahesh.rajashekhara, hch, jejb,
joseph.szczypek, POSWALD, shunyong.yang
Cc: linux-scsi
From: Murthy Bhat <Murthy.Bhat@microsemi.com>
- serial number
- model
- vendor
Reviewed-by: Scott Benesh <scott.benesh@microsemi.com>
Reviewed-by: Kevin Barnett <kevin.barnett@microsemi.com>
Signed-off-by: Murthy Bhat <Murthy.Bhat@microsemi.com>
Signed-off-by: Don Brace <don.brace@microsemi.com>
---
drivers/scsi/smartpqi/smartpqi.h | 15 +++-
drivers/scsi/smartpqi/smartpqi_init.c | 125 +++++++++++++++++++++++++++++----
2 files changed, 124 insertions(+), 16 deletions(-)
diff --git a/drivers/scsi/smartpqi/smartpqi.h b/drivers/scsi/smartpqi/smartpqi.h
index 0a629f2f447a..2b21c4ebc491 100644
--- a/drivers/scsi/smartpqi/smartpqi.h
+++ b/drivers/scsi/smartpqi/smartpqi.h
@@ -1074,6 +1074,9 @@ struct pqi_ctrl_info {
unsigned int ctrl_id;
struct pci_dev *pci_dev;
char firmware_version[11];
+ char serial_number[17];
+ char model[17];
+ char vendor[9];
void __iomem *iomem_base;
struct pqi_ctrl_registers __iomem *registers;
struct pqi_device_registers __iomem *pqi_registers;
@@ -1225,9 +1228,17 @@ struct bmic_identify_controller {
__le16 extended_logical_unit_count;
u8 reserved1[34];
__le16 firmware_build_number;
- u8 reserved2[100];
+ u8 reserved2[8];
+ u8 vendor_id[8];
+ u8 product_id[16];
+ u8 reserved3[68];
u8 controller_mode;
- u8 reserved3[32];
+ u8 reserved4[32];
+};
+
+struct bmic_sense_subsystem_info {
+ u8 reserved[44];
+ u8 ctrl_serial_number[16];
};
#define SA_EXPANDER_SMP_DEVICE 0x05
diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
index f289fbd4220d..7d09998db1b1 100644
--- a/drivers/scsi/smartpqi/smartpqi_init.c
+++ b/drivers/scsi/smartpqi/smartpqi_init.c
@@ -484,6 +484,7 @@ static int pqi_build_raid_path_request(struct pqi_ctrl_info *ctrl_info,
/* fall through */
case BMIC_IDENTIFY_CONTROLLER:
case BMIC_IDENTIFY_PHYSICAL_DEVICE:
+ case BMIC_SENSE_SUBSYSTEM_INFORMATION:
request->data_direction = SOP_READ_FLAG;
cdb[0] = BMIC_READ;
cdb[6] = cmd;
@@ -612,6 +613,14 @@ static inline int pqi_identify_controller(struct pqi_ctrl_info *ctrl_info,
buffer, sizeof(*buffer));
}
+static inline int pqi_sense_subsystem_info(struct pqi_ctrl_info *ctrl_info,
+ struct bmic_sense_subsystem_info *sense_info)
+{
+ return pqi_send_ctrl_raid_request(ctrl_info,
+ BMIC_SENSE_SUBSYSTEM_INFORMATION,
+ sense_info, sizeof(*sense_info));
+}
+
static inline int pqi_scsi_inquiry(struct pqi_ctrl_info *ctrl_info,
u8 *scsi3addr, u16 vpd_page, void *buffer, size_t buffer_length)
{
@@ -6129,23 +6138,65 @@ static int pqi_ioctl(struct scsi_device *sdev, unsigned int cmd,
return rc;
}
-static ssize_t pqi_version_show(struct device *dev,
+static ssize_t pqi_firmware_version_show(struct device *dev,
struct device_attribute *attr, char *buffer)
{
- ssize_t count = 0;
struct Scsi_Host *shost;
struct pqi_ctrl_info *ctrl_info;
shost = class_to_shost(dev);
ctrl_info = shost_to_hba(shost);
- count += snprintf(buffer + count, PAGE_SIZE - count,
- " driver: %s\n", DRIVER_VERSION BUILD_TIMESTAMP);
+ return snprintf(buffer, PAGE_SIZE, "%s\n", ctrl_info->firmware_version);
+}
+
+static ssize_t pqi_driver_version_show(struct device *dev,
+ struct device_attribute *attr, char *buffer)
+{
+ struct Scsi_Host *shost;
+ struct pqi_ctrl_info *ctrl_info;
+
+ shost = class_to_shost(dev);
+ ctrl_info = shost_to_hba(shost);
- count += snprintf(buffer + count, PAGE_SIZE - count,
- "firmware: %s\n", ctrl_info->firmware_version);
+ return snprintf(buffer, PAGE_SIZE,
+ "%s\n", DRIVER_VERSION BUILD_TIMESTAMP);
+}
- return count;
+static ssize_t pqi_serial_number_show(struct device *dev,
+ struct device_attribute *attr, char *buffer)
+{
+ struct Scsi_Host *shost;
+ struct pqi_ctrl_info *ctrl_info;
+
+ shost = class_to_shost(dev);
+ ctrl_info = shost_to_hba(shost);
+
+ return snprintf(buffer, PAGE_SIZE, "%s\n", ctrl_info->serial_number);
+}
+
+static ssize_t pqi_model_show(struct device *dev,
+ struct device_attribute *attr, char *buffer)
+{
+ struct Scsi_Host *shost;
+ struct pqi_ctrl_info *ctrl_info;
+
+ shost = class_to_shost(dev);
+ ctrl_info = shost_to_hba(shost);
+
+ return snprintf(buffer, PAGE_SIZE, "%s\n", ctrl_info->model);
+}
+
+static ssize_t pqi_vendor_show(struct device *dev,
+ struct device_attribute *attr, char *buffer)
+{
+ struct Scsi_Host *shost;
+ struct pqi_ctrl_info *ctrl_info;
+
+ shost = class_to_shost(dev);
+ ctrl_info = shost_to_hba(shost);
+
+ return snprintf(buffer, PAGE_SIZE, "%s\n", ctrl_info->vendor);
}
static ssize_t pqi_host_rescan_store(struct device *dev,
@@ -6198,13 +6249,21 @@ static ssize_t pqi_lockup_action_store(struct device *dev,
return -EINVAL;
}
-static DEVICE_ATTR(version, 0444, pqi_version_show, NULL);
+static DEVICE_ATTR(driver_version, 0444, pqi_driver_version_show, NULL);
+static DEVICE_ATTR(firmware_version, 0444, pqi_firmware_version_show, NULL);
+static DEVICE_ATTR(model, 0444, pqi_model_show, NULL);
+static DEVICE_ATTR(serial_number, 0444, pqi_serial_number_show, NULL);
+static DEVICE_ATTR(vendor, 0444, pqi_vendor_show, NULL);
static DEVICE_ATTR(rescan, 0200, NULL, pqi_host_rescan_store);
static DEVICE_ATTR(lockup_action, 0644,
pqi_lockup_action_show, pqi_lockup_action_store);
static struct device_attribute *pqi_shost_attrs[] = {
- &dev_attr_version,
+ &dev_attr_driver_version,
+ &dev_attr_firmware_version,
+ &dev_attr_model,
+ &dev_attr_serial_number,
+ &dev_attr_vendor,
&dev_attr_rescan,
&dev_attr_lockup_action,
NULL
@@ -6596,7 +6655,30 @@ static int pqi_reset(struct pqi_ctrl_info *ctrl_info)
return rc;
}
-static int pqi_get_ctrl_firmware_version(struct pqi_ctrl_info *ctrl_info)
+static int pqi_get_ctrl_serial_number(struct pqi_ctrl_info *ctrl_info)
+{
+ int rc;
+ struct bmic_sense_subsystem_info *sense_info;
+
+ sense_info = kzalloc(sizeof(*sense_info), GFP_KERNEL);
+ if (!sense_info)
+ return -ENOMEM;
+
+ rc = pqi_sense_subsystem_info(ctrl_info, sense_info);
+ if (rc)
+ goto out;
+
+ memcpy(ctrl_info->serial_number, sense_info->ctrl_serial_number,
+ sizeof(sense_info->ctrl_serial_number));
+ ctrl_info->serial_number[sizeof(sense_info->ctrl_serial_number)] = '\0';
+
+out:
+ kfree(sense_info);
+
+ return rc;
+}
+
+static int pqi_get_ctrl_product_details(struct pqi_ctrl_info *ctrl_info)
{
int rc;
struct bmic_identify_controller *identify;
@@ -6617,6 +6699,14 @@ static int pqi_get_ctrl_firmware_version(struct pqi_ctrl_info *ctrl_info)
sizeof(ctrl_info->firmware_version),
"-%u", get_unaligned_le16(&identify->firmware_build_number));
+ memcpy(ctrl_info->model, identify->product_id,
+ sizeof(identify->product_id));
+ ctrl_info->model[sizeof(identify->product_id)] = '\0';
+
+ memcpy(ctrl_info->vendor, identify->vendor_id,
+ sizeof(identify->vendor_id));
+ ctrl_info->vendor[sizeof(identify->vendor_id)] = '\0';
+
out:
kfree(identify);
@@ -7136,10 +7226,17 @@ static int pqi_ctrl_init(struct pqi_ctrl_info *ctrl_info)
if (rc)
return rc;
- rc = pqi_get_ctrl_firmware_version(ctrl_info);
+ rc = pqi_get_ctrl_product_details(ctrl_info);
+ if (rc) {
+ dev_err(&ctrl_info->pci_dev->dev,
+ "error obtaining product details\n");
+ return rc;
+ }
+
+ rc = pqi_get_ctrl_serial_number(ctrl_info);
if (rc) {
dev_err(&ctrl_info->pci_dev->dev,
- "error obtaining firmware version\n");
+ "error obtaining ctrl serial number\n");
return rc;
}
@@ -7279,10 +7376,10 @@ static int pqi_ctrl_init_resume(struct pqi_ctrl_info *ctrl_info)
return rc;
}
- rc = pqi_get_ctrl_firmware_version(ctrl_info);
+ rc = pqi_get_ctrl_product_details(ctrl_info);
if (rc) {
dev_err(&ctrl_info->pci_dev->dev,
- "error obtaining firmware version\n");
+ "error obtaining product detail\n");
return rc;
}
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 05/11] smartpqi: add bay identifier
2019-08-22 20:38 [PATCH 00/11] smartpqi updates Don Brace
` (3 preceding siblings ...)
2019-08-22 20:39 ` [PATCH 04/11] smartpqi: add sysfs entries Don Brace
@ 2019-08-22 20:39 ` Don Brace
2019-08-22 20:39 ` [PATCH 06/11] smartpqi: correct hang when deleting 32 lds Don Brace
` (6 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Don Brace @ 2019-08-22 20:39 UTC (permalink / raw)
To: Kevin.Barnett, scott.teel, Justin.Lindley, scott.benesh,
bader.alisaleh, gerry.morong, mahesh.rajashekhara, hch, jejb,
joseph.szczypek, POSWALD, shunyong.yang
Cc: linux-scsi
From: Gilbert Wu <gilbert.wu@microsemi.com>
- return identify physical device "Phys_Bay_in_Box"
as bay_identifier.
Reviewed-by: Scott Benesh <scott.benesh@microsemi.com>
Reviewed-by: Kevin Barnett <kevin.barnett@microsemi.com>
Signed-off-by: Gilbert Wu <gilbert.wu@microsemi.com>
Signed-off-by: Don Brace <don.brace@microsemi.com>
---
drivers/scsi/smartpqi/smartpqi.h | 4 +
drivers/scsi/smartpqi/smartpqi_init.c | 13 ++-
drivers/scsi/smartpqi/smartpqi_sas_transport.c | 102 ++++++++++++++++++++++++
3 files changed, 113 insertions(+), 6 deletions(-)
diff --git a/drivers/scsi/smartpqi/smartpqi.h b/drivers/scsi/smartpqi/smartpqi.h
index 2b21c4ebc491..79d2af36f655 100644
--- a/drivers/scsi/smartpqi/smartpqi.h
+++ b/drivers/scsi/smartpqi/smartpqi.h
@@ -931,6 +931,9 @@ struct pqi_scsi_dev {
u8 active_path_index;
u8 path_map;
u8 bay;
+ u8 box_index;
+ u8 phys_box_on_bus;
+ u8 phy_connected_dev_type;
u8 box[8];
u16 phys_connector[8];
bool raid_bypass_configured; /* RAID bypass configured */
@@ -1242,6 +1245,7 @@ struct bmic_sense_subsystem_info {
};
#define SA_EXPANDER_SMP_DEVICE 0x05
+#define SA_CONTROLLER_DEVICE 0x07
/*SCSI Invalid Device Type for SAS devices*/
#define PQI_SAS_SCSI_INVALID_DEVTYPE 0xff
diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
index 7d09998db1b1..a6cb49b8e5d0 100644
--- a/drivers/scsi/smartpqi/smartpqi_init.c
+++ b/drivers/scsi/smartpqi/smartpqi_init.c
@@ -1413,7 +1413,9 @@ static void pqi_get_physical_disk_info(struct pqi_ctrl_info *ctrl_info,
device->queue_depth = PQI_PHYSICAL_DISK_DEFAULT_MAX_QUEUE_DEPTH;
return;
}
-
+ device->box_index = id_phys->box_index;
+ device->phys_box_on_bus = id_phys->phys_box_on_bus;
+ device->phy_connected_dev_type = id_phys->phy_connected_dev_type[0];
device->queue_depth =
get_unaligned_le16(&id_phys->current_queue_depth_limit);
device->device_type = id_phys->device_type;
@@ -1740,6 +1742,10 @@ static void pqi_scsi_update_device(struct pqi_scsi_dev *existing_device,
existing_device->active_path_index = new_device->active_path_index;
existing_device->path_map = new_device->path_map;
existing_device->bay = new_device->bay;
+ existing_device->box_index = new_device->box_index;
+ existing_device->phys_box_on_bus = new_device->phys_box_on_bus;
+ existing_device->phy_connected_dev_type =
+ new_device->phy_connected_dev_type;
memcpy(existing_device->box, new_device->box,
sizeof(existing_device->box));
memcpy(existing_device->phys_connector, new_device->phys_connector,
@@ -2169,11 +2175,10 @@ static int pqi_update_scsi_devices(struct pqi_ctrl_info *ctrl_info)
device->aio_handle =
phys_lun_ext_entry->aio_handle;
}
- if (device->devtype == TYPE_DISK ||
- device->devtype == TYPE_ZBC) {
+
pqi_get_physical_disk_info(ctrl_info,
device, id_phys);
- }
+
} else {
memcpy(device->volume_id, log_lun_ext_entry->volume_id,
sizeof(device->volume_id));
diff --git a/drivers/scsi/smartpqi/smartpqi_sas_transport.c b/drivers/scsi/smartpqi/smartpqi_sas_transport.c
index 5cca1b9ef1f1..6776dfc1d317 100644
--- a/drivers/scsi/smartpqi/smartpqi_sas_transport.c
+++ b/drivers/scsi/smartpqi/smartpqi_sas_transport.c
@@ -312,12 +312,110 @@ static int pqi_sas_get_linkerrors(struct sas_phy *phy)
static int pqi_sas_get_enclosure_identifier(struct sas_rphy *rphy,
u64 *identifier)
{
- return 0;
+
+ int rc;
+ unsigned long flags;
+ struct Scsi_Host *shost;
+ struct pqi_ctrl_info *ctrl_info;
+ struct pqi_scsi_dev *found_device;
+ struct pqi_scsi_dev *device;
+
+ if (!rphy)
+ return -ENODEV;
+
+ shost = rphy_to_shost(rphy);
+ ctrl_info = shost_to_hba(shost);
+ spin_lock_irqsave(&ctrl_info->scsi_device_list_lock, flags);
+ found_device = pqi_find_device_by_sas_rphy(ctrl_info, rphy);
+
+ if (!found_device) {
+ rc = -ENODEV;
+ goto out;
+ }
+
+ if (found_device->devtype == TYPE_ENCLOSURE) {
+ *identifier = get_unaligned_be64(&found_device->wwid);
+ rc = 0;
+ goto out;
+ }
+
+ if (found_device->box_index == 0xff ||
+ found_device->phys_box_on_bus == 0 ||
+ found_device->bay == 0xff) {
+ rc = -EINVAL;
+ goto out;
+ }
+
+ list_for_each_entry(device, &ctrl_info->scsi_device_list,
+ scsi_device_list_entry) {
+ if (device->devtype == TYPE_ENCLOSURE &&
+ device->box_index == found_device->box_index &&
+ device->phys_box_on_bus ==
+ found_device->phys_box_on_bus &&
+ memcmp(device->phys_connector,
+ found_device->phys_connector, 2) == 0) {
+ *identifier =
+ get_unaligned_be64(&device->wwid);
+ rc = 0;
+ goto out;
+ }
+ }
+
+ if (found_device->phy_connected_dev_type != SA_CONTROLLER_DEVICE) {
+ rc = -EINVAL;
+ goto out;
+ }
+
+ list_for_each_entry(device, &ctrl_info->scsi_device_list,
+ scsi_device_list_entry) {
+ if (device->devtype == TYPE_ENCLOSURE &&
+ CISS_GET_DRIVE_NUMBER(device->scsi3addr) ==
+ PQI_VSEP_CISS_BTL) {
+ *identifier = get_unaligned_be64(&device->wwid);
+ rc = 0;
+ goto out;
+ }
+ }
+
+ rc = -EINVAL;
+out:
+ spin_unlock_irqrestore(&ctrl_info->scsi_device_list_lock, flags);
+
+ return rc;
+
}
static int pqi_sas_get_bay_identifier(struct sas_rphy *rphy)
{
- return -ENXIO;
+
+ int rc;
+ unsigned long flags;
+ struct pqi_ctrl_info *ctrl_info;
+ struct pqi_scsi_dev *device;
+ struct Scsi_Host *shost;
+
+ if (!rphy)
+ return -ENODEV;
+
+ shost = rphy_to_shost(rphy);
+ ctrl_info = shost_to_hba(shost);
+ spin_lock_irqsave(&ctrl_info->scsi_device_list_lock, flags);
+ device = pqi_find_device_by_sas_rphy(ctrl_info, rphy);
+
+ if (!device) {
+ rc = -ENODEV;
+ goto out;
+ }
+
+ if (device->bay == 0xff)
+ rc = -EINVAL;
+ else
+ rc = device->bay;
+
+out:
+ spin_unlock_irqrestore(&ctrl_info->scsi_device_list_lock, flags);
+
+ return rc;
}
static int pqi_sas_phy_reset(struct sas_phy *phy, int hard_reset)
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 06/11] smartpqi: correct hang when deleting 32 lds
2019-08-22 20:38 [PATCH 00/11] smartpqi updates Don Brace
` (4 preceding siblings ...)
2019-08-22 20:39 ` [PATCH 05/11] smartpqi: add bay identifier Don Brace
@ 2019-08-22 20:39 ` Don Brace
2019-08-22 20:39 ` [PATCH 07/11] smartpqi: add gigabyte controller Don Brace
` (5 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Don Brace @ 2019-08-22 20:39 UTC (permalink / raw)
To: Kevin.Barnett, scott.teel, Justin.Lindley, scott.benesh,
bader.alisaleh, gerry.morong, mahesh.rajashekhara, hch, jejb,
joseph.szczypek, POSWALD, shunyong.yang
Cc: linux-scsi
From: Mahesh Rajashekhara <mahesh.rajashekhara@microsemi.com>
- when each ld is deleted, a rescan event is triggered
in the driver. These can stack up waiting on
mutex_lock.
- change to mutex_try_lock and schedule a rescan
for later.
Reviewed-by: Scott Benesh <scott.benesh@microsemi.com>
Reviewed-by: Kevin Barnett <kevin.barnett@microsemi.com>
Signed-off-by: Mahesh Rajashekhara <mahesh.rajashekhara@microsemi.com>
Signed-off-by: Don Brace <don.brace@microsemi.com>
---
drivers/scsi/smartpqi/smartpqi_init.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
index a6cb49b8e5d0..9801606dadfa 100644
--- a/drivers/scsi/smartpqi/smartpqi_init.c
+++ b/drivers/scsi/smartpqi/smartpqi_init.c
@@ -2236,18 +2236,20 @@ static void pqi_remove_all_scsi_devices(struct pqi_ctrl_info *ctrl_info)
static int pqi_scan_scsi_devices(struct pqi_ctrl_info *ctrl_info)
{
- int rc;
+ int rc = 0;
if (pqi_ctrl_offline(ctrl_info))
return -ENXIO;
- mutex_lock(&ctrl_info->scan_mutex);
-
- rc = pqi_update_scsi_devices(ctrl_info);
- if (rc)
+ if (!mutex_trylock(&ctrl_info->scan_mutex)) {
pqi_schedule_rescan_worker_delayed(ctrl_info);
- mutex_unlock(&ctrl_info->scan_mutex);
+ } else {
+ rc = pqi_update_scsi_devices(ctrl_info);
+ if (rc)
+ pqi_schedule_rescan_worker_delayed(ctrl_info);
+ mutex_unlock(&ctrl_info->scan_mutex);
+ }
return rc;
}
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 07/11] smartpqi: add gigabyte controller
2019-08-22 20:38 [PATCH 00/11] smartpqi updates Don Brace
` (5 preceding siblings ...)
2019-08-22 20:39 ` [PATCH 06/11] smartpqi: correct hang when deleting 32 lds Don Brace
@ 2019-08-22 20:39 ` Don Brace
2019-08-22 20:39 ` [PATCH 08/11] smartpqi: correct REGNEWD return status Don Brace
` (4 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Don Brace @ 2019-08-22 20:39 UTC (permalink / raw)
To: Kevin.Barnett, scott.teel, Justin.Lindley, scott.benesh,
bader.alisaleh, gerry.morong, mahesh.rajashekhara, hch, jejb,
joseph.szczypek, POSWALD, shunyong.yang
Cc: linux-scsi
From: Gilbert Wu <gilbert.wu@microsemi.com>
Reviewed-by: Scott Benesh <scott.benesh@microsemi.com>
Reviewed-by: Kevin Barnett <kevin.barnett@microsemi.com>
Signed-off-by: Gilbert Wu <gilbert.wu@microsemi.com>
Signed-off-by: Don Brace <don.brace@microsemi.com>
---
drivers/scsi/smartpqi/smartpqi_init.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
index 9801606dadfa..159e9cfc2996 100644
--- a/drivers/scsi/smartpqi/smartpqi_init.c
+++ b/drivers/scsi/smartpqi/smartpqi_init.c
@@ -8400,6 +8400,10 @@ static const struct pci_device_id pqi_pci_id_table[] = {
PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
0x1d8d, 0x0916)
},
+ {
+ PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
+ PCI_VENDOR_ID_GIGABYTE, 0x1000)
+ },
{
PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
PCI_ANY_ID, PCI_ANY_ID)
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 08/11] smartpqi: correct REGNEWD return status
2019-08-22 20:38 [PATCH 00/11] smartpqi updates Don Brace
` (6 preceding siblings ...)
2019-08-22 20:39 ` [PATCH 07/11] smartpqi: add gigabyte controller Don Brace
@ 2019-08-22 20:39 ` Don Brace
2019-08-22 20:39 ` [PATCH 09/11] smartpqi: add new pci ids Don Brace
` (3 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Don Brace @ 2019-08-22 20:39 UTC (permalink / raw)
To: Kevin.Barnett, scott.teel, Justin.Lindley, scott.benesh,
bader.alisaleh, gerry.morong, mahesh.rajashekhara, hch, jejb,
joseph.szczypek, POSWALD, shunyong.yang
Cc: linux-scsi
From: Murthy Bhat <Murthy.Bhat@microsemi.com>
return -EINPROGRESS when a rescan worker is queued.
Reviewed-by: Scott Benesh <scott.benesh@microsemi.com>
Reviewed-by: Kevin Barnett <kevin.barnett@microsemi.com>
Signed-off-by: Murthy Bhat <Murthy.Bhat@microsemi.com>
Signed-off-by: Don Brace <don.brace@microsemi.com>
---
drivers/scsi/smartpqi/smartpqi_init.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
index 159e9cfc2996..61371ea35bb3 100644
--- a/drivers/scsi/smartpqi/smartpqi_init.c
+++ b/drivers/scsi/smartpqi/smartpqi_init.c
@@ -2243,7 +2243,7 @@ static int pqi_scan_scsi_devices(struct pqi_ctrl_info *ctrl_info)
if (!mutex_trylock(&ctrl_info->scan_mutex)) {
pqi_schedule_rescan_worker_delayed(ctrl_info);
-
+ rc = -EINPROGRESS;
} else {
rc = pqi_update_scsi_devices(ctrl_info);
if (rc)
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 09/11] smartpqi: add new pci ids
2019-08-22 20:38 [PATCH 00/11] smartpqi updates Don Brace
` (7 preceding siblings ...)
2019-08-22 20:39 ` [PATCH 08/11] smartpqi: correct REGNEWD return status Don Brace
@ 2019-08-22 20:39 ` Don Brace
2019-08-22 20:39 ` [PATCH 10/11] smartpqi: update copyright Don Brace
` (2 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Don Brace @ 2019-08-22 20:39 UTC (permalink / raw)
To: Kevin.Barnett, scott.teel, Justin.Lindley, scott.benesh,
bader.alisaleh, gerry.morong, mahesh.rajashekhara, hch, jejb,
joseph.szczypek, POSWALD, shunyong.yang
Cc: linux-scsi
From: Gilbert Wu <gilbert.wu@microsemi.com>
- add
PM8222 VID_9005, DID_028F, SVID_1BD4 and SDID_004F
3101E-4i (1G, no GB) VID_9005, DID_028F, SVID_9005 and SDID_0808
3102E-8i (2G, no GB) VID_9005, DID_028F, SVID_9005 and SDID_0809
Reviewed-by: Scott Benesh <scott.benesh@microsemi.com>
Reviewed-by: Kevin Barnett <kevin.barnett@microsemi.com>
Signed-off-by: Gilbert Wu <gilbert.wu@microsemi.com>
Signed-off-by: Don Brace <don.brace@microsemi.com>
---
drivers/scsi/smartpqi/smartpqi_init.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
index 61371ea35bb3..c9da65117120 100644
--- a/drivers/scsi/smartpqi/smartpqi_init.c
+++ b/drivers/scsi/smartpqi/smartpqi_init.c
@@ -8164,6 +8164,10 @@ static const struct pci_device_id pqi_pci_id_table[] = {
PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
0x1bd4, 0x004c)
},
+ {
+ PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
+ 0x1bd4, 0x004f)
+ },
{
PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
0x19e5, 0xd227)
@@ -8228,6 +8232,14 @@ static const struct pci_device_id pqi_pci_id_table[] = {
PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
PCI_VENDOR_ID_ADAPTEC2, 0x0807)
},
+ {
+ PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
+ PCI_VENDOR_ID_ADAPTEC2, 0x0808)
+ },
+ {
+ PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
+ PCI_VENDOR_ID_ADAPTEC2, 0x0809)
+ },
{
PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
PCI_VENDOR_ID_ADAPTEC2, 0x0900)
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 10/11] smartpqi: update copyright
2019-08-22 20:38 [PATCH 00/11] smartpqi updates Don Brace
` (8 preceding siblings ...)
2019-08-22 20:39 ` [PATCH 09/11] smartpqi: add new pci ids Don Brace
@ 2019-08-22 20:39 ` Don Brace
2019-08-22 20:40 ` [PATCH 11/11] smartpqi: bump version Don Brace
2019-08-29 22:40 ` [PATCH 00/11] smartpqi updates Martin K. Petersen
11 siblings, 0 replies; 13+ messages in thread
From: Don Brace @ 2019-08-22 20:39 UTC (permalink / raw)
To: Kevin.Barnett, scott.teel, Justin.Lindley, scott.benesh,
bader.alisaleh, gerry.morong, mahesh.rajashekhara, hch, jejb,
joseph.szczypek, POSWALD, shunyong.yang
Cc: linux-scsi
Reviewed-by: Scott Benesh <scott.benesh@microsemi.com>
Reviewed-by: Kevin Barnett <kevin.barnett@microsemi.com>
Signed-off-by: Don Brace <don.brace@microsemi.com>
---
drivers/scsi/smartpqi/Kconfig | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/scsi/smartpqi/Kconfig b/drivers/scsi/smartpqi/Kconfig
index 97e159c2cecd..bc6506884e3b 100644
--- a/drivers/scsi/smartpqi/Kconfig
+++ b/drivers/scsi/smartpqi/Kconfig
@@ -1,6 +1,8 @@
#
# Kernel configuration file for the SMARTPQI
#
+# Copyright (c) 2019 Microchip Technology Inc. and its subsidiaries
+# Copyright (c) 2017-2018 Microsemi Corporation
# Copyright (c) 2016 Microsemi Corporation
# Copyright (c) 2016 PMC-Sierra, Inc.
# (mailto:esc.storagedev@microsemi.com)
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 11/11] smartpqi: bump version
2019-08-22 20:38 [PATCH 00/11] smartpqi updates Don Brace
` (9 preceding siblings ...)
2019-08-22 20:39 ` [PATCH 10/11] smartpqi: update copyright Don Brace
@ 2019-08-22 20:40 ` Don Brace
2019-08-29 22:40 ` [PATCH 00/11] smartpqi updates Martin K. Petersen
11 siblings, 0 replies; 13+ messages in thread
From: Don Brace @ 2019-08-22 20:40 UTC (permalink / raw)
To: Kevin.Barnett, scott.teel, Justin.Lindley, scott.benesh,
bader.alisaleh, gerry.morong, mahesh.rajashekhara, hch, jejb,
joseph.szczypek, POSWALD, shunyong.yang
Cc: linux-scsi
Reviewed-by: Scott Benesh <scott.benesh@microsemi.com>
Reviewed-by: Gerry Morong <gerry.morong@microsemi.com>
Signed-off-by: Don Brace <don.brace@microsemi.com>
---
drivers/scsi/smartpqi/smartpqi_init.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
index c9da65117120..ea5409bebf57 100644
--- a/drivers/scsi/smartpqi/smartpqi_init.c
+++ b/drivers/scsi/smartpqi/smartpqi_init.c
@@ -33,11 +33,11 @@
#define BUILD_TIMESTAMP
#endif
-#define DRIVER_VERSION "1.2.6-015"
+#define DRIVER_VERSION "1.2.8-026"
#define DRIVER_MAJOR 1
#define DRIVER_MINOR 2
-#define DRIVER_RELEASE 6
-#define DRIVER_REVISION 15
+#define DRIVER_RELEASE 8
+#define DRIVER_REVISION 26
#define DRIVER_NAME "Microsemi PQI Driver (v" \
DRIVER_VERSION BUILD_TIMESTAMP ")"
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 00/11] smartpqi updates
2019-08-22 20:38 [PATCH 00/11] smartpqi updates Don Brace
` (10 preceding siblings ...)
2019-08-22 20:40 ` [PATCH 11/11] smartpqi: bump version Don Brace
@ 2019-08-29 22:40 ` Martin K. Petersen
11 siblings, 0 replies; 13+ messages in thread
From: Martin K. Petersen @ 2019-08-29 22:40 UTC (permalink / raw)
To: Don Brace
Cc: Kevin.Barnett, scott.teel, Justin.Lindley, scott.benesh,
bader.alisaleh, gerry.morong, mahesh.rajashekhara, hch, jejb,
joseph.szczypek, POSWALD, shunyong.yang, linux-scsi
Don,
> These patches are based on Linus's tree
Applied to 5.4/scsi-queue. In the future, please make your commit
descriptions a bit more verbose. Doesn't matter for adding new PCI ids.
But it would be nice with some additional background for the more
intricate functional driver changes.
Thanks!
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2019-08-29 22:40 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-22 20:38 [PATCH 00/11] smartpqi updates Don Brace
2019-08-22 20:38 ` [PATCH 01/11] smartpqi: add module param for exposure order Don Brace
2019-08-22 20:39 ` [PATCH 02/11] smartpqi: add pci ids for fiberhome controller Don Brace
2019-08-22 20:39 ` [PATCH 03/11] smartpqi: add module param to hide vsep Don Brace
2019-08-22 20:39 ` [PATCH 04/11] smartpqi: add sysfs entries Don Brace
2019-08-22 20:39 ` [PATCH 05/11] smartpqi: add bay identifier Don Brace
2019-08-22 20:39 ` [PATCH 06/11] smartpqi: correct hang when deleting 32 lds Don Brace
2019-08-22 20:39 ` [PATCH 07/11] smartpqi: add gigabyte controller Don Brace
2019-08-22 20:39 ` [PATCH 08/11] smartpqi: correct REGNEWD return status Don Brace
2019-08-22 20:39 ` [PATCH 09/11] smartpqi: add new pci ids Don Brace
2019-08-22 20:39 ` [PATCH 10/11] smartpqi: update copyright Don Brace
2019-08-22 20:40 ` [PATCH 11/11] smartpqi: bump version Don Brace
2019-08-29 22:40 ` [PATCH 00/11] smartpqi updates Martin K. Petersen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).