On Thu, Jun 5, 2025 at 7:32 AM Jiri Slaby <[email protected]> wrote: > > Cc BPF people, just so you know. > > On 05. 06. 25, 16:27, Jiri Slaby wrote: > > On 27. 01. 25, 17:05, Uros Bizjak wrote: > >> This patch declares percpu variables in __seg_gs/__seg_fs named AS > >> and keeps them named AS qualified until they are dereferenced with > >> percpu accessor. This approach enables various compiler check > >> for cross-namespace variable assignments. > >> > >> Signed-off-by: Uros Bizjak <[email protected]> > >> Acked-by: Nadav Amit <[email protected]> > >> Cc: Dennis Zhou <[email protected]> > >> Cc: Tejun Heo <[email protected]> > >> Cc: Christoph Lameter <[email protected]> > >> Cc: Thomas Gleixner <[email protected]> > >> Cc: Ingo Molnar <[email protected]> > >> Cc: Borislav Petkov <[email protected]> > >> Cc: Dave Hansen <[email protected]> > >> Cc: "H. Peter Anvin" <[email protected]> > >> Cc: Linus Torvalds <[email protected]> > >> Cc: Andy Lutomirski <[email protected]> > >> Cc: Brian Gerst <[email protected]> > >> Cc: Peter Zijlstra <[email protected]> > >> --- > >> arch/x86/include/asm/percpu.h | 15 ++++++++++++--- > >> 1 file changed, 12 insertions(+), 3 deletions(-) > >> > >> diff --git a/arch/x86/include/asm/percpu.h b/arch/x86/include/asm/ > >> percpu.h > >> index 27f668660abe..474d648bca9a 100644 > >> --- a/arch/x86/include/asm/percpu.h > >> +++ b/arch/x86/include/asm/percpu.h > >> @@ -95,9 +95,18 @@ > >> #endif /* CONFIG_SMP */ > >> -#define __my_cpu_type(var) typeof(var) __percpu_seg_override > >> -#define __my_cpu_ptr(ptr) (__my_cpu_type(*(ptr))*)(__force > >> uintptr_t)(ptr) > >> -#define __my_cpu_var(var) (*__my_cpu_ptr(&(var))) > >> +#if defined(CONFIG_USE_X86_SEG_SUPPORT) && defined(USE_TYPEOF_UNQUAL) > >> +# define __my_cpu_type(var) typeof(var) > >> +# define __my_cpu_ptr(ptr) (ptr) > >> +# define __my_cpu_var(var) (var) > >> + > >> +# define __percpu_qual __percpu_seg_override > >> +#else > >> +# define __my_cpu_type(var) typeof(var) __percpu_seg_override > >> +# define __my_cpu_ptr(ptr) (__my_cpu_type(*(ptr))*)(__force > >> uintptr_t)(ptr) > >> +# define __my_cpu_var(var) (*__my_cpu_ptr(&(var))) > >> +#endif > >> + > > > > Another issue with this is this causes all modules in 6.15 are 2-4 times > > (compressed size) bigger: > > $ ll /usr/lib/modules/*-[0-9]-default/kernel/drivers/atm/atmtcp.ko.zst > > > -rw-r--r--. 1 root root 10325 May 13 11:49 /usr/lib/modules/6.14.6-2- > > default/kernel/drivers/atm/atmtcp.ko.zst > > > -rw-r--r--. 1 root root 39677 Jun 2 09:13 /usr/lib/modules/6.15.0-1- > > default/kernel/drivers/atm/atmtcp.ko.zst > > > > It's due to larger .BTF section: > > .BTF PROGBITS 0000000000000000 [-00003080-] > > [- 00000000000011a8-] {+00003100+} > > {+ 0000000000012cf8+} 0000000000000000 0 0 1 > > > > There are a lot of new BTF types defined in each module like: > > +attribute_group STRUCT > > +backing_dev_info STRUCT > > +bdi_writeback STRUCT > > +bin_attribute STRUCT > > +bio_end_io_t TYPEDEF > > +bio_list STRUCT > > +bio_set STRUCT > > +bio STRUCT > > +bio_vec STRUCT > > > > Reverting this gives me back to normal sizes. > > > > Any ideas?
Try newer pahole ? It was fixed by: https://lore.kernel.org/bpf/[email protected]/
