On Fri, 5 Mar 2021 at 10:40, Ard Biesheuvel <ardb@xxxxxxxxxx> wrote: > > This patch addresses an oversight on my part when I implemented Linux > side support for the EFI RT properties table: SetVirtualAddressMap() is > itself a runtime service which is only callable at runtime to begin with, > and so the EFI stub should only call it if it is not marked as unsupported. > > This may be useful for the Snapdragon EFI based laptops, which already rely > on a special EFI driver to expose the correct DT based on metadata exposed > by EFI. These systems ship with a broken implementation of SetVirtualAddressMap, > which is currently being worked around by passing efi=novamap on the kernel. > command line. > > After applying this patch (which I intend to propose for backporting to 5.10), > the same can be achieved by exposing a RT_PROP table that marks SetVAMap() as > unsupported. And while at it, better mark the variable services as unsupported > as well, since they don't work under Linux either. > > I'm open to extending this with a Linux specific override value kept in a > EFI variable, so that platforms that cannot support DtbLoader are able to > implement something similar. > ... or perhaps even in a DT property that gets AND'ed with the supported RT services mask bu the EFI stub before it boots the kernel proper.