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 = 

why efi is zero at setup_arch() begin running ? who will clear it ?

Xen-devel mailing list

Reply via email to