• Ard Biesheuvel's avatar
    efi: runtime: Don't assume virtual mappings are missing if VA == PA == 0 · 37926f96
    Ard Biesheuvel authored
    The generic EFI stub can be instructed to avoid SetVirtualAddressMap(),
    and simply run with the firmware's 1:1 mapping. In this case, it
    populates the virtual address fields of the runtime regions in the
    memory map with the physical address of each region, so that the mapping
    code has to be none the wiser. Only if SetVirtualAddressMap() fails, the
    virtual addresses are wiped and the kernel code knows that the regions
    cannot be mapped.
    
    However, wiping amounts to setting it to zero, and if a runtime region
    happens to live at physical address 0, its valid 1:1 mapped virtual
    address could be mistaken for a wiped field, resulting on loss of access
    to the EFI services at runtime.
    
    So let's only assume that VA == 0 means 'no runtime services' if the
    region in question does not live at PA 0x0.
    Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
    37926f96
riscv-runtime.c 3.12 KB