* [PATCH] net: Handle threadirqs in __napi_schedule_irqoff
@ 2024-09-13 15:09 Sean Anderson
2024-09-13 15:16 ` Eric Dumazet
2024-09-13 16:14 ` Sebastian Andrzej Siewior
0 siblings, 2 replies; 8+ messages in thread
From: Sean Anderson @ 2024-09-13 15:09 UTC (permalink / raw)
To: David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
netdev
Cc: Juri Lelli, Thomas Gleixner, Sebastian Andrzej Siewior,
linux-kernel, Sean Anderson
The threadirqs kernel parameter can be used to force threaded IRQs even
on non-PREEMPT_RT kernels. Use force_irqthreads to determine if we can
skip disabling local interrupts. This defaults to false on regular
kernels, and is always true on PREEMPT_RT kernels.
Signed-off-by: Sean Anderson <sean.anderson@linux.dev>
---
net/core/dev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/core/dev.c b/net/core/dev.c
index 1e740faf9e78..112e871bc2b0 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -6202,7 +6202,7 @@ EXPORT_SYMBOL(napi_schedule_prep);
*/
void __napi_schedule_irqoff(struct napi_struct *n)
{
- if (!IS_ENABLED(CONFIG_PREEMPT_RT))
+ if (!force_irqthreads())
____napi_schedule(this_cpu_ptr(&softnet_data), n);
else
__napi_schedule(n);
--
2.35.1.1320.gc452695387.dirty
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH] net: Handle threadirqs in __napi_schedule_irqoff
2024-09-13 15:09 [PATCH] net: Handle threadirqs in __napi_schedule_irqoff Sean Anderson
@ 2024-09-13 15:16 ` Eric Dumazet
2024-09-13 15:23 ` Sean Anderson
2024-09-13 16:14 ` Sebastian Andrzej Siewior
1 sibling, 1 reply; 8+ messages in thread
From: Eric Dumazet @ 2024-09-13 15:16 UTC (permalink / raw)
To: Sean Anderson
Cc: David S . Miller, Jakub Kicinski, Paolo Abeni, netdev, Juri Lelli,
Thomas Gleixner, Sebastian Andrzej Siewior, linux-kernel
On Fri, Sep 13, 2024 at 5:10 PM Sean Anderson <sean.anderson@linux.dev> wrote:
>
> The threadirqs kernel parameter can be used to force threaded IRQs even
> on non-PREEMPT_RT kernels. Use force_irqthreads to determine if we can
> skip disabling local interrupts. This defaults to false on regular
> kernels, and is always true on PREEMPT_RT kernels.
>
> Signed-off-by: Sean Anderson <sean.anderson@linux.dev>
> ---
>
> net/core/dev.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/net/core/dev.c b/net/core/dev.c
> index 1e740faf9e78..112e871bc2b0 100644
> --- a/net/core/dev.c
> +++ b/net/core/dev.c
> @@ -6202,7 +6202,7 @@ EXPORT_SYMBOL(napi_schedule_prep);
> */
> void __napi_schedule_irqoff(struct napi_struct *n)
> {
> - if (!IS_ENABLED(CONFIG_PREEMPT_RT))
> + if (!force_irqthreads())
> ____napi_schedule(this_cpu_ptr(&softnet_data), n);
> else
> __napi_schedule(n);
> --
> 2.35.1.1320.gc452695387.dirty
>
Seems reasonable, can you update the comment (kdoc) as well ?
It says :
* On PREEMPT_RT enabled kernels this maps to __napi_schedule()
* because the interrupt disabled assumption might not be true
* due to force-threaded interrupts and spinlock substitution.
Also always specify net or net-next for networking patches.
Thanks.
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH] net: Handle threadirqs in __napi_schedule_irqoff
2024-09-13 15:16 ` Eric Dumazet
@ 2024-09-13 15:23 ` Sean Anderson
2024-09-13 16:08 ` Brett Creeley
0 siblings, 1 reply; 8+ messages in thread
From: Sean Anderson @ 2024-09-13 15:23 UTC (permalink / raw)
To: Eric Dumazet
Cc: David S . Miller, Jakub Kicinski, Paolo Abeni, netdev, Juri Lelli,
Thomas Gleixner, Sebastian Andrzej Siewior, linux-kernel
On 9/13/24 11:16, Eric Dumazet wrote:
> On Fri, Sep 13, 2024 at 5:10 PM Sean Anderson <sean.anderson@linux.dev> wrote:
>>
>> The threadirqs kernel parameter can be used to force threaded IRQs even
>> on non-PREEMPT_RT kernels. Use force_irqthreads to determine if we can
>> skip disabling local interrupts. This defaults to false on regular
>> kernels, and is always true on PREEMPT_RT kernels.
>>
>> Signed-off-by: Sean Anderson <sean.anderson@linux.dev>
>> ---
>>
>> net/core/dev.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/net/core/dev.c b/net/core/dev.c
>> index 1e740faf9e78..112e871bc2b0 100644
>> --- a/net/core/dev.c
>> +++ b/net/core/dev.c
>> @@ -6202,7 +6202,7 @@ EXPORT_SYMBOL(napi_schedule_prep);
>> */
>> void __napi_schedule_irqoff(struct napi_struct *n)
>> {
>> - if (!IS_ENABLED(CONFIG_PREEMPT_RT))
>> + if (!force_irqthreads())
>> ____napi_schedule(this_cpu_ptr(&softnet_data), n);
>> else
>> __napi_schedule(n);
>> --
>> 2.35.1.1320.gc452695387.dirty
>>
>
> Seems reasonable, can you update the comment (kdoc) as well ?
>
> It says :
>
> * On PREEMPT_RT enabled kernels this maps to __napi_schedule()
> * because the interrupt disabled assumption might not be true
> * due to force-threaded interrupts and spinlock substitution.
OK
> Also always specify net or net-next for networking patches.
Ah, sorry. Should be net-next.
--Sean
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH] net: Handle threadirqs in __napi_schedule_irqoff
2024-09-13 15:23 ` Sean Anderson
@ 2024-09-13 16:08 ` Brett Creeley
2024-09-13 16:17 ` Sean Anderson
0 siblings, 1 reply; 8+ messages in thread
From: Brett Creeley @ 2024-09-13 16:08 UTC (permalink / raw)
To: Sean Anderson, Eric Dumazet
Cc: David S . Miller, Jakub Kicinski, Paolo Abeni, netdev, Juri Lelli,
Thomas Gleixner, Sebastian Andrzej Siewior, linux-kernel
On 9/13/2024 8:23 AM, Sean Anderson wrote:
> Caution: This message originated from an External Source. Use proper caution when opening attachments, clicking links, or responding.
>
>
> On 9/13/24 11:16, Eric Dumazet wrote:
>> On Fri, Sep 13, 2024 at 5:10 PM Sean Anderson <sean.anderson@linux.dev> wrote:
>>>
>>> The threadirqs kernel parameter can be used to force threaded IRQs even
>>> on non-PREEMPT_RT kernels. Use force_irqthreads to determine if we can
>>> skip disabling local interrupts. This defaults to false on regular
>>> kernels, and is always true on PREEMPT_RT kernels.
>>>
>>> Signed-off-by: Sean Anderson <sean.anderson@linux.dev>
>>> ---
>>>
>>> net/core/dev.c | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/net/core/dev.c b/net/core/dev.c
>>> index 1e740faf9e78..112e871bc2b0 100644
>>> --- a/net/core/dev.c
>>> +++ b/net/core/dev.c
>>> @@ -6202,7 +6202,7 @@ EXPORT_SYMBOL(napi_schedule_prep);
>>> */
>>> void __napi_schedule_irqoff(struct napi_struct *n)
>>> {
>>> - if (!IS_ENABLED(CONFIG_PREEMPT_RT))
>>> + if (!force_irqthreads())
>>> ____napi_schedule(this_cpu_ptr(&softnet_data), n);
>>> else
>>> __napi_schedule(n);
>>> --
>>> 2.35.1.1320.gc452695387.dirty
>>>
>>
>> Seems reasonable, can you update the comment (kdoc) as well ?
>>
>> It says :
>>
>> * On PREEMPT_RT enabled kernels this maps to __napi_schedule()
>> * because the interrupt disabled assumption might not be true
>> * due to force-threaded interrupts and spinlock substitution.
>
> OK
>
>> Also always specify net or net-next for networking patches.
>
> Ah, sorry. Should be net-next.
Is this worthy for a fixes/net tag?
Thanks,
Brett
>
> --Sean
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH] net: Handle threadirqs in __napi_schedule_irqoff
2024-09-13 16:08 ` Brett Creeley
@ 2024-09-13 16:17 ` Sean Anderson
0 siblings, 0 replies; 8+ messages in thread
From: Sean Anderson @ 2024-09-13 16:17 UTC (permalink / raw)
To: Brett Creeley, Eric Dumazet
Cc: David S . Miller, Jakub Kicinski, Paolo Abeni, netdev, Juri Lelli,
Thomas Gleixner, Sebastian Andrzej Siewior, linux-kernel
On 9/13/24 12:08, Brett Creeley wrote:
>
>
> On 9/13/2024 8:23 AM, Sean Anderson wrote:
>> Caution: This message originated from an External Source. Use proper caution when opening attachments, clicking links, or responding.
>>
>>
>> On 9/13/24 11:16, Eric Dumazet wrote:
>>> On Fri, Sep 13, 2024 at 5:10 PM Sean Anderson <sean.anderson@linux.dev> wrote:
>>>>
>>>> The threadirqs kernel parameter can be used to force threaded IRQs even
>>>> on non-PREEMPT_RT kernels. Use force_irqthreads to determine if we can
>>>> skip disabling local interrupts. This defaults to false on regular
>>>> kernels, and is always true on PREEMPT_RT kernels.
>>>>
>>>> Signed-off-by: Sean Anderson <sean.anderson@linux.dev>
>>>> ---
>>>>
>>>> net/core/dev.c | 2 +-
>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/net/core/dev.c b/net/core/dev.c
>>>> index 1e740faf9e78..112e871bc2b0 100644
>>>> --- a/net/core/dev.c
>>>> +++ b/net/core/dev.c
>>>> @@ -6202,7 +6202,7 @@ EXPORT_SYMBOL(napi_schedule_prep);
>>>> */
>>>> void __napi_schedule_irqoff(struct napi_struct *n)
>>>> {
>>>> - if (!IS_ENABLED(CONFIG_PREEMPT_RT))
>>>> + if (!force_irqthreads())
>>>> ____napi_schedule(this_cpu_ptr(&softnet_data), n);
>>>> else
>>>> __napi_schedule(n);
>>>> --
>>>> 2.35.1.1320.gc452695387.dirty
>>>>
>>>
>>> Seems reasonable, can you update the comment (kdoc) as well ?
>>>
>>> It says :
>>>
>>> * On PREEMPT_RT enabled kernels this maps to __napi_schedule()
>>> * because the interrupt disabled assumption might not be true
>>> * due to force-threaded interrupts and spinlock substitution.
>>
>> OK
>>
>>> Also always specify net or net-next for networking patches.
>>
>> Ah, sorry. Should be net-next.
>
> Is this worthy for a fixes/net tag?
Maybe? Commit 8380c81d5c4f ("net: Treat __napi_schedule_irqoff() as
__napi_schedule() on PREEMPT_RT") originally introduced the condition on
PREEMPT_RT but didn't include any fixes. And that's probably because
there's nothing wrong with the original behavior as long as you add
IRQF_NO_THREAD to your interrupt. Although at the time threadirqs had
existed for a while, so maybe this commit should fix that one.
--Sean
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] net: Handle threadirqs in __napi_schedule_irqoff
2024-09-13 15:09 [PATCH] net: Handle threadirqs in __napi_schedule_irqoff Sean Anderson
2024-09-13 15:16 ` Eric Dumazet
@ 2024-09-13 16:14 ` Sebastian Andrzej Siewior
2024-09-13 16:19 ` Sean Anderson
1 sibling, 1 reply; 8+ messages in thread
From: Sebastian Andrzej Siewior @ 2024-09-13 16:14 UTC (permalink / raw)
To: Sean Anderson
Cc: David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
netdev, Juri Lelli, Thomas Gleixner, linux-kernel
On 2024-09-13 11:09:54 [-0400], Sean Anderson wrote:
> The threadirqs kernel parameter can be used to force threaded IRQs even
> on non-PREEMPT_RT kernels. Use force_irqthreads to determine if we can
> skip disabling local interrupts. This defaults to false on regular
> kernels, and is always true on PREEMPT_RT kernels.
Is this fixing a behaviour or is this from the clean up/ make it pretty
category?
The forced-threaded interrupts run with disabled interrupts on !RT so
this change should not fix anything.
> Signed-off-by: Sean Anderson <sean.anderson@linux.dev>
Sebastian
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] net: Handle threadirqs in __napi_schedule_irqoff
2024-09-13 16:14 ` Sebastian Andrzej Siewior
@ 2024-09-13 16:19 ` Sean Anderson
2024-09-30 9:55 ` Sebastian Andrzej Siewior
0 siblings, 1 reply; 8+ messages in thread
From: Sean Anderson @ 2024-09-13 16:19 UTC (permalink / raw)
To: Sebastian Andrzej Siewior
Cc: David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
netdev, Juri Lelli, Thomas Gleixner, linux-kernel
On 9/13/24 12:14, Sebastian Andrzej Siewior wrote:
> On 2024-09-13 11:09:54 [-0400], Sean Anderson wrote:
>> The threadirqs kernel parameter can be used to force threaded IRQs even
>> on non-PREEMPT_RT kernels. Use force_irqthreads to determine if we can
>> skip disabling local interrupts. This defaults to false on regular
>> kernels, and is always true on PREEMPT_RT kernels.
>
> Is this fixing a behaviour or is this from the clean up/ make it pretty
> category?
It's in response to [1].
[1] https://lore.kernel.org/netdev/20240912084322.148d7fb2@kernel.org/
> The forced-threaded interrupts run with disabled interrupts on !RT so
> this change should not fix anything.
OK, so maybe this isn't necessary at all?
--Sean
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] net: Handle threadirqs in __napi_schedule_irqoff
2024-09-13 16:19 ` Sean Anderson
@ 2024-09-30 9:55 ` Sebastian Andrzej Siewior
0 siblings, 0 replies; 8+ messages in thread
From: Sebastian Andrzej Siewior @ 2024-09-30 9:55 UTC (permalink / raw)
To: Sean Anderson
Cc: David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
netdev, Juri Lelli, Thomas Gleixner, linux-kernel
On 2024-09-13 12:19:05 [-0400], Sean Anderson wrote:
> It's in response to [1].
>
> [1] https://lore.kernel.org/netdev/20240912084322.148d7fb2@kernel.org/
thanks
> > The forced-threaded interrupts run with disabled interrupts on !RT so
> > this change should not fix anything.
>
> OK, so maybe this isn't necessary at all?
Based on your reasoning so far, yes, not needed.
> --Sean
Sebastian
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2024-09-30 9:55 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-13 15:09 [PATCH] net: Handle threadirqs in __napi_schedule_irqoff Sean Anderson
2024-09-13 15:16 ` Eric Dumazet
2024-09-13 15:23 ` Sean Anderson
2024-09-13 16:08 ` Brett Creeley
2024-09-13 16:17 ` Sean Anderson
2024-09-13 16:14 ` Sebastian Andrzej Siewior
2024-09-13 16:19 ` Sean Anderson
2024-09-30 9:55 ` Sebastian Andrzej Siewior
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).