diff mbox series

[V2] megaraid_sas: clear affinity hint

Message ID 20200709133144.8363-1-thenzl@redhat.com (mailing list archive)
State Mainlined
Commit 1eb81df5c53b1e785fdef298d533feab991381e4
Headers show
Series [V2] megaraid_sas: clear affinity hint | expand

Commit Message

Tomas Henzl July 9, 2020, 1:31 p.m. UTC
To avoid a warning in free_irq, clear the affinity hint.

Fixes: f0b9e7bdc309e8cc63a640009715626376e047c6 ("scsi: megaraid_sas: Set affinity for high IOPS reply queues")

Signed-off-by: Tomas Henzl <thenzl@redhat.com>
---
V2: Added 'Fixes' and low_latency_index_start check as
asked by Sumit.

 drivers/scsi/megaraid/megaraid_sas_base.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

Comments

Martin K. Petersen July 21, 2020, 3:02 a.m. UTC | #1
> To avoid a warning in free_irq, clear the affinity hint.

Sumit: Please review!

	https://patchwork.kernel.org/patch/11654391/

Thanks!
Sumit Saxena July 21, 2020, 6 a.m. UTC | #2
On Thu, Jul 9, 2020 at 7:01 PM Tomas Henzl <thenzl@redhat.com> wrote:
>
> To avoid a warning in free_irq, clear the affinity hint.
>
> Fixes: f0b9e7bdc309e8cc63a640009715626376e047c6 ("scsi: megaraid_sas: Set affinity for high IOPS reply queues")
>
> Signed-off-by: Tomas Henzl <thenzl@redhat.com>
Looks good to me.
Acked-by: Sumit Saxena <sumit.saxena@broadcom.com>

> ---
> V2: Added 'Fixes' and low_latency_index_start check as
> asked by Sumit.
>
>  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 a378facdd..b40279ae5 100644
> --- a/drivers/scsi/megaraid/megaraid_sas_base.c
> +++ b/drivers/scsi/megaraid/megaraid_sas_base.c
> @@ -5596,9 +5596,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;
> @@ -5636,6 +5640,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.21.3
>
Martin K. Petersen July 22, 2020, 4:28 a.m. UTC | #3
On Thu, 9 Jul 2020 15:31:44 +0200, Tomas Henzl wrote:

> To avoid a warning in free_irq, clear the affinity hint.
> 
> Fixes: f0b9e7bdc309e8cc63a640009715626376e047c6 ("scsi: megaraid_sas: Set affinity for high IOPS reply queues")

Applied to 5.9/scsi-queue, thanks!

[1/1] scsi: megaraid_sas: Clear affinity hint
      https://git.kernel.org/mkp/scsi/c/925230b8723f
diff mbox series

Patch

diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
index a378facdd..b40279ae5 100644
--- a/drivers/scsi/megaraid/megaraid_sas_base.c
+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
@@ -5596,9 +5596,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;
@@ -5636,6 +5640,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]);
 		}