From: "Toke Høiland-Jørgensen" <toke@toke.dk>
To: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: Eric Dumazet <edumazet@google.com>, bpf <bpf@vger.kernel.org>,
netdev <netdev@vger.kernel.org>,
"David S. Miller" <davem@davemloft.net>,
Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Jakub Kicinski <kuba@kernel.org>,
Jesper Dangaard Brouer <hawk@kernel.org>,
John Fastabend <john.fastabend@gmail.com>,
Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [PATCH net-next 1/4] net: dev: Remove the preempt_disable() in netif_rx_internal().
Date: Thu, 03 Feb 2022 13:41:13 +0100 [thread overview]
Message-ID: <87leysazrq.fsf@toke.dk> (raw)
In-Reply-To: <YfvH9YpKTIU4EByk@linutronix.de>
Sebastian Andrzej Siewior <bigeasy@linutronix.de> writes:
> On 2022-02-03 13:00:06 [+0100], Toke Høiland-Jørgensen wrote:
>> > Here is the code in larger context:
>> >
>> > #ifdef CONFIG_RPS
>> > if (static_branch_unlikely(&rps_needed)) {
>> > struct rps_dev_flow voidflow, *rflow = &voidflow;
>> > int cpu;
>> >
>> > preempt_disable();
>> > rcu_read_lock();
>> >
>> > cpu = get_rps_cpu(skb->dev, skb, &rflow);
>> > if (cpu < 0)
>> > cpu = smp_processor_id();
>> >
>> > ret = enqueue_to_backlog(skb, cpu, &rflow->last_qtail);
>> >
>> > rcu_read_unlock();
>> > preempt_enable();
>> > } else
>> > #endif
>> >
>> > This code needs the preempt_disable().
>>
>> This is mostly so that the CPU ID stays the same throughout that section
>> of code, though, right? So wouldn't it work to replace the
>> preempt_disable() with a migrate_disable()? That should keep _RT happy,
>> no?
>
> It would but as mentioned previously: BH is disabled and
> smp_processor_id() is stable.
Ah, right, because of the change in loopback to use netif_rx_ni()? But
that bit of the analysis only comes later in your series, so at the very
least you should be explaining this in the commit message here. Or you
could potentially squash patches 1 and 2 and do both changes at once,
since it's changing two bits of the same function and both need the same
analysis...
However, if we're going with Eric's suggestion of an internal
__netif_rx() for loopback that *doesn't* do local_bh_disable() then this
code would end up being called without BH disable, so we'd need the
migrate_disable() anyway, no?
-Toke
next prev parent reply other threads:[~2022-02-03 12:41 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-02 12:28 [PATCH net-next 0/4] net: dev: PREEMPT_RT fixups Sebastian Andrzej Siewior
2022-02-02 12:28 ` [PATCH net-next 1/4] net: dev: Remove the preempt_disable() in netif_rx_internal() Sebastian Andrzej Siewior
2022-02-02 17:10 ` Eric Dumazet
2022-02-03 12:00 ` Toke Høiland-Jørgensen
2022-02-03 12:17 ` Sebastian Andrzej Siewior
2022-02-03 12:41 ` Toke Høiland-Jørgensen [this message]
2022-02-03 15:50 ` Sebastian Andrzej Siewior
2022-02-04 15:20 ` [PATCH net-next v2 1/4] net: dev: Remove preempt_disable() and get_cpu() " Sebastian Andrzej Siewior
2022-02-04 16:31 ` Jakub Kicinski
2022-02-04 16:42 ` Sebastian Andrzej Siewior
2022-02-04 16:32 ` Eric Dumazet
2022-02-03 12:16 ` [PATCH net-next 1/4] net: dev: Remove the preempt_disable() " Sebastian Andrzej Siewior
2022-02-02 12:28 ` [PATCH net-next 2/4] net: dev: Remove get_cpu() " Sebastian Andrzej Siewior
2022-02-02 17:14 ` Eric Dumazet
2022-02-03 12:14 ` Toke Høiland-Jørgensen
2022-02-02 12:28 ` [PATCH net-next 3/4] net: dev: Makes sure netif_rx() can be invoked in any context Sebastian Andrzej Siewior
2022-02-02 16:50 ` Jakub Kicinski
2022-02-03 12:20 ` Sebastian Andrzej Siewior
2022-02-03 19:38 ` Jakub Kicinski
2022-02-02 17:43 ` Eric Dumazet
2022-02-03 12:19 ` Toke Høiland-Jørgensen
2022-02-03 15:10 ` Sebastian Andrzej Siewior
2022-02-03 15:25 ` Eric Dumazet
2022-02-03 15:40 ` Sebastian Andrzej Siewior
2022-02-03 16:18 ` Eric Dumazet
2022-02-03 16:44 ` Sebastian Andrzej Siewior
2022-02-03 17:45 ` Sebastian Andrzej Siewior
2022-02-04 13:00 ` [PATCH net-next v2 " Sebastian Andrzej Siewior
2022-02-04 18:46 ` Eric Dumazet
2022-02-02 12:28 ` [PATCH net-next 4/4] net: dev: Make rps_lock() disable interrupts Sebastian Andrzej Siewior
2022-02-02 16:47 ` Jakub Kicinski
2022-02-03 16:41 ` [PATCH net-next v2 " Sebastian Andrzej Siewior
2022-02-03 19:39 ` Jakub Kicinski
2022-02-02 16:14 ` [PATCH net-next 0/4] net: dev: PREEMPT_RT fixups Jakub Kicinski
2022-02-03 11:59 ` Toke Høiland-Jørgensen
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=87leysazrq.fsf@toke.dk \
--to=toke@toke.dk \
--cc=ast@kernel.org \
--cc=bigeasy@linutronix.de \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=hawk@kernel.org \
--cc=john.fastabend@gmail.com \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=tglx@linutronix.de \
/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 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).