From: Mike Rapoport <rppt@kernel.org>
To: Song Liu <song@kernel.org>
Cc: Alexei Starovoitov <ast@kernel.org>,
Andrii Nakryiko <andrii@kernel.org>,
Andy Lutomirski <luto@kernel.org>, Borislav Petkov <bp@alien8.de>,
Daniel Borkmann <daniel@iogearbox.net>,
Dave Hansen <dave.hansen@linux.intel.com>,
Eduard Zingerman <eddyz87@gmail.com>,
Ingo Molnar <mingo@redhat.com>,
Kumar Kartikeya Dwivedi <memxor@gmail.com>,
Peter Zijlstra <peterz@infradead.org>,
Thomas Gleixner <tglx@kernel.org>,
Emil Tsalapatis <emil@etsalapatis.com>,
Jiri Olsa <jolsa@kernel.org>,
John Fastabend <john.fastabend@gmail.com>,
Martin KaFai Lau <martin.lau@linux.dev>,
"H. Peter Anvin" <hpa@zytor.com>,
Yonghong Song <yonghong.song@linux.dev>,
bpf@vger.kernel.org, linux-kernel@vger.kernel.org,
x86@kernel.org
Subject: Re: [PATCH bpf-next v3 0/5] bpf, x86: enable EXECMEM_ROX_CACHE for BPF allocations
Date: Fri, 17 Jul 2026 09:41:22 +0300 [thread overview]
Message-ID: <alnOkjf8rq3dUGmg@kernel.org> (raw)
In-Reply-To: <CAPhsuW5pRMtpa5Q0Y=zO5=2HSj4xOX+i5Vp+g2a6RDvmkeHKFw@mail.gmail.com>
On Thu, Jul 16, 2026 at 05:00:11PM -0700, Song Liu wrote:
> On Thu, Jul 16, 2026 at 12:51 AM Mike Rapoport (Microsoft)
> <rppt@kernel.org> wrote:
> >
> > Hi,
> >
> > BPF allocations of executable memory on x86 are essentially read-only. Most
> > paths that call bpf_jit_alloc_exec() immediately make it ROX with
> > set_memory_rox().
> >
> > The code generation, at least on x86, uses separately allocated writable
> > buffers and then updates the actual text memory with text_poke().
> >
> > These patches do several small adjustments to how BPF allocates executable
> > memory and enable EXECMEM_ROX_CACHE for BPF allocations on x86.
>
> After this set, we are still using bpf_prog_pack_alloc() from x86 code. I think
> the goal is to eventually remove bpf_prog_pack_alloc(). What's our plan for
> the next steps (toward removing bpf_prog_pack_alloc)?
"It works, don't touch"? ;-)
We can add another layer for sub-page allocations to execmem.
Since BPF is the only user the easiest would be just to move prog_pack
logic from BPF to execmem and call it a day.
Another option is to add a slab-like layer for sub-page allocations to
execmem. This is more complex but it would allow to get rid of the rigid
BPF_PROG_CHUNK_SIZE.
Maybe it would be also possible to teach SLUB to use execmem_alloc()
instead of alloc_pages() but that's surely the most far fetched one :)
And since we are talking about bpf_prog_pack_alloc(), why
BPF_PROG_PACK_SIZE accounts for num_possible_nodes():
#define BPF_PROG_PACK_SIZE (SZ_2M * num_possible_nodes())
Is it an elaborate choice or it was picked to work around older
vmalloc_huge() limitations?
> Thanks,
> Song
--
Sincerely yours,
Mike.
next prev parent reply other threads:[~2026-07-17 6:41 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-16 7:51 [PATCH bpf-next v3 0/5] bpf, x86: enable EXECMEM_ROX_CACHE for BPF allocations Mike Rapoport (Microsoft)
2026-07-16 7:51 ` [PATCH bpf-next v3 1/5] bpf: dispatcher: allocate bpf_dispatcher->rw_image with vzalloc() Mike Rapoport (Microsoft)
2026-07-16 8:52 ` bot+bpf-ci
2026-07-16 9:27 ` Mike Rapoport
2026-07-16 9:49 ` Kumar Kartikeya Dwivedi
2026-07-16 7:51 ` [PATCH bpf-next v3 2/5] bpf: drop __weak from bpf_jit_alloc_exec() and bpf_jit_free_exec() Mike Rapoport (Microsoft)
2026-07-16 7:51 ` [PATCH bpf-next v3 3/5] bpf: alloc_prog_pack(): skip ROX management for already ROX memory Mike Rapoport (Microsoft)
2026-07-16 7:51 ` [PATCH bpf-next v3 4/5] bpf, x86: make sure allocation in arch_bpf_trampoline_size() is writable Mike Rapoport (Microsoft)
2026-07-16 7:51 ` [PATCH bpf-next v3 5/5] x86/bpf: enable EXECMEM_ROX_CACHE for BPF allocations Mike Rapoport (Microsoft)
2026-07-17 0:00 ` [PATCH bpf-next v3 0/5] bpf, x86: " Song Liu
2026-07-17 6:41 ` Mike Rapoport [this message]
2026-07-17 7:27 ` Song Liu
2026-07-17 9:29 ` Mike Rapoport
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=alnOkjf8rq3dUGmg@kernel.org \
--to=rppt@kernel.org \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bp@alien8.de \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=dave.hansen@linux.intel.com \
--cc=eddyz87@gmail.com \
--cc=emil@etsalapatis.com \
--cc=hpa@zytor.com \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=martin.lau@linux.dev \
--cc=memxor@gmail.com \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=song@kernel.org \
--cc=tglx@kernel.org \
--cc=x86@kernel.org \
--cc=yonghong.song@linux.dev \
/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.