| From 6aec1b57ac31a9c2646a87ded6579bd4da1371d9 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 9 Jul 2020 15:31:44 +0200 |
| Subject: scsi: megaraid_sas: Clear affinity hint |
| |
| From: Tomas Henzl <thenzl@redhat.com> |
| |
| [ Upstream commit 1eb81df5c53b1e785fdef298d533feab991381e4 ] |
| |
| To avoid a warning in free_irq, clear the affinity hint. |
| |
| Link: https://lore.kernel.org/r/20200709133144.8363-1-thenzl@redhat.com |
| Fixes: f0b9e7bdc309 ("scsi: megaraid_sas: Set affinity for high IOPS reply queues") |
| Acked-by: Sumit Saxena <sumit.saxena@broadcom.com> |
| Signed-off-by: Tomas Henzl <thenzl@redhat.com> |
| Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/scsi/megaraid/megaraid_sas_base.c | 9 ++++++++- |
| 1 file changed, 8 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c |
| index babe85d7b537a..5a95c56ff7c26 100644 |
| --- a/drivers/scsi/megaraid/megaraid_sas_base.c |
| +++ b/drivers/scsi/megaraid/megaraid_sas_base.c |
| @@ -5602,9 +5602,13 @@ megasas_setup_irqs_msix(struct megasas_instance *instance, u8 is_probe) |
| &instance->irq_context[i])) { |
| dev_err(&instance->pdev->dev, |
| "Failed to register IRQ for vector %d.\n", i); |
| - for (j = 0; j < i; j++) |
| + for (j = 0; j < i; j++) { |
| + if (j < instance->low_latency_index_start) |
| + irq_set_affinity_hint( |
| + pci_irq_vector(pdev, j), NULL); |
| free_irq(pci_irq_vector(pdev, j), |
| &instance->irq_context[j]); |
| + } |
| /* Retry irq register for IO_APIC*/ |
| instance->msix_vectors = 0; |
| instance->msix_load_balance = false; |
| @@ -5642,6 +5646,9 @@ megasas_destroy_irqs(struct megasas_instance *instance) { |
| |
| if (instance->msix_vectors) |
| for (i = 0; i < instance->msix_vectors; i++) { |
| + if (i < instance->low_latency_index_start) |
| + irq_set_affinity_hint( |
| + pci_irq_vector(instance->pdev, i), NULL); |
| free_irq(pci_irq_vector(instance->pdev, i), |
| &instance->irq_context[i]); |
| } |
| -- |
| 2.25.1 |
| |