[PATCH v2 0/2] Apply RMP table fixups for kexec.

From: Ashish Kalra
Date: Mon Apr 15 2024 - 17:09:20 EST


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