On Fri, 5 Mar 2021 at 08:32, Shawn Guo <shawn.guo@xxxxxxxxxx> wrote: > > On Fri, Mar 05, 2021 at 08:01:02AM +0100, Ard Biesheuvel wrote: > > On Fri, 5 Mar 2021 at 07:51, Shawn Guo <shawn.guo@xxxxxxxxxx> wrote: > > > > > > Poweroff via UEFI Runtime Services doesn't always work on every single > > > arm64 machine. For example, on Lenovo Flex 5G laptop, it results in > > > a system reboot rather than shutdown. Add a DMI check to keep such > > > system stay with the original poweroff method (PSCI). > > > > > > Signed-off-by: Shawn Guo <shawn.guo@xxxxxxxxxx> > > > > What is the point of using EFI runtime services on this machine if > > poweroff doesn't work either? > > Hmm, I'm not sure how many EFI runtime services are being used by > kernel, but this is the only one broken I have seen. Not sure we want > to disable the whole thing completely. Also, I'm looking at commit log > of 0c5ed61adbdb ("efi/reboot: Allow powering off machines using EFI") > below. > > Not only can EfiResetSystem() be used to reboot, it can also be used to > power down machines. > > By and large, this functionality doesn't work very well across the range > of EFI machines in the wild, so it should definitely only be used as a > last resort. In an ideal world, this wouldn't be needed at all. > > Unfortunately, we're starting to see machines where EFI is the *only* > reliable way to power down, and nothing else, not PCI, not ACPI, works. > > It seems poweroff via EFI runtime services is known not working for > every machine, and was meant to be the last resort if nothing else can > power off system. If we try PSCI first on arm64, you do not see my > patch at all :) > > > Can't we just boot this thing with > > efi=noruntime? > > We are trying to get arm64 laptop support into distros, and patching > kernel cmdline with 'efi=novamap' is already a pain. We do not really > want to have more of it. > I suppose we have to rely on DtbLoader for these platforms anyway, right? That means we should be able to rely on it to publish a RT_PROP configuration table which tells the kernel which EFI runtime services are usable and which are not. This way, we could get rid of efi=novamap as well. I'd prefer to rely on that than on DMI quirks - we have not used those at all on arm64/ARM so far, and the DMI tables are parsed relatively late, so in some cases, DMI quirks may not be reliable.