]> www.infradead.org Git - users/jedix/linux-maple.git/commit
x86/ibt: Fix hibernate
authorPeter Zijlstra <peterz@infradead.org>
Wed, 9 Apr 2025 19:16:01 +0000 (21:16 +0200)
committerPeter Zijlstra <peterz@infradead.org>
Wed, 9 Apr 2025 19:29:11 +0000 (21:29 +0200)
commit1fac13956e9877483ece9d090a62239cdfe9deb7
treef426ffb20b65b943526a5cb3cddaed426902ce5e
parentf0df00ebc57f803603f2a2e0df197e51f06fbe90
x86/ibt: Fix hibernate

Todd reported, and Len confirmed, that commit 582077c94052 ("x86/cfi:
Clean up linkage") broke S4 hiberate on a fair number of machines.

Turns out these machines trip #CP when trying to restore the image.

As it happens, the commit in question removes two ENDBR instructions
in the hibernate code, and clearly got it wrong.

Notably restore_image() does an indirect jump to
relocated_restore_code(), which is a relocated copy of
core_restore_code().

In turn, core_restore_code(), will at the end do an indirect jump to
restore_jump_address (r8), which is pointing at a relocated
restore_registers().

So both sites do indeed need to be ENDBR.

Fixes: 582077c94052 ("x86/cfi: Clean up linkage")
Reported-by: Todd Brandt <todd.e.brandt@intel.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Tested-by: Todd Brandt <todd.e.brandt@intel.com>
Tested-by: Len Brown <len.brown@intel.com>
Link: https://bugzilla.kernel.org/show_bug.cgi?id=219998
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219998
arch/x86/power/hibernate_asm_64.S