Currently, MSIx vectors name appears in /proc/interrupts is "megasas"
which is same for all the vectors. This patch provides the unique
name to all megaraid_sas controllers and its associated MSIx interrupts.

Suggested-by: Konstantin Shalygin <k0...@k0ste.ru>
Signed-off-by: Sumit Saxena <sumit.sax...@broadcom.com>
Signed-off-by: Chandrakanth Patil <chandrakanth.pa...@broadcom.com>
---
 drivers/scsi/megaraid/megaraid_sas.h      | 3 +++
 drivers/scsi/megaraid/megaraid_sas_base.c | 8 ++++++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/megaraid/megaraid_sas.h 
b/drivers/scsi/megaraid/megaraid_sas.h
index a6e788c..d194548 100644
--- a/drivers/scsi/megaraid/megaraid_sas.h
+++ b/drivers/scsi/megaraid/megaraid_sas.h
@@ -24,6 +24,8 @@
 #define MEGASAS_VERSION                                "07.710.50.00-rc1"
 #define MEGASAS_RELDATE                                "June 28, 2019"
 
+#define MEGASAS_MSIX_NAME_LEN                  16
+
 /*
  * Device IDs
  */
@@ -2203,6 +2205,7 @@ struct megasas_aen_event {
 };
 
 struct megasas_irq_context {
+       char name[MEGASAS_MSIX_NAME_LEN];
        struct megasas_instance *instance;
        u32 MSIxIndex;
        u32 os_irq;
diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c 
b/drivers/scsi/megaraid/megaraid_sas_base.c
index 42cf38c..ebb3fc2 100644
--- a/drivers/scsi/megaraid/megaraid_sas_base.c
+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
@@ -5546,9 +5546,11 @@ megasas_setup_irqs_ioapic(struct megasas_instance 
*instance)
        pdev = instance->pdev;
        instance->irq_context[0].instance = instance;
        instance->irq_context[0].MSIxIndex = 0;
+       snprintf(instance->irq_context->name, MEGASAS_MSIX_NAME_LEN, "%s%d",
+               "megasas", instance->host->host_no);
        if (request_irq(pci_irq_vector(pdev, 0),
                        instance->instancet->service_isr, IRQF_SHARED,
-                       "megasas", &instance->irq_context[0])) {
+                       instance->irq_context->name, 
&instance->irq_context[0])) {
                dev_err(&instance->pdev->dev,
                                "Failed to register IRQ from %s %d\n",
                                __func__, __LINE__);
@@ -5580,8 +5582,10 @@ megasas_setup_irqs_msix(struct megasas_instance 
*instance, u8 is_probe)
        for (i = 0; i < instance->msix_vectors; i++) {
                instance->irq_context[i].instance = instance;
                instance->irq_context[i].MSIxIndex = i;
+               snprintf(instance->irq_context[i].name, MEGASAS_MSIX_NAME_LEN, 
"%s%d-msix%d",
+                       "megasas", instance->host->host_no, i);
                if (request_irq(pci_irq_vector(pdev, i),
-                       instance->instancet->service_isr, 0, "megasas",
+                       instance->instancet->service_isr, 0, 
instance->irq_context[i].name,
                        &instance->irq_context[i])) {
                        dev_err(&instance->pdev->dev,
                                "Failed to register IRQ for vector %d.\n", i);
-- 
2.9.5

Reply via email to