From: Robin Murphy <robin.murphy@arm.com>
To: intel-wired-lan@osuosl.org
Subject: [Intel-wired-lan] [PATCH v1 04/14] scsi: megaraid_sas: Use irq_set_affinity_and_hint
Date: Thu, 17 Jun 2021 20:31:05 +0100 [thread overview]
Message-ID: <ddee52a6-ac70-6e2d-b48e-e9bf38c94265@arm.com> (raw)
In-Reply-To: <20210617182242.8637-5-nitesh@redhat.com>
On 2021-06-17 19:22, Nitesh Narayan Lal wrote:
> 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()
> that clearly indicates the purpose of the usage and is meant to apply the
> affinity and set the affinity_hint pointer. Also, replace
> irq_set_affinity_hint() with irq_update_affinity_hint() when 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>
> ---
> drivers/scsi/megaraid/megaraid_sas_base.c | 25 ++++++++++++++---------
> 1 file changed, 15 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
> index 4d4e9dbe5193..54f4eac09589 100644
> --- a/drivers/scsi/megaraid/megaraid_sas_base.c
> +++ b/drivers/scsi/megaraid/megaraid_sas_base.c
> @@ -5666,7 +5666,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]);
> @@ -5709,7 +5709,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]);
> @@ -5840,22 +5840,27 @@ 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;
> + unsigned int irq;
> int local_numa_node;
> + const struct cpumask *mask;
>
> if (instance->perf_mode == MR_BALANCED_PERF_MODE) {
> local_numa_node = dev_to_node(&instance->pdev->dev);
Drive-by nit: you could assign mask in this scope.
> - 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);
> + mask = cpumask_of_node(local_numa_node);
> + irq_update_affinity_hint(irq, mask);
And this doesn't seem to match what the commit message says?
Robin.
> + }
> }
> }
>
> @@ -5944,7 +5949,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);
> }
>
> /**
>
WARNING: multiple messages have this Message-ID (diff)
From: Robin Murphy <robin.murphy@arm.com>
To: Nitesh Narayan Lal <nitesh@redhat.com>,
linux-kernel@vger.kernel.org, linux-scsi@vger.kernel.org,
intel-wired-lan@lists.osuosl.org, netdev@vger.kernel.org,
linux-api@vger.kernel.org, linux-pci@vger.kernel.org,
tglx@linutronix.de, jesse.brandeburg@intel.com,
mtosatti@redhat.com, mingo@kernel.org, jbrandeb@kernel.org,
frederic@kernel.org, juri.lelli@redhat.com, abelits@marvell.com,
bhelgaas@google.com, rostedt@goodmis.org, peterz@infradead.org,
davem@davemloft.net, akpm@linux-foundation.org,
sfr@canb.auug.org.au, stephen@networkplumber.org,
rppt@linux.vnet.ibm.com, chris.friesen@windriver.com,
maz@kernel.org, nhorman@tuxdriver.com, pjwaskiewicz@gmail.com,
sassmann@redhat.com, thenzl@redhat.com,
kashyap.desai@broadcom.com, sumit.saxena@broadcom.com,
shivasharan.srikanteshwara@broadcom.com,
sathya.prakash@broadcom.com, sreekanth.reddy@broadcom.com,
suganath-prabu.subramani@broadcom.com, james.smart@broadcom.com,
dick.kennedy@broadcom.com, jkc@redhat.com,
faisal.latif@intel.com, shiraz.saleem@intel.com,
tariqt@nvidia.com, ahleihel@redhat.com, kheib@redhat.com,
borisp@nvidia.com, saeedm@nvidia.com, benve@cisco.com,
govind@gmx.com, jassisinghbrar@gmail.com, luobin9@huawei.com,
ajit.khaparde@broadcom.com, sriharsha.basavapatna@broadcom.com,
somnath.kotur@broadcom.com, nilal@redhat.com
Subject: Re: [PATCH v1 04/14] scsi: megaraid_sas: Use irq_set_affinity_and_hint
Date: Thu, 17 Jun 2021 20:31:05 +0100 [thread overview]
Message-ID: <ddee52a6-ac70-6e2d-b48e-e9bf38c94265@arm.com> (raw)
In-Reply-To: <20210617182242.8637-5-nitesh@redhat.com>
On 2021-06-17 19:22, Nitesh Narayan Lal wrote:
> 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()
> that clearly indicates the purpose of the usage and is meant to apply the
> affinity and set the affinity_hint pointer. Also, replace
> irq_set_affinity_hint() with irq_update_affinity_hint() when 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>
> ---
> drivers/scsi/megaraid/megaraid_sas_base.c | 25 ++++++++++++++---------
> 1 file changed, 15 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
> index 4d4e9dbe5193..54f4eac09589 100644
> --- a/drivers/scsi/megaraid/megaraid_sas_base.c
> +++ b/drivers/scsi/megaraid/megaraid_sas_base.c
> @@ -5666,7 +5666,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]);
> @@ -5709,7 +5709,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]);
> @@ -5840,22 +5840,27 @@ 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;
> + unsigned int irq;
> int local_numa_node;
> + const struct cpumask *mask;
>
> if (instance->perf_mode == MR_BALANCED_PERF_MODE) {
> local_numa_node = dev_to_node(&instance->pdev->dev);
Drive-by nit: you could assign mask in this scope.
> - 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);
> + mask = cpumask_of_node(local_numa_node);
> + irq_update_affinity_hint(irq, mask);
And this doesn't seem to match what the commit message says?
Robin.
> + }
> }
> }
>
> @@ -5944,7 +5949,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);
> }
>
> /**
>
next prev parent reply other threads:[~2021-06-17 19:31 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-17 18:22 [Intel-wired-lan] [PATCH v1 00/14] genirq: Cleanup the usage of irq_set_affinity_hint Nitesh Narayan Lal
2021-06-17 18:22 ` Nitesh Narayan Lal
2021-06-17 18:22 ` [Intel-wired-lan] [PATCH v1 01/14] genirq: Provide new interfaces for affinity hints Nitesh Narayan Lal
2021-06-17 18:22 ` Nitesh Narayan Lal
2021-06-25 17:52 ` [Intel-wired-lan] " Nitesh Lal
2021-06-25 17:52 ` Nitesh Lal
2021-06-17 18:22 ` [Intel-wired-lan] [PATCH v1 02/14] iavf: Use irq_update_affinity_hint Nitesh Narayan Lal
2021-06-17 18:22 ` Nitesh Narayan Lal
2021-06-17 18:22 ` [Intel-wired-lan] [PATCH v1 03/14] i40e: " Nitesh Narayan Lal
2021-06-17 18:22 ` Nitesh Narayan Lal
2021-06-17 18:22 ` [Intel-wired-lan] [PATCH v1 04/14] scsi: megaraid_sas: Use irq_set_affinity_and_hint Nitesh Narayan Lal
2021-06-17 18:22 ` Nitesh Narayan Lal
2021-06-17 19:31 ` Robin Murphy [this message]
2021-06-17 19:31 ` Robin Murphy
2021-06-17 19:34 ` [Intel-wired-lan] " Nitesh Lal
2021-06-17 19:34 ` Nitesh Lal
2021-06-17 18:22 ` [Intel-wired-lan] [PATCH v1 05/14] scsi: mpt3sas: " Nitesh Narayan Lal
2021-06-17 18:22 ` Nitesh Narayan Lal
2021-06-17 18:22 ` [Intel-wired-lan] [PATCH v1 06/14] RDMA/i40iw: Use irq_update_affinity_hint Nitesh Narayan Lal
2021-06-17 18:22 ` Nitesh Narayan Lal
2021-06-17 18:22 ` [Intel-wired-lan] [PATCH v1 07/14] enic: " Nitesh Narayan Lal
2021-06-17 18:22 ` Nitesh Narayan Lal
2021-06-17 18:22 ` [Intel-wired-lan] [PATCH v1 08/14] be2net: " Nitesh Narayan Lal
2021-06-17 18:22 ` Nitesh Narayan Lal
2021-06-17 18:22 ` [Intel-wired-lan] [PATCH v1 09/14] ixgbe: " Nitesh Narayan Lal
2021-06-17 18:22 ` Nitesh Narayan Lal
2021-06-17 18:22 ` [Intel-wired-lan] [PATCH v1 10/14] mailbox: " Nitesh Narayan Lal
2021-06-17 18:22 ` Nitesh Narayan Lal
2021-06-17 18:22 ` [Intel-wired-lan] [PATCH v1 11/14] scsi: lpfc: Use irq_set_affinity Nitesh Narayan Lal
2021-06-17 18:22 ` Nitesh Narayan Lal
2021-06-17 18:22 ` [Intel-wired-lan] [PATCH v1 12/14] hinic: Use irq_set_affinity_and_hint Nitesh Narayan Lal
2021-06-17 18:22 ` Nitesh Narayan Lal
2021-06-17 18:22 ` [Intel-wired-lan] [PATCH v1 13/14] net/mlx5: Use irq_update_affinity_hint Nitesh Narayan Lal
2021-06-17 18:22 ` Nitesh Narayan Lal
2021-06-21 8:01 ` [Intel-wired-lan] " Leon Romanovsky
2021-06-21 8:01 ` Leon Romanovsky
2021-06-17 18:22 ` [Intel-wired-lan] [PATCH v1 14/14] net/mlx4: " Nitesh Narayan Lal
2021-06-17 18:22 ` Nitesh Narayan Lal
2021-06-21 8:01 ` [Intel-wired-lan] " Leon Romanovsky
2021-06-21 8:01 ` Leon Romanovsky
2021-06-21 12:59 ` [Intel-wired-lan] " Nitesh Lal
2021-06-21 12:59 ` Nitesh Lal
2021-06-25 21:08 ` [Intel-wired-lan] " Nitesh Lal
2021-06-25 21:08 ` 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=ddee52a6-ac70-6e2d-b48e-e9bf38c94265@arm.com \
--to=robin.murphy@arm.com \
--cc=intel-wired-lan@osuosl.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.