OSDN Git Service

scsi: megaraid_sas: Add module parameter for FW Async event logging
authorShivasharan S <shivasharan.srikanteshwara@broadcom.com>
Fri, 28 Jun 2019 09:50:40 +0000 (02:50 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 12 Jul 2019 00:59:09 +0000 (20:59 -0400)
Add module parameter to control logging levels of async event
notifications from firmware that get logged to system log.  Also, allow
changing the value from sysfs after driver load.

Signed-off-by: Shivasharan S <shivasharan.srikanteshwara@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/megaraid/megaraid_sas_base.c

index 1bd91c7..8b0dc07 100644 (file)
@@ -117,6 +117,10 @@ MODULE_PARM_DESC(perf_mode, "Performance mode (only for Aero adapters), options:
                "default mode is 'balanced'"
                );
 
+int event_log_level = MFI_EVT_CLASS_CRITICAL;
+module_param(event_log_level, int, 0644);
+MODULE_PARM_DESC(event_log_level, "Asynchronous event logging level- range is: -2(CLASS_DEBUG) to 4(CLASS_DEAD), Default: 2(CLASS_CRITICAL)");
+
 MODULE_LICENSE("GPL");
 MODULE_VERSION(MEGASAS_VERSION);
 MODULE_AUTHOR("megaraidlinux.pdl@broadcom.com");
@@ -416,7 +420,13 @@ megasas_decode_evt(struct megasas_instance *instance)
        union megasas_evt_class_locale class_locale;
        class_locale.word = le32_to_cpu(evt_detail->cl.word);
 
-       if (class_locale.members.class >= MFI_EVT_CLASS_CRITICAL)
+       if ((event_log_level < MFI_EVT_CLASS_DEBUG) ||
+           (event_log_level > MFI_EVT_CLASS_DEAD)) {
+               printk(KERN_WARNING "megaraid_sas: provided event log level is out of range, setting it to default 2(CLASS_CRITICAL), permissible range is: -2 to 4\n");
+               event_log_level = MFI_EVT_CLASS_CRITICAL;
+       }
+
+       if (class_locale.members.class >= event_log_level)
                dev_info(&instance->pdev->dev, "%d (%s/0x%04x/%s) - %s\n",
                        le32_to_cpu(evt_detail->seq_num),
                        format_timestamp(le32_to_cpu(evt_detail->time_stamp)),
@@ -8762,6 +8772,12 @@ static int __init megasas_init(void)
                goto err_pcidrv;
        }
 
+       if ((event_log_level < MFI_EVT_CLASS_DEBUG) ||
+           (event_log_level > MFI_EVT_CLASS_DEAD)) {
+               printk(KERN_WARNING "megarid_sas: provided event log level is out of range, setting it to default 2(CLASS_CRITICAL), permissible range is: -2 to 4\n");
+               event_log_level = MFI_EVT_CLASS_CRITICAL;
+       }
+
        rval = driver_create_file(&megasas_pci_driver.driver,
                                  &driver_attr_version);
        if (rval)