[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1127123648.641.1582125448879.JavaMail.zimbra@efficios.com>
Date: Wed, 19 Feb 2020 10:17:28 -0500 (EST)
From: Mathieu Desnoyers <mathieu.desnoyers@...icios.com>
To: Alexei Starovoitov <alexei.starovoitov@...il.com>
Cc: Thomas Gleixner <tglx@...utronix.de>,
linux-kernel <linux-kernel@...r.kernel.org>,
"David S. Miller" <davem@...emloft.net>, bpf <bpf@...r.kernel.org>,
netdev <netdev@...r.kernel.org>,
Alexei Starovoitov <ast@...nel.org>,
Daniel Borkmann <daniel@...earbox.net>,
Sebastian Andrzej Siewior <bigeasy@...utronix.de>,
Peter Zijlstra <peterz@...radead.org>,
Clark Williams <williams@...hat.com>,
rostedt <rostedt@...dmis.org>,
Juri Lelli <juri.lelli@...hat.com>,
Ingo Molnar <mingo@...nel.org>
Subject: Re: [RFC patch 14/19] bpf: Use migrate_disable() in hashtab code
----- On Feb 18, 2020, at 6:36 PM, Alexei Starovoitov alexei.starovoitov@...il.com wrote:
[...]
> If I can use migrate_disable() without RT it will help my work on sleepable
> BPF programs. I would only have to worry about rcu_read_lock() since
> preempt_disable() is nicely addressed.
Hi Alexei,
You may want to consider using SRCU rather than RCU if you need to sleep while
holding a RCU read-side lock.
This is the synchronization approach I consider for adding the ability to take page
faults when doing syscall tracing.
Then you'll be able to replace preempt_disable() by combining SRCU and
migrate_disable():
AFAIU eBPF currently uses preempt_disable() for two reasons:
- Ensure the thread is not migrated,
-> can be replaced by migrate_disable() in RT
- Provide RCU existence guarantee through sched-RCU
-> can be replaced by SRCU, which allows sleeping and taking page faults.
I wonder if it would be acceptable to take a page fault while migration is
disabled though ?
Thanks,
Mathieu
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
Powered by blists - more mailing lists