From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id C44BD803B6 for ; Mon, 13 Mar 2017 07:53:23 -0700 (PDT) Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 532583B721; Mon, 13 Mar 2017 14:53:24 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-116-193.phx2.redhat.com [10.3.116.193]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id v2DErM92021230; Mon, 13 Mar 2017 10:53:23 -0400 To: Ard Biesheuvel , Leif Lindholm References: <1489075441-23745-1-git-send-email-ard.biesheuvel@linaro.org> <1489075441-23745-4-git-send-email-ard.biesheuvel@linaro.org> <19f70c3d-4220-957b-24cd-bd2d41e45909@redhat.com> <5bdc3cc1-b292-8da3-f858-83c752016941@redhat.com> <20170311102640.GK16034@bivouac.eciton.net> Cc: "edk2-devel@lists.01.org" , Andrew Jones From: Laszlo Ersek Message-ID: <7561917e-fc1c-1675-e672-e0f8b716e4c4@redhat.com> Date: Mon, 13 Mar 2017 15:53:21 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Mon, 13 Mar 2017 14:53:24 +0000 (UTC) Subject: Re: [PATCH 3/3] ArmVirtPkg/FdtClientDxe: make DT table installation !ACPI dependent X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Mar 2017 14:53:24 -0000 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit On 03/13/17 11:23, Ard Biesheuvel wrote: > On 11 March 2017 at 10:26, Leif Lindholm wrote: >> On Sat, Mar 11, 2017 at 08:38:19AM +0100, Laszlo Ersek wrote: >>>>> "MdeModulePkg/Universal/Acpi/S3SaveStateDxe/AcpiS3ContextSave.c". I >>>>> think the above check should be reworked to look for the FADT >>>>> (EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE) with code lifted >>>>> from these helper functions. No driver outside of >>>>> QemuFwCfgAcpiPlatformDxe will install the FADT. And, the FADT will >>>>> always be part of QEMU's ACPI payload, if it generates one. >>>> >>>> OK, that would get things working again, I suppose. But do we want >>>> neutered ACPI tables to be exposed at all, even if there is a DT in >>>> that case to boot from? >>> >>> I think the neutered ACPI tables (on -no-acpi) should be fine. The >>> upstream Linux guest will prefer DT if it is present; >> >> Yes, but we've already determined that this situation is suboptimal, >> which was what triggered this changeset to begin with. >> > > Indeed. Having an ACPI entry point config table installed, but not > having the essential tables that allow you to boot is a situation that > we should try very hard to avoid IMO > That requires dynamic disabling of AcpiTableDxe -- so that EFI_ACPI_TABLE_PROTOCOL is not produced, despite the driver being loaded --, and equipping all clients of EFI_ACPI_TABLE_PROTOCOL to fail gracefully when the protocol is not found. Alternatively, let AcpiTableDxe install the protocol, but prevent all clients from calling it. We've done something like in the past with PcdAcpiS3Enable. It required IntelFrameworkModulePkg, MdeModulePkg and UefiCpuPkg changes. $ git grep -l -w InstallAcpiTable ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/AcpiTables.c ArmVirtPkg/XenAcpiPlatformDxe/XenAcpiPlatformDxe.c EdkCompatibilityPkg/Foundation/Efi/Protocol/AcpiTable/AcpiTable.h EmbeddedPkg/Library/AcpiLib/AcpiLib.c IntelFrameworkModulePkg/Universal/Acpi/AcpiSupportDxe/AcpiSupportAcpiSupportProtocol.c MdeModulePkg/Universal/Acpi/AcpiPlatformDxe/AcpiPlatform.c MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiSdt.c MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiSdt.h MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.c MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.c MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskProtocol.c MdeModulePkg/Universal/Network/IScsiDxe/IScsiIbft.c MdePkg/Include/Protocol/AcpiSystemDescriptionTable.h MdePkg/Include/Protocol/AcpiTable.h NetworkPkg/IScsiDxe/IScsiIbft.c OvmfPkg/AcpiPlatformDxe/AcpiPlatform.c OvmfPkg/AcpiPlatformDxe/AcpiPlatform.h OvmfPkg/AcpiPlatformDxe/Qemu.c OvmfPkg/AcpiPlatformDxe/QemuFwCfgAcpi.c OvmfPkg/AcpiPlatformDxe/Xen.c QuarkPlatformPkg/Acpi/Dxe/AcpiPlatform/AcpiPlatform.c QuarkPlatformPkg/Acpi/DxeSmm/SmmPowerManagement/Ppm.c SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.c SecurityPkg/Tcg/TcgDxe/TcgDxe.c SecurityPkg/Tcg/TcgSmm/TcgSmm.c SecurityPkg/Tcg/TrEEDxe/TrEEDxe.c SecurityPkg/Tcg/TrEESmm/TrEESmm.c UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationSmm.c (Some of these hits don't belong to EFI_ACPI_TABLE_PROTOCOL clients, of course.) Thanks Laszlo