aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/lock_debug.c
diff options
context:
space:
mode:
authorXin Li (Intel) <[email protected]>2025-04-01 07:57:27 +0000
committerIngo Molnar <[email protected]>2025-04-01 20:29:02 +0000
commite5f1e8af9c9e151ecd665f6d2e36fb25fec3b110 (patch)
treec076271393a94b0b87414d8040191b7908e07a9e /net/core/lock_debug.c
parentx86/platform/iosf_mbi: Remove unused iosf_mbi_unregister_pmic_bus_access_noti... (diff)
downloadkernel-e5f1e8af9c9e151ecd665f6d2e36fb25fec3b110.tar.gz
kernel-e5f1e8af9c9e151ecd665f6d2e36fb25fec3b110.zip
x86/fred: Fix system hang during S4 resume with FRED enabled
Upon a wakeup from S4, the restore kernel starts and initializes the FRED MSRs as needed from its perspective. It then loads a hibernation image, including the image kernel, and attempts to load image pages directly into their original page frames used before hibernation unless those frames are currently in use. Once all pages are moved to their original locations, it jumps to a "trampoline" page in the image kernel. At this point, the image kernel takes control, but the FRED MSRs still contain values set by the restore kernel, which may differ from those set by the image kernel before hibernation. Therefore, the image kernel must ensure the FRED MSRs have the same values as before hibernation. Since these values depend only on the location of the kernel text and data, they can be recomputed from scratch. Reported-by: Xi Pardee <[email protected]> Reported-by: Todd Brandt <[email protected]> Tested-by: Todd Brandt <[email protected]> Suggested-by: H. Peter Anvin (Intel) <[email protected]> Signed-off-by: Xin Li (Intel) <[email protected]> Signed-off-by: Ingo Molnar <[email protected]> Reviewed-by: Rafael J. Wysocki <[email protected]> Reviewed-by: H. Peter Anvin (Intel) <[email protected]> Cc: Andy Lutomirski <[email protected]> Cc: Brian Gerst <[email protected]> Cc: Juergen Gross <[email protected]> Cc: Linus Torvalds <[email protected]> Link: https://lore.kernel.org/r/[email protected]
Diffstat (limited to 'net/core/lock_debug.c')
0 files changed, 0 insertions, 0 deletions