From: Jakub Kicinski <kuba@kernel.org>
To: Justin Iurman <justin.iurman@uliege.be>
Cc: Andrea Mayer <andrea.mayer@uniroma2.it>,
Alexei Starovoitov <alexei.starovoitov@gmail.com>,
Sebastian Sewior <bigeasy@linutronix.de>,
Stanislav Fomichev <stfomichev@gmail.com>,
Network Development <netdev@vger.kernel.org>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>,
Kuniyuki Iwashima <kuniyu@amazon.com>, bpf <bpf@vger.kernel.org>,
Stefano Salsano <stefano.salsano@uniroma2.it>,
Paolo Lungaroni <paolo.lungaroni@uniroma2.it>
Subject: Re: [PATCH net] net: lwtunnel: disable preemption when required
Date: Tue, 15 Apr 2025 07:38:18 -0700 [thread overview]
Message-ID: <20250415073818.06ea327c@kernel.org> (raw)
In-Reply-To: <3cee5141-c525-4e83-830e-bf21828aed51@uliege.be>
On Tue, 15 Apr 2025 11:10:01 +0200 Justin Iurman wrote:
> > However, there is my opinion an issue that can occur: between the check on
> > in_softirq() and the call to local_bh_disable(), the task may be scheduled on
> > another CPU. As a result, the check on in_softirq() becomes ineffective because
> > we may end up disabling BH on a CPU that is not the one we just checked (with
> > if (in_softirq()) { ... }).
The context is not affected by migration. The context is fully defined
by the execution stack.
> Hmm, I think it's correct... good catch. I went for this solution to (i)
> avoid useless nested BHs disable calls; and (ii) avoid ending up with a
> spaghetti graph of possible paths with or without BHs disabled (i.e.,
> with single entry points, namely lwtunnel_xmit() and lwtunnel_output()),
> which otherwise makes it hard to maintain the code IMO.
>
> So, if we want to follow what Alexei suggests (see his last response),
> we'd need to disable BHs in both ip_local_out() and ip6_local_out().
> These are the common functions which are closest in depth, and so for
> both lwtunnel_xmit() and lwtunnel_output(). But... at the "cost" of
> disabling BHs even when it may not be required. Indeed, ip_local_out()
> and ip6_local_out() both call dst_output(), which one is usually not
> lwtunnel_output() (and there may not even be a lwtunnel_xmit() to call
> either).
>
> The other solution is to always call local_bh_disable() in both
> lwtunnel_xmit() and lwtunnel_output(), at the cost of disabling BHs when
> they were already. Which was basically -v1 and received a NACK from Alexei.
I thought he nacked preempt_disable()
next prev parent reply other threads:[~2025-04-15 14:38 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-03 8:39 [PATCH net] net: lwtunnel: disable preemption when required Justin Iurman
2025-04-03 16:24 ` Stanislav Fomichev
2025-04-03 19:08 ` Justin Iurman
2025-04-03 20:35 ` Alexei Starovoitov
2025-04-04 14:19 ` Sebastian Sewior
2025-04-06 8:59 ` Justin Iurman
2025-04-07 17:54 ` Alexei Starovoitov
2025-04-11 18:34 ` Justin Iurman
2025-04-14 23:13 ` Alexei Starovoitov
2025-04-15 9:25 ` Justin Iurman
2025-04-15 11:56 ` Justin Iurman
2025-04-15 0:54 ` Andrea Mayer
2025-04-15 9:10 ` Justin Iurman
2025-04-15 14:38 ` Jakub Kicinski [this message]
2025-04-15 15:12 ` Justin Iurman
2025-04-15 15:12 ` Alexei Starovoitov
2025-04-15 17:12 ` Justin Iurman
2025-04-03 23:38 ` Jakub Kicinski
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=20250415073818.06ea327c@kernel.org \
--to=kuba@kernel.org \
--cc=alexei.starovoitov@gmail.com \
--cc=andrea.mayer@uniroma2.it \
--cc=bigeasy@linutronix.de \
--cc=bpf@vger.kernel.org \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=justin.iurman@uliege.be \
--cc=kuniyu@amazon.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=paolo.lungaroni@uniroma2.it \
--cc=stefano.salsano@uniroma2.it \
--cc=stfomichev@gmail.com \
/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.