* [PATCH bpf-next v3 0/2] Modify BPF_JIT_ALWAYS_ON and BPF_JIT_DEFAULT_ON @ 2022-02-22 9:57 Tiezhu Yang 2022-02-22 9:57 ` [PATCH bpf-next v3 1/2] bpf: Add some description about BPF_JIT_ALWAYS_ON in Kconfig Tiezhu Yang ` (2 more replies) 0 siblings, 3 replies; 7+ messages in thread From: Tiezhu Yang @ 2022-02-22 9:57 UTC (permalink / raw) To: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko, Martin KaFai Lau, Song Liu, Yonghong Song, John Fastabend, KP Singh Cc: Xuefeng Li, netdev, bpf, linux-kernel v3: -- Use "return failure" instead of "return in failure". -- Use "Enable BPF JIT by default" for config BPF_JIT_DEFAULT_ON. v2: -- Use the full path /proc/sys/net/core/bpf_jit_enable in the help text. -- Update the commit message to make it clear in patch #2. Tiezhu Yang (2): bpf: Add some description about BPF_JIT_ALWAYS_ON in Kconfig bpf: Make BPF_JIT_DEFAULT_ON selectable in Kconfig kernel/bpf/Kconfig | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) -- 2.1.0 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH bpf-next v3 1/2] bpf: Add some description about BPF_JIT_ALWAYS_ON in Kconfig 2022-02-22 9:57 [PATCH bpf-next v3 0/2] Modify BPF_JIT_ALWAYS_ON and BPF_JIT_DEFAULT_ON Tiezhu Yang @ 2022-02-22 9:57 ` Tiezhu Yang 2022-02-22 9:57 ` [PATCH bpf-next v3 2/2] bpf: Make BPF_JIT_DEFAULT_ON selectable " Tiezhu Yang 2022-02-28 23:40 ` [PATCH bpf-next v3 0/2] Modify BPF_JIT_ALWAYS_ON and BPF_JIT_DEFAULT_ON patchwork-bot+netdevbpf 2 siblings, 0 replies; 7+ messages in thread From: Tiezhu Yang @ 2022-02-22 9:57 UTC (permalink / raw) To: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko, Martin KaFai Lau, Song Liu, Yonghong Song, John Fastabend, KP Singh Cc: Xuefeng Li, netdev, bpf, linux-kernel When CONFIG_BPF_JIT_ALWAYS_ON is enabled, /proc/sys/net/core/bpf_jit_enable is permanently set to 1 and setting any other value than that will return failure. Add the above description in the help text of config BPF_JIT_ALWAYS_ON, and then we can distinguish between BPF_JIT_ALWAYS_ON and BPF_JIT_DEFAULT_ON. Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn> Acked-by: Song Liu <songliubraving@fb.com> --- kernel/bpf/Kconfig | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kernel/bpf/Kconfig b/kernel/bpf/Kconfig index d24d518..f3db15a 100644 --- a/kernel/bpf/Kconfig +++ b/kernel/bpf/Kconfig @@ -58,6 +58,10 @@ config BPF_JIT_ALWAYS_ON Enables BPF JIT and removes BPF interpreter to avoid speculative execution of BPF instructions by the interpreter. + When CONFIG_BPF_JIT_ALWAYS_ON is enabled, /proc/sys/net/core/bpf_jit_enable + is permanently set to 1 and setting any other value than that will return + failure. + config BPF_JIT_DEFAULT_ON def_bool ARCH_WANT_DEFAULT_BPF_JIT || BPF_JIT_ALWAYS_ON depends on HAVE_EBPF_JIT && BPF_JIT -- 2.1.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH bpf-next v3 2/2] bpf: Make BPF_JIT_DEFAULT_ON selectable in Kconfig 2022-02-22 9:57 [PATCH bpf-next v3 0/2] Modify BPF_JIT_ALWAYS_ON and BPF_JIT_DEFAULT_ON Tiezhu Yang 2022-02-22 9:57 ` [PATCH bpf-next v3 1/2] bpf: Add some description about BPF_JIT_ALWAYS_ON in Kconfig Tiezhu Yang @ 2022-02-22 9:57 ` Tiezhu Yang 2022-02-23 5:26 ` Song Liu 2022-02-28 23:53 ` Daniel Borkmann 2022-02-28 23:40 ` [PATCH bpf-next v3 0/2] Modify BPF_JIT_ALWAYS_ON and BPF_JIT_DEFAULT_ON patchwork-bot+netdevbpf 2 siblings, 2 replies; 7+ messages in thread From: Tiezhu Yang @ 2022-02-22 9:57 UTC (permalink / raw) To: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko, Martin KaFai Lau, Song Liu, Yonghong Song, John Fastabend, KP Singh Cc: Xuefeng Li, netdev, bpf, linux-kernel Currently, only x86, arm64 and s390 select ARCH_WANT_DEFAULT_BPF_JIT, the other archs do not select ARCH_WANT_DEFAULT_BPF_JIT. On the archs without ARCH_WANT_DEFAULT_BPF_JIT, if we want to set bpf_jit_enable to 1 by default, the only way is to enable CONFIG_BPF_JIT_ALWAYS_ON, then the users can not change it to 0 or 2, it seems bad for some users. We can select ARCH_WANT_DEFAULT_BPF_JIT for those archs if it is proper, but at least for now, make BPF_JIT_DEFAULT_ON selectable can give them a chance. Additionally, with this patch, under !BPF_JIT_ALWAYS_ON, we can disable BPF_JIT_DEFAULT_ON on the archs with ARCH_WANT_DEFAULT_BPF_JIT when make menuconfig, it seems flexible for some developers. Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn> --- kernel/bpf/Kconfig | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/kernel/bpf/Kconfig b/kernel/bpf/Kconfig index f3db15a..8521874 100644 --- a/kernel/bpf/Kconfig +++ b/kernel/bpf/Kconfig @@ -54,6 +54,7 @@ config BPF_JIT config BPF_JIT_ALWAYS_ON bool "Permanently enable BPF JIT and remove BPF interpreter" depends on BPF_SYSCALL && HAVE_EBPF_JIT && BPF_JIT + select BPF_JIT_DEFAULT_ON help Enables BPF JIT and removes BPF interpreter to avoid speculative execution of BPF instructions by the interpreter. @@ -63,8 +64,16 @@ config BPF_JIT_ALWAYS_ON failure. config BPF_JIT_DEFAULT_ON - def_bool ARCH_WANT_DEFAULT_BPF_JIT || BPF_JIT_ALWAYS_ON - depends on HAVE_EBPF_JIT && BPF_JIT + bool "Enable BPF JIT by default" + default y if ARCH_WANT_DEFAULT_BPF_JIT + depends on BPF_SYSCALL && HAVE_EBPF_JIT && BPF_JIT + help + Enables BPF JIT by default to avoid speculative execution of BPF + instructions by the interpreter. + + When CONFIG_BPF_JIT_DEFAULT_ON is enabled but CONFIG_BPF_JIT_ALWAYS_ON + is disabled, /proc/sys/net/core/bpf_jit_enable is set to 1 by default + and can be changed to 0 or 2. config BPF_UNPRIV_DEFAULT_OFF bool "Disable unprivileged BPF by default" -- 2.1.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH bpf-next v3 2/2] bpf: Make BPF_JIT_DEFAULT_ON selectable in Kconfig 2022-02-22 9:57 ` [PATCH bpf-next v3 2/2] bpf: Make BPF_JIT_DEFAULT_ON selectable " Tiezhu Yang @ 2022-02-23 5:26 ` Song Liu 2022-02-28 23:53 ` Daniel Borkmann 1 sibling, 0 replies; 7+ messages in thread From: Song Liu @ 2022-02-23 5:26 UTC (permalink / raw) To: Tiezhu Yang Cc: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko, Martin KaFai Lau, Song Liu, Yonghong Song, John Fastabend, KP Singh, Xuefeng Li, Networking, bpf, open list On Tue, Feb 22, 2022 at 1:57 AM Tiezhu Yang <yangtiezhu@loongson.cn> wrote: > > Currently, only x86, arm64 and s390 select ARCH_WANT_DEFAULT_BPF_JIT, > the other archs do not select ARCH_WANT_DEFAULT_BPF_JIT. On the archs > without ARCH_WANT_DEFAULT_BPF_JIT, if we want to set bpf_jit_enable to > 1 by default, the only way is to enable CONFIG_BPF_JIT_ALWAYS_ON, then > the users can not change it to 0 or 2, it seems bad for some users. We > can select ARCH_WANT_DEFAULT_BPF_JIT for those archs if it is proper, > but at least for now, make BPF_JIT_DEFAULT_ON selectable can give them > a chance. > > Additionally, with this patch, under !BPF_JIT_ALWAYS_ON, we can disable > BPF_JIT_DEFAULT_ON on the archs with ARCH_WANT_DEFAULT_BPF_JIT when make > menuconfig, it seems flexible for some developers. > > Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn> Acked-by: Song Liu <songliubraving@fb.com> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH bpf-next v3 2/2] bpf: Make BPF_JIT_DEFAULT_ON selectable in Kconfig 2022-02-22 9:57 ` [PATCH bpf-next v3 2/2] bpf: Make BPF_JIT_DEFAULT_ON selectable " Tiezhu Yang 2022-02-23 5:26 ` Song Liu @ 2022-02-28 23:53 ` Daniel Borkmann 2022-03-09 4:21 ` Tiezhu Yang 1 sibling, 1 reply; 7+ messages in thread From: Daniel Borkmann @ 2022-02-28 23:53 UTC (permalink / raw) To: Tiezhu Yang, Alexei Starovoitov, Andrii Nakryiko, Martin KaFai Lau, Song Liu, Yonghong Song, John Fastabend, KP Singh Cc: Xuefeng Li, netdev, bpf, linux-kernel, Johan Almbladh Hi Tiezhu, (patch 1/2 applied so far, thanks!) On 2/22/22 10:57 AM, Tiezhu Yang wrote: > Currently, only x86, arm64 and s390 select ARCH_WANT_DEFAULT_BPF_JIT, > the other archs do not select ARCH_WANT_DEFAULT_BPF_JIT. On the archs > without ARCH_WANT_DEFAULT_BPF_JIT, if we want to set bpf_jit_enable to > 1 by default, the only way is to enable CONFIG_BPF_JIT_ALWAYS_ON, then > the users can not change it to 0 or 2, it seems bad for some users. We Can you elaborate on the "it seems bad for some users" part? What's the concrete use case? Also, why not add (e.g. mips) JIT to ARCH_WANT_DEFAULT_BPF_JIT if the CI suite passes with high degree/confidence? > can select ARCH_WANT_DEFAULT_BPF_JIT for those archs if it is proper, > but at least for now, make BPF_JIT_DEFAULT_ON selectable can give them > a chance. > > Additionally, with this patch, under !BPF_JIT_ALWAYS_ON, we can disable > BPF_JIT_DEFAULT_ON on the archs with ARCH_WANT_DEFAULT_BPF_JIT when make > menuconfig, it seems flexible for some developers. > > Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn> > --- > kernel/bpf/Kconfig | 13 +++++++++++-- > 1 file changed, 11 insertions(+), 2 deletions(-) > > diff --git a/kernel/bpf/Kconfig b/kernel/bpf/Kconfig > index f3db15a..8521874 100644 > --- a/kernel/bpf/Kconfig > +++ b/kernel/bpf/Kconfig > @@ -54,6 +54,7 @@ config BPF_JIT > config BPF_JIT_ALWAYS_ON > bool "Permanently enable BPF JIT and remove BPF interpreter" > depends on BPF_SYSCALL && HAVE_EBPF_JIT && BPF_JIT > + select BPF_JIT_DEFAULT_ON Is the above needed if ... > help > Enables BPF JIT and removes BPF interpreter to avoid speculative > execution of BPF instructions by the interpreter. > @@ -63,8 +64,16 @@ config BPF_JIT_ALWAYS_ON > failure. > > config BPF_JIT_DEFAULT_ON > - def_bool ARCH_WANT_DEFAULT_BPF_JIT || BPF_JIT_ALWAYS_ON > - depends on HAVE_EBPF_JIT && BPF_JIT > + bool "Enable BPF JIT by default" > + default y if ARCH_WANT_DEFAULT_BPF_JIT ... we retain the prior `default y if ARCH_WANT_DEFAULT_BPF_JIT || BPF_JIT_ALWAYS_ON` ? > + depends on BPF_SYSCALL && HAVE_EBPF_JIT && BPF_JIT Why is the extra BPF_SYSCALL dependency needed? You could still have this for cBPF->eBPF translations when BPF syscall is compiled out (e.g. seccomp, sock/packet filters, etc). > + help > + Enables BPF JIT by default to avoid speculative execution of BPF > + instructions by the interpreter. > + > + When CONFIG_BPF_JIT_DEFAULT_ON is enabled but CONFIG_BPF_JIT_ALWAYS_ON > + is disabled, /proc/sys/net/core/bpf_jit_enable is set to 1 by default > + and can be changed to 0 or 2. > > config BPF_UNPRIV_DEFAULT_OFF > bool "Disable unprivileged BPF by default" > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH bpf-next v3 2/2] bpf: Make BPF_JIT_DEFAULT_ON selectable in Kconfig 2022-02-28 23:53 ` Daniel Borkmann @ 2022-03-09 4:21 ` Tiezhu Yang 0 siblings, 0 replies; 7+ messages in thread From: Tiezhu Yang @ 2022-03-09 4:21 UTC (permalink / raw) To: Daniel Borkmann, Alexei Starovoitov, Andrii Nakryiko, Martin KaFai Lau, Song Liu, Yonghong Song, John Fastabend, KP Singh Cc: Xuefeng Li, netdev, bpf, linux-kernel, Johan Almbladh On 03/01/2022 07:53 AM, Daniel Borkmann wrote: > Hi Tiezhu, > > (patch 1/2 applied so far, thanks!) > > On 2/22/22 10:57 AM, Tiezhu Yang wrote: >> Currently, only x86, arm64 and s390 select ARCH_WANT_DEFAULT_BPF_JIT, >> the other archs do not select ARCH_WANT_DEFAULT_BPF_JIT. On the archs >> without ARCH_WANT_DEFAULT_BPF_JIT, if we want to set bpf_jit_enable to >> 1 by default, the only way is to enable CONFIG_BPF_JIT_ALWAYS_ON, then >> the users can not change it to 0 or 2, it seems bad for some users. We > > Can you elaborate on the "it seems bad for some users" part? What's the > concrete Hi Daniel, Sorry for the late reply. I saw the following two similar patches, some users want to set bpf_jit_enable to 1 by default, at the same time, they want to change it to 0 or 2 to debug, only enable CONFIG_BPF_JIT_DEFAULT_ON is a proper way in such a case. [PATCH bpf-next] bpf: trace jit code when enable BPF_JIT_ALWAYS_ON https://lore.kernel.org/bpf/20210326124030.1138964-1-Jianlin.Lv@arm.com/ [PATCH bpf-next] bpf: support bpf_jit_enable=2 for CONFIG_BPF_JIT_ALWAYS_ON https://lore.kernel.org/bpf/20211231153550.3807430-1-houtao1@huawei.com/ > use case? Also, why not add (e.g. mips) JIT to ARCH_WANT_DEFAULT_BPF_JIT > if the > CI suite passes with high degree/confidence? Yes, we can let the specific arch select ARCH_WANT_DEFAULT_BPF_JIT in Kconfig, this commit only gives another chance to enable or disable CONFIG_BPF_JIT_DEFAULT_ON manually when make menuconfig, this is useful to debug when develop JIT. > >> can select ARCH_WANT_DEFAULT_BPF_JIT for those archs if it is proper, >> but at least for now, make BPF_JIT_DEFAULT_ON selectable can give them >> a chance. >> >> Additionally, with this patch, under !BPF_JIT_ALWAYS_ON, we can disable >> BPF_JIT_DEFAULT_ON on the archs with ARCH_WANT_DEFAULT_BPF_JIT when make >> menuconfig, it seems flexible for some developers. >> >> Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn> >> --- >> kernel/bpf/Kconfig | 13 +++++++++++-- >> 1 file changed, 11 insertions(+), 2 deletions(-) >> >> diff --git a/kernel/bpf/Kconfig b/kernel/bpf/Kconfig >> index f3db15a..8521874 100644 >> --- a/kernel/bpf/Kconfig >> +++ b/kernel/bpf/Kconfig >> @@ -54,6 +54,7 @@ config BPF_JIT >> config BPF_JIT_ALWAYS_ON >> bool "Permanently enable BPF JIT and remove BPF interpreter" >> depends on BPF_SYSCALL && HAVE_EBPF_JIT && BPF_JIT >> + select BPF_JIT_DEFAULT_ON > > Is the above needed if ... > >> help >> Enables BPF JIT and removes BPF interpreter to avoid speculative >> execution of BPF instructions by the interpreter. >> @@ -63,8 +64,16 @@ config BPF_JIT_ALWAYS_ON >> failure. >> config BPF_JIT_DEFAULT_ON >> - def_bool ARCH_WANT_DEFAULT_BPF_JIT || BPF_JIT_ALWAYS_ON >> - depends on HAVE_EBPF_JIT && BPF_JIT >> + bool "Enable BPF JIT by default" >> + default y if ARCH_WANT_DEFAULT_BPF_JIT > > ... we retain the prior `default y if ARCH_WANT_DEFAULT_BPF_JIT || > BPF_JIT_ALWAYS_ON` ? After add bool "Enable BPF JIT by default" if use default y if ARCH_WANT_DEFAULT_BPF_JIT || BPF_JIT_ALWAYS_ON under !ARCH_WANT_DEFAULT_BPF_JIT, when enable CONFIG_BPF_JIT_ALWAYS_ON manually through make menuconfig, CONFIG_BPF_JIT_DEFAULT_ON is not set automatically, it seems not reasonable, but I do not know the reason, maybe this is because CONFIG_BPF_JIT_ALWAYS_ON is user selectable rather than selected via Kconfig only (like ARCH_WANT_DEFAULT_BPF_JIT), so here let BPF_JIT_ALWAYS_ON select BPF_JIT_DEFAULT_ON. > >> + depends on BPF_SYSCALL && HAVE_EBPF_JIT && BPF_JIT > > Why is the extra BPF_SYSCALL dependency needed? You could still have > this for cBPF->eBPF > translations when BPF syscall is compiled out (e.g. seccomp, sock/packet > filters, etc). Sorry, just copy-paste from "config BPF_JIT_ALWAYS_ON". If BPF_SYSCALL dependency is not needed by BPF_JIT_DEFAULT_ON, should we remove BPF_SYSCALL dependency in "config BPF_JIT_ALWAYS_ON"? Thanks, Tiezhu > >> + help >> + Enables BPF JIT by default to avoid speculative execution of BPF >> + instructions by the interpreter. >> + >> + When CONFIG_BPF_JIT_DEFAULT_ON is enabled but >> CONFIG_BPF_JIT_ALWAYS_ON >> + is disabled, /proc/sys/net/core/bpf_jit_enable is set to 1 by >> default >> + and can be changed to 0 or 2. >> config BPF_UNPRIV_DEFAULT_OFF >> bool "Disable unprivileged BPF by default" >> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH bpf-next v3 0/2] Modify BPF_JIT_ALWAYS_ON and BPF_JIT_DEFAULT_ON 2022-02-22 9:57 [PATCH bpf-next v3 0/2] Modify BPF_JIT_ALWAYS_ON and BPF_JIT_DEFAULT_ON Tiezhu Yang 2022-02-22 9:57 ` [PATCH bpf-next v3 1/2] bpf: Add some description about BPF_JIT_ALWAYS_ON in Kconfig Tiezhu Yang 2022-02-22 9:57 ` [PATCH bpf-next v3 2/2] bpf: Make BPF_JIT_DEFAULT_ON selectable " Tiezhu Yang @ 2022-02-28 23:40 ` patchwork-bot+netdevbpf 2 siblings, 0 replies; 7+ messages in thread From: patchwork-bot+netdevbpf @ 2022-02-28 23:40 UTC (permalink / raw) To: Tiezhu Yang Cc: ast, daniel, andrii, kafai, songliubraving, yhs, john.fastabend, kpsingh, lixuefeng, netdev, bpf, linux-kernel Hello: This series was applied to bpf/bpf-next.git (master) by Daniel Borkmann <daniel@iogearbox.net>: On Tue, 22 Feb 2022 17:57:04 +0800 you wrote: > v3: > -- Use "return failure" instead of "return in failure". > -- Use "Enable BPF JIT by default" for config BPF_JIT_DEFAULT_ON. > > v2: > -- Use the full path /proc/sys/net/core/bpf_jit_enable in the help text. > -- Update the commit message to make it clear in patch #2. > > [...] Here is the summary with links: - [bpf-next,v3,1/2] bpf: Add some description about BPF_JIT_ALWAYS_ON in Kconfig https://git.kernel.org/bpf/bpf-next/c/b664e255ba3c - [bpf-next,v3,2/2] bpf: Make BPF_JIT_DEFAULT_ON selectable in Kconfig (no matching commit) You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2022-03-09 4:22 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-02-22 9:57 [PATCH bpf-next v3 0/2] Modify BPF_JIT_ALWAYS_ON and BPF_JIT_DEFAULT_ON Tiezhu Yang 2022-02-22 9:57 ` [PATCH bpf-next v3 1/2] bpf: Add some description about BPF_JIT_ALWAYS_ON in Kconfig Tiezhu Yang 2022-02-22 9:57 ` [PATCH bpf-next v3 2/2] bpf: Make BPF_JIT_DEFAULT_ON selectable " Tiezhu Yang 2022-02-23 5:26 ` Song Liu 2022-02-28 23:53 ` Daniel Borkmann 2022-03-09 4:21 ` Tiezhu Yang 2022-02-28 23:40 ` [PATCH bpf-next v3 0/2] Modify BPF_JIT_ALWAYS_ON and BPF_JIT_DEFAULT_ON patchwork-bot+netdevbpf
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.