netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net] nfp: use irq_update_affinity_hint()
@ 2024-11-07 11:50 Mohammad Heib
  2024-11-10 13:31 ` Simon Horman
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Mohammad Heib @ 2024-11-07 11:50 UTC (permalink / raw)
  To: netdev, oss-drivers, louis.peens; +Cc: Mohammad Heib

irq_set_affinity_hint() is deprecated, Use irq_update_affinity_hint()
instead. This removes the side-effect of actually applying the affinity.

The driver does not really need to worry about spreading its IRQs across
CPUs. The core code already takes care of that. when the driver applies the
affinities by itself, it breaks the users' expectations:

1. The user configures irqbalance with IRQBALANCE_BANNED_CPULIST in
   order to prevent IRQs from being moved to certain CPUs that run a
   real-time workload.

2. nfp device reopening will resets the affinity
   in nfp_net_netdev_open().

3. nfp has no idea about irqbalance's config, so it may move an IRQ to
   a banned CPU. The real-time workload suffers unacceptable latency.

Signed-off-by: Mohammad Heib <mheib@redhat.com>
---
 drivers/net/ethernet/netronome/nfp/nfp_net_common.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
index 6e0929af0f72..98e098c09c03 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
+++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
@@ -829,7 +829,7 @@ nfp_net_prepare_vector(struct nfp_net *nn, struct nfp_net_r_vector *r_vec,
 		return err;
 	}
 
-	irq_set_affinity_hint(r_vec->irq_vector, &r_vec->affinity_mask);
+	irq_update_affinity_hint(r_vec->irq_vector, &r_vec->affinity_mask);
 
 	nn_dbg(nn, "RV%02d: irq=%03d/%03d\n", idx, r_vec->irq_vector,
 	       r_vec->irq_entry);
@@ -840,7 +840,7 @@ nfp_net_prepare_vector(struct nfp_net *nn, struct nfp_net_r_vector *r_vec,
 static void
 nfp_net_cleanup_vector(struct nfp_net *nn, struct nfp_net_r_vector *r_vec)
 {
-	irq_set_affinity_hint(r_vec->irq_vector, NULL);
+	irq_update_affinity_hint(r_vec->irq_vector, NULL);
 	nfp_net_napi_del(&nn->dp, r_vec);
 	free_irq(r_vec->irq_vector, r_vec);
 }
-- 
2.34.3


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH net] nfp: use irq_update_affinity_hint()
  2024-11-07 11:50 [PATCH net] nfp: use irq_update_affinity_hint() Mohammad Heib
@ 2024-11-10 13:31 ` Simon Horman
  2024-11-11  5:33 ` Louis Peens
  2024-11-12  0:10 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 4+ messages in thread
From: Simon Horman @ 2024-11-10 13:31 UTC (permalink / raw)
  To: Mohammad Heib; +Cc: netdev, oss-drivers, louis.peens

On Thu, Nov 07, 2024 at 01:50:02PM +0200, Mohammad Heib wrote:
> irq_set_affinity_hint() is deprecated, Use irq_update_affinity_hint()
> instead. This removes the side-effect of actually applying the affinity.
> 
> The driver does not really need to worry about spreading its IRQs across
> CPUs. The core code already takes care of that. when the driver applies the
> affinities by itself, it breaks the users' expectations:
> 
> 1. The user configures irqbalance with IRQBALANCE_BANNED_CPULIST in
>    order to prevent IRQs from being moved to certain CPUs that run a
>    real-time workload.
> 
> 2. nfp device reopening will resets the affinity
>    in nfp_net_netdev_open().
> 
> 3. nfp has no idea about irqbalance's config, so it may move an IRQ to
>    a banned CPU. The real-time workload suffers unacceptable latency.
> 
> Signed-off-by: Mohammad Heib <mheib@redhat.com>

Reviewed-by: Simon Horman <horms@kernel.org>


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH net] nfp: use irq_update_affinity_hint()
  2024-11-07 11:50 [PATCH net] nfp: use irq_update_affinity_hint() Mohammad Heib
  2024-11-10 13:31 ` Simon Horman
@ 2024-11-11  5:33 ` Louis Peens
  2024-11-12  0:10 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 4+ messages in thread
From: Louis Peens @ 2024-11-11  5:33 UTC (permalink / raw)
  To: Mohammad Heib; +Cc: netdev, oss-drivers

On Thu, Nov 07, 2024 at 01:50:02PM +0200, Mohammad Heib wrote:
> irq_set_affinity_hint() is deprecated, Use irq_update_affinity_hint()
> instead. This removes the side-effect of actually applying the affinity.
> 
> The driver does not really need to worry about spreading its IRQs across
> CPUs. The core code already takes care of that. when the driver applies the
> affinities by itself, it breaks the users' expectations:
> 
> 1. The user configures irqbalance with IRQBALANCE_BANNED_CPULIST in
>    order to prevent IRQs from being moved to certain CPUs that run a
>    real-time workload.
> 
> 2. nfp device reopening will resets the affinity
>    in nfp_net_netdev_open().
> 
> 3. nfp has no idea about irqbalance's config, so it may move an IRQ to
>    a banned CPU. The real-time workload suffers unacceptable latency.
> 
> Signed-off-by: Mohammad Heib <mheib@redhat.com>
> ---
>  drivers/net/ethernet/netronome/nfp/nfp_net_common.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
> index 6e0929af0f72..98e098c09c03 100644
> --- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
> +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
> @@ -829,7 +829,7 @@ nfp_net_prepare_vector(struct nfp_net *nn, struct nfp_net_r_vector *r_vec,
>  		return err;
>  	}
>  
> -	irq_set_affinity_hint(r_vec->irq_vector, &r_vec->affinity_mask);
> +	irq_update_affinity_hint(r_vec->irq_vector, &r_vec->affinity_mask);
>  
>  	nn_dbg(nn, "RV%02d: irq=%03d/%03d\n", idx, r_vec->irq_vector,
>  	       r_vec->irq_entry);
> @@ -840,7 +840,7 @@ nfp_net_prepare_vector(struct nfp_net *nn, struct nfp_net_r_vector *r_vec,
>  static void
>  nfp_net_cleanup_vector(struct nfp_net *nn, struct nfp_net_r_vector *r_vec)
>  {
> -	irq_set_affinity_hint(r_vec->irq_vector, NULL);
> +	irq_update_affinity_hint(r_vec->irq_vector, NULL);
>  	nfp_net_napi_del(&nn->dp, r_vec);
>  	free_irq(r_vec->irq_vector, r_vec);
>  }
Looks good to me, thank you!

Reviewed-by: Louis Peens <louis.peens@corigine.com>
> -- 
> 2.34.3
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH net] nfp: use irq_update_affinity_hint()
  2024-11-07 11:50 [PATCH net] nfp: use irq_update_affinity_hint() Mohammad Heib
  2024-11-10 13:31 ` Simon Horman
  2024-11-11  5:33 ` Louis Peens
@ 2024-11-12  0:10 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 4+ messages in thread
From: patchwork-bot+netdevbpf @ 2024-11-12  0:10 UTC (permalink / raw)
  To: Mohammad Heib; +Cc: netdev, oss-drivers, louis.peens

Hello:

This patch was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Thu,  7 Nov 2024 13:50:02 +0200 you wrote:
> irq_set_affinity_hint() is deprecated, Use irq_update_affinity_hint()
> instead. This removes the side-effect of actually applying the affinity.
> 
> The driver does not really need to worry about spreading its IRQs across
> CPUs. The core code already takes care of that. when the driver applies the
> affinities by itself, it breaks the users' expectations:
> 
> [...]

Here is the summary with links:
  - [net] nfp: use irq_update_affinity_hint()
    https://git.kernel.org/netdev/net-next/c/d9e2e290f714

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-11-12  0:10 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-07 11:50 [PATCH net] nfp: use irq_update_affinity_hint() Mohammad Heib
2024-11-10 13:31 ` Simon Horman
2024-11-11  5:33 ` Louis Peens
2024-11-12  0:10 ` patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).