[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 5/7] x86/mkreloc: remove warning about relocations to RO section
On 20.03.2025 09:14, Roger Pau Monné wrote: > On Wed, Mar 19, 2025 at 11:46:22AM +0100, Jan Beulich wrote: >> On 19.03.2025 11:32, Jan Beulich wrote: >>> On 18.03.2025 18:35, Roger Pau Monne wrote: >>>> Relocations are now applied after having moved the trampoline, >>> >>> That's two entirely different sets of relocations, isn't it? > > Right, this is the plain .reloc, while the trampoline one is > .trampoline_{rel,seg} > >>> What we generate >>> here is what is to be encoded in the PE binary's .reloc section, for the PE >>> loader to process. And for us to then process again once we move Xen back to >>> its linked position (by virtue of leaving physical mode). Therefore what >>> matters here is whether these relocations are still carried out while on the >>> page tables to boot loader created, or when already on page tables we >>> control. >>> In the former case any relocation to a non-writable section would be liable >>> to fault when applied. >> >> And yes - both calls to efi_arch_relocate_image() are ahead of switching page >> tables. The first call is benign - no writes occur there. The second call >> would cause #PF though for any relocs applied to .text or .rodata or >> .init.text >> or whatever else is non-writable. > > I wonder how this worked then, as I've tested with the xen.efi smoke > test in gitlab CI. Maybe ovmf doesn't acknowledge the RX sections and > unconditionally sets all mappings as writable? Possible. And that would be in line with the mode being call "physical mode": There are no permissions to enforce there. It just so happens that x86-64 requires paging to be enabled to be able to run 64-bit code. My experience with OVMF has been that it's hard to find where certain code lives. Perhaps I should try whether I can find respective code there. Then again if I find nothing, there wouldn't be any guarantee that I merely didn't spot the right place. Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |