On Tue, Mar 09, 2021 at 07:47:25PM +0100, Ard Biesheuvel wrote: > On Tue, 9 Mar 2021 at 19:10, Rob Clark <robdclark@xxxxxxxxx> wrote: > > > > On Mon, Mar 8, 2021 at 7:22 PM Shawn Guo <shawn.guo@xxxxxxxxxx> wrote: > > > > > > On Mon, Mar 08, 2021 at 02:34:48PM +0100, Ard Biesheuvel wrote: > > > > On Sun, 7 Mar 2021 at 12:02, Shawn Guo <shawn.guo@xxxxxxxxxx> wrote: > > > > > > > > > > On Sat, Mar 06, 2021 at 12:35:19PM +0100, Ard Biesheuvel wrote: > > > > > > Allow EFI systems to override the set of supported runtime services > > > > > > declared via the RT_PROP table, by checking for the existence of a > > > > > > 'OverrideSupported' EFI variable of the appropriate size under the > > > > > > RT_PROP table GUID, and if it does, combine the supported mask using > > > > > > logical AND. (This means the override can only remove support, not > > > > > > add it back). > > > > > > > > > > > > Cc: Jeffrey Hugo <jhugo@xxxxxxxxxxxxxx>, > > > > > > Cc: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx> > > > > > > Cc: Shawn Guo <shawn.guo@xxxxxxxxxx> > > > > > > Cc: Rob Clark <robdclark@xxxxxxxxx> > > > > > > Cc: Leif Lindholm <leif@xxxxxxxxxxxx> > > > > > > Cc: linux-arm-msm@xxxxxxxxxxxxxxx > > > > > > > > > > > > Signed-off-by: Ard Biesheuvel <ardb@xxxxxxxxxx> > > > > > > > > > > Awesome, Ard! On both Lenovo Yoga C630 and Flex 5G latops: > > > > > > > > > > Tested-by: Shawn Guo <shawn.guo@xxxxxxxxxx> > > > > > > > > > > With 'OverrideSupported' EFI variable added from UEFI Shell, we can drop > > > > > 'efi=novamap' kernel cmdline and get around the broken poweroff runtime > > > > > services nicely. Thanks! > > > > > > > > > > > > > Thanks for confirming. > > > > > > > > However, I am not going to merge this without some justification, and > > > > hopefully some input from other folks (Leif?) > > > > > > > > RTPROP already provides what we need on all platforms that use > > > > DtbLoader, and the patch for that is queued up for v5.12-rcX, with a > > > > cc:stable to v5.10. This allows any RT service to be marked as > > > > disabled, including SetVirtualAddressMap(). > > > > > > > > So afaict, that means that this patch would be a special case for > > > > Flex5G, right? > > > > > > It's for all Snapdragon based laptops, as we need to disable > > > SetVirtualAddressMap runtime services on all of them. > > > > > > > So how are platforms such as this one going to load the > > > > DTB? If some loader will be involved (or even just GRUB), > > > > > > Yes, GRUB. > > > > > > > shouldn't it > > > > be that component that sets RTPROP like DtbLoader will, not the kernel > > > > itself. > > > > > > > > Btw I don't think ACPI boot is a use case here. I don't see a software > > > > framebuffer with no wifi support as a usage mode that justifies > > > > carrying EFI stub hacks for everyone. > > > > > > Okay. I'm fine to carry it as an out-of-tree patch until someday you > > > consider ACPI boot is useful for everyone. But I do boot these laptops > > > with ACPI at daily basis right now as arm64 native build machine, with > > > USB Ethernet adapter. > > > > fwiw, the valid use-case for ACPI boot on these things is for distro > > installer.. it might not be the shiny accelerated experience, but you > > want to be able to get thru the installer and then install updates to > > get latest kernel/dtb/etc > > > > it is a small use-case, but kinda an important step ;-) > > > > That is a fair point. However, as I understand it, we need this to work around > - the need to pass efi=novamap > - broken poweroff on Flex5g One more: broken EFI variable runtime services on all Snapdragon laptops It's been another pain of running debian-installer (d-i) on these laptops, where EFI NV variables are just stored on UFS disk. So after Linux takes over the control of UFS, EFI NV variable runtime services then become out of service. Currently, we have to apply a hack [1] on d-i grub-installer to get around the issue, and it's been the only remaining out-of-tree patch we have to carry for d-i. With this nice `OverrideSupported` support, we will be able to drop that hack completely. > > So an installer either needs to set the EFI variable, or pass > efi=novamap on the first boot. Note that there are no arm64 EFI > systems known where efi=novamap causes problems. In fact, I would > prefer to stop using SetVirtualAddressMap() altogether, as it does not > provide any benefit whatsoever. So perhaps we should make efi=novamap > the default and be done with it. > > Broken poweroff is hardly a showstopper for an installer, given that > we cannot even install GRUB correctly. > > In summary, I am more than happy to collaborate constructively on this > (which is why I wrote the patch), but I don't think we're at a point > yet where this is the only thing standing in our way when it comes to > a smooth out-of-the-box Linux installation experience. There might be more to be done for getting a smooth Linux installation experience. But IMHO, this `OverrideSupported` thing is definitely a big step to that. Shawn [1] https://salsa.debian.org/installer-team/grub-installer/-/merge_requests/5