[PATCH] ice: Unbind the workqueue

Frederic Weisbecker posted 1 patch 2 months, 1 week ago
There is a newer version of this series
drivers/net/ethernet/intel/ice/ice_main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] ice: Unbind the workqueue
Posted by Frederic Weisbecker 2 months, 1 week ago
The ice workqueue doesn't seem to rely on any CPU locality and should
therefore be able to run on any CPU. In practice this is already
happening through the unbound ice_service_timer that may fire anywhere
and queue the workqueue accordingly to any CPU.

Make this official so that the ice workqueue is only ever queued to
housekeeping CPUs on nohz_full.

Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
---
 drivers/net/ethernet/intel/ice/ice_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index ea780d468579..70990f42ac05 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -5924,7 +5924,7 @@ static int __init ice_module_init(void)
 
 	ice_adv_lnk_speed_maps_init();
 
-	ice_wq = alloc_workqueue("%s", 0, 0, KBUILD_MODNAME);
+	ice_wq = alloc_workqueue("%s", WQ_UNBOUND, 0, KBUILD_MODNAME);
 	if (!ice_wq) {
 		pr_err("Failed to create workqueue\n");
 		return status;
-- 
2.46.0
Re: [PATCH] ice: Unbind the workqueue
Posted by Przemek Kitszel 2 months ago
On 9/23/24 00:24, Frederic Weisbecker wrote:
> The ice workqueue doesn't seem to rely on any CPU locality and should
> therefore be able to run on any CPU. In practice this is already
> happening through the unbound ice_service_timer that may fire anywhere
> and queue the workqueue accordingly to any CPU.
> 
> Make this official so that the ice workqueue is only ever queued to
> housekeeping CPUs on nohz_full.
> 
> Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
> ---
>   drivers/net/ethernet/intel/ice/ice_main.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
> index ea780d468579..70990f42ac05 100644
> --- a/drivers/net/ethernet/intel/ice/ice_main.c
> +++ b/drivers/net/ethernet/intel/ice/ice_main.c
> @@ -5924,7 +5924,7 @@ static int __init ice_module_init(void)
>   
>   	ice_adv_lnk_speed_maps_init();
>   
> -	ice_wq = alloc_workqueue("%s", 0, 0, KBUILD_MODNAME);
> +	ice_wq = alloc_workqueue("%s", WQ_UNBOUND, 0, KBUILD_MODNAME);
>   	if (!ice_wq) {
>   		pr_err("Failed to create workqueue\n");
>   		return status;

Thank you for the patch, it would make sense for our iwl-next tree,
with such assumption:
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>

@Tony, do you want it resent with target tree in the subject?
Re: [PATCH] ice: Unbind the workqueue
Posted by Tony Nguyen 2 months ago

On 9/23/2024 1:57 AM, Przemek Kitszel wrote:
> On 9/23/24 00:24, Frederic Weisbecker wrote:
>> The ice workqueue doesn't seem to rely on any CPU locality and should
>> therefore be able to run on any CPU. In practice this is already
>> happening through the unbound ice_service_timer that may fire anywhere
>> and queue the workqueue accordingly to any CPU.
>>
>> Make this official so that the ice workqueue is only ever queued to
>> housekeeping CPUs on nohz_full.
>>
>> Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
>> ---
>>   drivers/net/ethernet/intel/ice/ice_main.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/net/ethernet/intel/ice/ice_main.c 
>> b/drivers/net/ethernet/intel/ice/ice_main.c
>> index ea780d468579..70990f42ac05 100644
>> --- a/drivers/net/ethernet/intel/ice/ice_main.c
>> +++ b/drivers/net/ethernet/intel/ice/ice_main.c
>> @@ -5924,7 +5924,7 @@ static int __init ice_module_init(void)
>>       ice_adv_lnk_speed_maps_init();
>> -    ice_wq = alloc_workqueue("%s", 0, 0, KBUILD_MODNAME);
>> +    ice_wq = alloc_workqueue("%s", WQ_UNBOUND, 0, KBUILD_MODNAME);
>>       if (!ice_wq) {
>>           pr_err("Failed to create workqueue\n");
>>           return status;
> 
> Thank you for the patch, it would make sense for our iwl-next tree,
> with such assumption:
> Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
> 
> @Tony, do you want it resent with target tree in the subject?

No, I can apply this as-is but please remember to designate a tree for 
future patches.

Thanks,
Tony
Re: [PATCH] ice: Unbind the workqueue
Posted by Frederic Weisbecker 1 month, 3 weeks ago
Le Mon, Sep 23, 2024 at 11:28:20AM -0700, Tony Nguyen a écrit :
> 
> 
> On 9/23/2024 1:57 AM, Przemek Kitszel wrote:
> > On 9/23/24 00:24, Frederic Weisbecker wrote:
> > > The ice workqueue doesn't seem to rely on any CPU locality and should
> > > therefore be able to run on any CPU. In practice this is already
> > > happening through the unbound ice_service_timer that may fire anywhere
> > > and queue the workqueue accordingly to any CPU.
> > > 
> > > Make this official so that the ice workqueue is only ever queued to
> > > housekeeping CPUs on nohz_full.
> > > 
> > > Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
> > > ---
> > >   drivers/net/ethernet/intel/ice/ice_main.c | 2 +-
> > >   1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/drivers/net/ethernet/intel/ice/ice_main.c
> > > b/drivers/net/ethernet/intel/ice/ice_main.c
> > > index ea780d468579..70990f42ac05 100644
> > > --- a/drivers/net/ethernet/intel/ice/ice_main.c
> > > +++ b/drivers/net/ethernet/intel/ice/ice_main.c
> > > @@ -5924,7 +5924,7 @@ static int __init ice_module_init(void)
> > >       ice_adv_lnk_speed_maps_init();
> > > -    ice_wq = alloc_workqueue("%s", 0, 0, KBUILD_MODNAME);
> > > +    ice_wq = alloc_workqueue("%s", WQ_UNBOUND, 0, KBUILD_MODNAME);
> > >       if (!ice_wq) {
> > >           pr_err("Failed to create workqueue\n");
> > >           return status;
> > 
> > Thank you for the patch, it would make sense for our iwl-next tree,
> > with such assumption:
> > Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
> > 
> > @Tony, do you want it resent with target tree in the subject?
> 
> No, I can apply this as-is but please remember to designate a tree for
> future patches.

Sorry I didn't know about any tree. I can't even find where iwl-next is
hosted.

Thanks.

> Thanks,
> Tony
Re: [PATCH] ice: Unbind the workqueue
Posted by Tony Nguyen 1 month, 3 weeks ago

On 10/7/2024 3:29 AM, Frederic Weisbecker wrote:
> Le Mon, Sep 23, 2024 at 11:28:20AM -0700, Tony Nguyen a écrit :

...
>>> Thank you for the patch, it would make sense for our iwl-next tree,
>>> with such assumption:
>>> Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
>>>
>>> @Tony, do you want it resent with target tree in the subject?
>>
>> No, I can apply this as-is but please remember to designate a tree for
>> future patches.
> 
> Sorry I didn't know about any tree. I can't even find where iwl-next is
> hosted.

The information is here: 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/MAINTAINERS#n11413

For bug fixes, net-queue tree is used and next-queue for other content 
(dev-queue branch for both).

I did find that I crossed this patch with another and found that the 
initial send of this did not include the Intel Wired LAN list. I'll 
resend the patch to include the proper list so that patchworks can pick 
this up.

Thanks,
Tony