On 03.04.2025 14:02, Andrew Cooper wrote: > On 01/04/2025 6:56 am, Jan Beulich wrote: >> Putting a few bytes ahead of page tables isn't very efficient; there's >> a gap almost worth a full page. To avoid re-ordering of items in the >> source file, simply put the few small items in sub-section 1, for them >> to end up after the page tables, followed (in the final binary) by non- >> page-aligned items from other CUs. >> >> Signed-off-by: Jan Beulich <jbeul...@suse.com> >> >> --- a/xen/arch/x86/boot/head.S >> +++ b/xen/arch/x86/boot/head.S >> @@ -136,6 +136,7 @@ multiboot2_header: >> .Lno_nx_msg: .asciz "ERR: Not an NX-capable CPU!" >> >> .section .init.data, "aw", @progbits >> + .subsection 1 /* Put data here after the page tables (in x86_64.S). >> */ >> .align 4 >> >> .word 0 > > Just as a note, this depends on the toolchain baseline bump, so can't be > backported. > > Clang-11 does now like subsection, so we can remove the !__clang__ > specialisation for UNLIKELY_{START,END}_SECTION.
Funny you should mention that: I did check before even making the change, and in assembly code we used .subsection already before. We just needed to be careful about inline assembly. See UNLIKELY_START() vs the two forms of UNLIKELY_START_SECTION. Irrespective of that: I had no intention to backport this. Jan