From: Sai Praneeth <sai.praneeth.prakhya@xxxxxxxxx> During early boot phase EFI_BOOT_SERVICES_<CODE/DATA> regions are marked as reserved by kernel (see efi_reserve_boot_services()) and hence are not used by kernel for boot purposes. When EFI_WARN_ON_ILLEGAL_ACCESSES is enabled, page faults triggered by firmware due to illegal accesses to EFI_BOOT_SERVICES_<CODE/DATA> regions are dynamically fixed by kernel by mapping these regions on demand. This resolution assumes that EFI_BOOT_SERVICES_<CODE/DATA> regions are intact i.e. no one has ever used these regions except firmware. Hence, to make this assumption true, don't call efi_free_boot_services() if EFI_WARN_ON_ILLEGAL_ACCESSES is enabled. Signed-off-by: Sai Praneeth Prakhya <sai.praneeth.prakhya@xxxxxxxxx> Suggested-by: Matt Fleming <matt@xxxxxxxxxxxxxxxxxxx> Based-on-code-from: Ricardo Neri <ricardo.neri@xxxxxxxxx> Cc: Al Stone <astone@xxxxxxxxxx> Cc: Lee Chun-Yi <jlee@xxxxxxxx> Cc: Borislav Petkov <bp@xxxxxxxxx> Cc: Bhupesh Sharma <bhsharma@xxxxxxxxxx> Cc: Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx> --- init/main.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/init/main.c b/init/main.c index 3b4ada11ed52..dce0520861a1 100644 --- a/init/main.c +++ b/init/main.c @@ -730,7 +730,8 @@ asmlinkage __visible void __init start_kernel(void) arch_post_acpi_subsys_init(); sfi_init_late(); - if (efi_enabled(EFI_RUNTIME_SERVICES)) { + if (efi_enabled(EFI_RUNTIME_SERVICES) && + !IS_ENABLED(CONFIG_EFI_WARN_ON_ILLEGAL_ACCESSES)) { efi_free_boot_services(); } -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-efi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html