On Wed, 16 May 2018, Kirill A. Shutemov wrote: > Eric and Hugh have reported instant reboot due to my recent changes in > decompression code. > > The root cause is that I didn't realize that we need to adjust GOT to be > able to run C code that early. > > The problem is only visible with an older toolchain. Binutils >= 2.24 is > able to eliminate GOT references by replacing them with RIP-relative > address loads[1]. > > We need to adjust GOT two times: > - before calling paging_prepare() using the initial load address > - before calling C code from the relocated kernel > > [1] > https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;h=80d873266dec > > Signed-off-by: Kirill A. Shutemov <[email protected]> > Fixes: 194a9749c73d ("x86/boot/compressed/64: Handle 5-level paging boot if > kernel is above 4G") > Reported-by: Eric Dumazet <[email protected]> > Reported-by: Hugh Dickins <[email protected]>
Very nice and well done! Reviewed-by: Thomas Gleixner <[email protected]>

