On 04.08.2025 13:00, Andrew Cooper wrote:
> On 04/08/2025 10:34 am, Jan Beulich wrote:
>> On 24.07.2025 16:07, Yann Sionneau wrote:
>>> xen.efi PE does not boot when loaded from shim or some patched
>>> downstream grub2.
>>>
>>> What happens is the bootloader would honour the MEM_DISCARDABLE
>>> flag of the .reloc section meaning it would not load its content
>>> into memory.
>>>
>>> But Xen is parsing the .reloc section content twice at boot:
>>> * https://elixir.bootlin.com/xen/v4.20.1/source/xen/common/efi/boot.c#L1362
>>> * 
>>> https://elixir.bootlin.com/xen/v4.20.1/source/xen/arch/x86/efi/efi-boot.h#L237
>>>
>>> Therefore it would crash with the following message:
>>> "Unsupported relocation type" as reported there:
>>>
>>> * 
>>> https://github.com/QubesOS/qubes-issues/issues/8206#issuecomment-2619048838
>>> * 
>>> https://lore.kernel.org/xen-devel/7e039262-1f54-46e1-8f70-ac3f03607...@suse.com/T/#me122b9e6c27cd98db917da2c9f67e74a2c6ad7a5
>>>
>>> This commit adds a small C host tool named keeprelocs
>>> that is called after xen.efi is produced by the build system
>>> in order to remove this bit from its .reloc section header.
>>>
>>> Signed-off-by: Yann Sionneau <yann.sionn...@vates.tech>
>> So I found a way to deal with this at the linker side, without any new 
>> command
>> line options. Behavior is solely driven by the attributes of any incoming 
>> .reloc
>> sections (of which there would be none by default, retaining original 
>> behavior).
>> The important patch is [1], but at least the first patch of the series [2] 
>> would
>> in most cases also be wanted/needed (patch 04 is obviously a mechanical 
>> prereq
>> for the main patch). Need for other of the prereqs there depends on the scope
>> and purpose of one's binutils build(s).
>>
>> [1] https://sourceware.org/pipermail/binutils/2025-August/143153.html
>> [2] https://sourceware.org/pipermail/binutils/2025-August/143141.html
> 
> That's good to see.  Do we need any matching changes in Xen?

Well, we'll need some (zero-size) contribution to .reloc then. For my
testing I hacked this into the linking rule (which is a mess already
anyway), but I hope / expect to find a cleaner solution for upstreaming.

Jan

Reply via email to