From: Ashish Kalra <ashish.kalra@xxxxxxx> Handle cases where the RMP table placement in the BIOS is not 2M aligned and then the kexec kernel could try to allocate from within that chunk and that causes a fatal RMP fault. Check if RMP table start & end physical range in e820_table is not aligned to 2MB and in that case use e820__range_update() to map this range to reserved. The callback to apply these RMP table fixups needs to be called after the e820 tables are setup/populated and before the e820 map has been converted to the standard Linux memory resources and e820 map is no longer used and modifying it has no effect. v2: - Remove overriding e820__memory_setup_default() to invoke snp_rmptable_e820_fixup() to apply the RMP table fixups. - This callback snp_rmptable_e820_fixup() is now invoked after e820__memory_setup() and before e820__reserve_resources(). - Expose e820 API interfaces to update e820_table_kexec and e820_table_firmware externally. - snp_rmptable_e820_fixup() now calls these new external API interfaces to update e820_table_kexec and e820_table_firmware. Ashish Kalra (2): x86/e820: Expose API to update e820 kexec and firmware tables externally. x86/sev: Add callback to apply RMP table fixups for kexec. arch/x86/include/asm/e820/api.h | 3 +++ arch/x86/include/asm/sev.h | 2 ++ arch/x86/kernel/e820.c | 7 +++++- arch/x86/mm/mem_encrypt.c | 3 +++ arch/x86/virt/svm/sev.c | 44 +++++++++++++++++++++++++++++++++ 5 files changed, 58 insertions(+), 1 deletion(-) -- 2.34.1