All of lore.kernel.org
 help / color / mirror / Atom feed
From: "tip-bot2 for Nitesh Narayan Lal" <tip-bot2@linutronix.de>
To: linux-tip-commits@vger.kernel.org
Cc: Nitesh Narayan Lal <nitesh@redhat.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Sumit Saxena <sumit.saxena@broadcom.com>,
	x86@kernel.org, linux-kernel@vger.kernel.org, maz@kernel.org
Subject: [tip: irq/core] scsi: megaraid_sas: Use irq_set_affinity_and_hint()
Date: Fri, 10 Dec 2021 19:54:09 -0000	[thread overview]
Message-ID: <163916604949.23020.15564762185103133685.tip-bot2@tip-bot2> (raw)
In-Reply-To: <20210903152430.244937-5-nitesh@redhat.com>

The following commit has been merged into the irq/core branch of tip:

Commit-ID:     8049da6f3943d0ac51931b8064b2e4769a69a967
Gitweb:        https://git.kernel.org/tip/8049da6f3943d0ac51931b8064b2e4769a69a967
Author:        Nitesh Narayan Lal <nitesh@redhat.com>
AuthorDate:    Fri, 03 Sep 2021 11:24:20 -04:00
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Fri, 10 Dec 2021 20:47:38 +01:00

scsi: megaraid_sas: Use irq_set_affinity_and_hint()

The driver uses irq_set_affinity_hint() specifically for the high IOPS
queue interrupts for two purposes:

 - To set the affinity_hint which is consumed by the userspace for
   distributing the interrupts

 - To apply an affinity that it provides

The driver enforces its own affinity to bind the high IOPS queue interrupts
to the local NUMA node. However, irq_set_affinity_hint() applying the
provided cpumask as an affinity for the interrupt is an undocumented side
effect.

To remove this side effect irq_set_affinity_hint() has been marked
as deprecated and new interfaces have been introduced. Hence, replace the
irq_set_affinity_hint() with the new interface irq_set_affinity_and_hint()
where the provided mask needs to be applied as the affinity and
affinity_hint pointer needs to be set and replace with
irq_update_affinity_hint() where only affinity_hint needs to be updated.

Change the megasas_set_high_iops_queue_affinity_hint function name to
megasas_set_high_iops_queue_affinity_and_hint to clearly indicate that the
function is setting both affinity and affinity_hint.

Signed-off-by: Nitesh Narayan Lal <nitesh@redhat.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Sumit Saxena <sumit.saxena@broadcom.com>
Link: https://lore.kernel.org/r/20210903152430.244937-5-nitesh@redhat.com

---
 drivers/scsi/megaraid/megaraid_sas_base.c | 27 ++++++++++++----------
 1 file changed, 15 insertions(+), 12 deletions(-)

diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
index aeb95f4..82e1e24 100644
--- a/drivers/scsi/megaraid/megaraid_sas_base.c
+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
@@ -5720,7 +5720,7 @@ megasas_setup_irqs_msix(struct megasas_instance *instance, u8 is_probe)
 				"Failed to register IRQ for vector %d.\n", i);
 			for (j = 0; j < i; j++) {
 				if (j < instance->low_latency_index_start)
-					irq_set_affinity_hint(
+					irq_update_affinity_hint(
 						pci_irq_vector(pdev, j), NULL);
 				free_irq(pci_irq_vector(pdev, j),
 					 &instance->irq_context[j]);
@@ -5763,7 +5763,7 @@ 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(
+				irq_update_affinity_hint(
 				    pci_irq_vector(instance->pdev, i), NULL);
 			free_irq(pci_irq_vector(instance->pdev, i),
 				 &instance->irq_context[i]);
@@ -5894,22 +5894,25 @@ int megasas_get_device_list(struct megasas_instance *instance)
 }
 
 /**
- * megasas_set_high_iops_queue_affinity_hint -	Set affinity hint for high IOPS queues
- * @instance:					Adapter soft state
- * return:					void
+ * megasas_set_high_iops_queue_affinity_and_hint -	Set affinity and hint
+ *							for high IOPS queues
+ * @instance:						Adapter soft state
+ * return:						void
  */
 static inline void
-megasas_set_high_iops_queue_affinity_hint(struct megasas_instance *instance)
+megasas_set_high_iops_queue_affinity_and_hint(struct megasas_instance *instance)
 {
 	int i;
-	int local_numa_node;
+	unsigned int irq;
+	const struct cpumask *mask;
 
 	if (instance->perf_mode == MR_BALANCED_PERF_MODE) {
-		local_numa_node = dev_to_node(&instance->pdev->dev);
+		mask = cpumask_of_node(dev_to_node(&instance->pdev->dev));
 
-		for (i = 0; i < instance->low_latency_index_start; i++)
-			irq_set_affinity_hint(pci_irq_vector(instance->pdev, i),
-				cpumask_of_node(local_numa_node));
+		for (i = 0; i < instance->low_latency_index_start; i++) {
+			irq = pci_irq_vector(instance->pdev, i);
+			irq_set_affinity_and_hint(irq, mask);
+		}
 	}
 }
 
@@ -5998,7 +6001,7 @@ megasas_alloc_irq_vectors(struct megasas_instance *instance)
 		instance->msix_vectors = 0;
 
 	if (instance->smp_affinity_enable)
-		megasas_set_high_iops_queue_affinity_hint(instance);
+		megasas_set_high_iops_queue_affinity_and_hint(instance);
 }
 
 /**

  reply	other threads:[~2021-12-10 19:54 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-03 15:24 [PATCH v6 00/14] genirq: Cleanup the abuse of irq_set_affinity_hint() Nitesh Narayan Lal
2021-09-03 15:24 ` [PATCH v6 01/14] genirq: Provide new interfaces for affinity hints Nitesh Narayan Lal
2021-09-03 15:24 ` [PATCH v6 02/14] iavf: Use irq_update_affinity_hint Nitesh Narayan Lal
2021-12-10 19:54   ` [tip: irq/core] iavf: Use irq_update_affinity_hint() tip-bot2 for Nitesh Narayan Lal
2021-09-03 15:24 ` [PATCH v6 03/14] i40e: Use irq_update_affinity_hint Nitesh Narayan Lal
2021-12-10 19:54   ` [tip: irq/core] i40e: Use irq_update_affinity_hint() tip-bot2 for Nitesh Narayan Lal
2021-09-03 15:24 ` [PATCH v6 04/14] scsi: megaraid_sas: Use irq_set_affinity_and_hint Nitesh Narayan Lal
2021-12-10 19:54   ` tip-bot2 for Nitesh Narayan Lal [this message]
2021-09-03 15:24 ` [PATCH v6 05/14] scsi: mpt3sas: " Nitesh Narayan Lal
2021-12-10 19:54   ` [tip: irq/core] scsi: mpt3sas: Use irq_set_affinity_and_hint() tip-bot2 for Nitesh Narayan Lal
2021-09-03 15:24 ` [PATCH v6 06/14] RDMA/irdma: Use irq_update_affinity_hint Nitesh Narayan Lal
2021-12-10 19:54   ` [tip: irq/core] RDMA/irdma: Use irq_update_affinity_hint() tip-bot2 for Nitesh Narayan Lal
2021-09-03 15:24 ` [PATCH v6 07/14] enic: Use irq_update_affinity_hint Nitesh Narayan Lal
2021-12-10 19:54   ` [tip: irq/core] enic: Use irq_update_affinity_hint() tip-bot2 for Nitesh Narayan Lal
2021-09-03 15:24 ` [PATCH v6 08/14] be2net: Use irq_update_affinity_hint Nitesh Narayan Lal
2021-12-10 19:54   ` [tip: irq/core] be2net: Use irq_update_affinity_hint() tip-bot2 for Nitesh Narayan Lal
2021-09-03 15:24 ` [PATCH v6 09/14] ixgbe: Use irq_update_affinity_hint Nitesh Narayan Lal
2021-12-10 19:54   ` [tip: irq/core] ixgbe: Use irq_update_affinity_hint() tip-bot2 for Nitesh Narayan Lal
2021-09-03 15:24 ` [PATCH v6 10/14] mailbox: Use irq_update_affinity_hint Nitesh Narayan Lal
2021-12-10 19:54   ` [tip: irq/core] mailbox: Use irq_update_affinity_hint() tip-bot2 for Nitesh Narayan Lal
2021-09-03 15:24 ` [PATCH v6 11/14] scsi: lpfc: Use irq_set_affinity Nitesh Narayan Lal
2021-12-10 19:54   ` [tip: irq/core] scsi: lpfc: Use irq_set_affinity() tip-bot2 for Nitesh Narayan Lal
2021-09-03 15:24 ` [PATCH v6 12/14] hinic: Use irq_set_affinity_and_hint Nitesh Narayan Lal
2021-12-10 19:54   ` [tip: irq/core] hinic: Use irq_set_affinity_and_hint() tip-bot2 for Nitesh Narayan Lal
2021-09-03 15:24 ` [PATCH v6 13/14] net/mlx5: Use irq_set_affinity_and_hint Nitesh Narayan Lal
2021-12-10 19:54   ` [tip: irq/core] net/mlx5: Use irq_set_affinity_and_hint() tip-bot2 for Nitesh Narayan Lal
2021-09-03 15:24 ` [PATCH v6 14/14] net/mlx4: Use irq_update_affinity_hint Nitesh Narayan Lal
2021-12-10 19:54   ` [tip: irq/core] net/mlx4: Use irq_update_affinity_hint() tip-bot2 for Nitesh Narayan Lal
2021-09-13 14:34 ` [PATCH v6 00/14] genirq: Cleanup the abuse of irq_set_affinity_hint() Nitesh Lal
2021-11-24 19:30   ` Thomas Gleixner
2021-11-24 22:16     ` Nitesh Lal
2021-12-10 13:51       ` Nitesh Lal
2021-12-10 18:44         ` Thomas Gleixner
2021-12-10 18:54           ` Nitesh Lal

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=163916604949.23020.15564762185103133685.tip-bot2@tip-bot2 \
    --to=tip-bot2@linutronix.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=maz@kernel.org \
    --cc=nitesh@redhat.com \
    --cc=sumit.saxena@broadcom.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.