]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
scsi: smartpqi: add module parameters
authorKevin Barnett <kevin.barnett@microsemi.com>
Wed, 3 May 2017 23:55:43 +0000 (18:55 -0500)
committerChuck Anderson <chuck.anderson@oracle.com>
Wed, 26 Jul 2017 04:07:03 +0000 (21:07 -0700)
Orabug: 2619102126447813

Add module parameters to disable heartbeat support and to disable
shutting down the controller when a controller is taken offline.

Reviewed-by: Scott Benesh <scott.benesh@microsemi.com>
Signed-off-by: Kevin Barnett <kevin.barnett@microsemi.com>
Signed-off-by: Don Brace <don.brace@microsemi.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
(cherry picked from commit 5a259e32ba32c380537f3d186a311e528b9f9c94)
Signed-off-by: Brian Maly <brian.maly@oracle.com>
drivers/scsi/smartpqi/smartpqi_init.c

index 6c6bd9caefab91505b232644b5bf6c0b79dae079..4a84374029b40ab3c950aee66004ac1e2ca13059 100644 (file)
@@ -122,6 +122,18 @@ module_param_named(disable_device_id_wildcards,
 MODULE_PARM_DESC(disable_device_id_wildcards,
        "Disable device ID wildcards.");
 
+static int pqi_disable_heartbeat;
+module_param_named(disable_heartbeat,
+       pqi_disable_heartbeat, int, 0644);
+MODULE_PARM_DESC(disable_heartbeat,
+       "Disable heartbeat.");
+
+static int pqi_disable_ctrl_shutdown;
+module_param_named(disable_ctrl_shutdown,
+       pqi_disable_ctrl_shutdown, int, 0644);
+MODULE_PARM_DESC(disable_ctrl_shutdown,
+       "Disable controller shutdown when controller locked up.");
+
 static char *pqi_lockup_action_param;
 module_param_named(lockup_action,
        pqi_lockup_action_param, charp, 0644);
@@ -5996,10 +6008,16 @@ static int pqi_process_config_table(struct pqi_ctrl_info *ctrl_info)
 
                switch (get_unaligned_le16(&section->section_id)) {
                case PQI_CONFIG_TABLE_SECTION_HEARTBEAT:
-                       ctrl_info->heartbeat_counter = table_iomem_addr +
-                               section_offset +
-                               offsetof(struct pqi_config_table_heartbeat,
-                                       heartbeat_counter);
+                       if (pqi_disable_heartbeat)
+                               dev_warn(&ctrl_info->pci_dev->dev,
+                               "heartbeat disabled by module parameter\n");
+                       else
+                               ctrl_info->heartbeat_counter =
+                                       table_iomem_addr +
+                                       section_offset +
+                                       offsetof(
+                                       struct pqi_config_table_heartbeat,
+                                               heartbeat_counter);
                        break;
                }
 
@@ -6589,7 +6607,8 @@ static void pqi_take_ctrl_offline(struct pqi_ctrl_info *ctrl_info)
        ctrl_info->controller_online = false;
        ctrl_info->pqi_mode_enabled = false;
        pqi_ctrl_block_requests(ctrl_info);
-       sis_shutdown_ctrl(ctrl_info);
+       if (!pqi_disable_ctrl_shutdown)
+               sis_shutdown_ctrl(ctrl_info);
        pci_disable_device(ctrl_info->pci_dev);
        dev_err(&ctrl_info->pci_dev->dev, "controller offline\n");
        schedule_work(&ctrl_info->ctrl_offline_work);