Messages in this thread | | | Subject | Re: [PATCH] x86/boot: Place kernel_info at a fixed offset | From | Ross Philipson <> | Date | Mon, 5 Oct 2020 17:51:36 -0400 |
| |
On 9/29/20 5:04 PM, Arvind Sankar wrote: > There are use cases for storing the offset of a symbol in kernel_info. > For example, the trenchboot series [0] needs to store the offset of the > Measured Launch Environment header in kernel_info. > > Since commit (note: commit ID from tip/master) > > 527afc212231 ("x86/boot: Check that there are no run-time relocations") > > run-time relocations are not allowed in the compressed kernel, so simply > using the symbol in kernel_info, as > > .long symbol > > will cause a linker error because this is not position-independent. > > With kernel_info being a separate object file and in a different section > from startup_32, there is no way to calculate the offset of a symbol > from the start of the image in a position-independent way. > > To enable such use cases, put kernel_info into its own section which is > placed at a predetermined offset (KERNEL_INFO_OFFSET) via the linker > script. This will allow calculating the symbol offset in a > position-independent way, by adding the offset from the start of > kernel_info to KERNEL_INFO_OFFSET. > > Ensure that kernel_info is aligned, and use the SYM_DATA.* macros > instead of bare labels. This stores the size of the kernel_info > structure in the ELF symbol table.
I pulled this change in and made all the changes to remove other code that was causing relocations in the compressed kernel. I tested it and it is working well. Thanks for all the help.
Tested-by: Ross Philipson <ross.philipson@oracle.com>
> > Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> > Cc: Ross Philipson <ross.philipson@oracle.com> > [0] https://urldefense.com/v3/__https://lore.kernel.org/lkml/1600959521-24158-8-git-send-email-ross.philipson@oracle.com/__;!!GqivPVa7Brio!JiEGSToX4gewsr8DY0iWrRR7oTzMZl1b-WBsZ1U6M7dCJXuGzIrF-5qVqN4v8LEys8M$ > ---
[snip]
| |