On my SKL/KBL machine, upstream 4.12 kernel dom0 couldn’t boot up using xen.efi which is xen 4.9
(1)
Upstream 4.11 kernel doesn’t have such issue.
(2)
Upstream 4.12 kernel on my native uefi machine could boot up.
After some debug, I have some finding:
firmware/efi.c: Reinit efi global variable
efi is a global variable, some of efi members is initialized to
INVALID_TABLE_ADDR when efi is defined. But efi is zero when
setup_arch() begin running for unknown reason.
This patch set it again to avoid kernel panic. This fix 4.12 kernel dom0
couldn't boot up on xen.efi 4.9.
diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c
index b372aad..27bbcb4 100644
--- a/drivers/firmware/efi/efi.c
+++ b/drivers/firmware/efi/efi.c
@@ -474,6 +474,9 @@ int __init efi_config_parse_tables(void *config_tables, int count, int sz,
void *tablep;
int i;
+ efi.mps = efi.acpi = efi.acpi20 = efi.smbios = efi.smbios3 = efi.sal_systab =
+ efi.boot_info = efi.hcdp = efi.uga = efi.uv_systab = efi.fw_vendor =
+ efi.esrt= efi.properties_table = efi.rng_seed = efi.mem_attr_table = EFI_INVALID_TABLE_ADDR;
why efi is zero at setup_arch() begin running ? who will clear it ?
thanks