From nobody Tue Feb 10 12:57:17 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+106248+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+106248+1787277+3901457@groups.io; arc=fail (BodyHash is different from the expected one) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1687332714540158.28746470441092; Wed, 21 Jun 2023 00:31:54 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id V5gAYY1788612xUFcbyM13mH; Wed, 21 Jun 2023 00:31:54 -0700 X-Received: from mx2.freebsd.org (mx2.freebsd.org [96.47.72.81]) by mx.groups.io with SMTP id smtpd.web11.5632.1687332713394051122 for ; Wed, 21 Jun 2023 00:31:53 -0700 X-Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits)) (Client CN "mx1.freebsd.org", Issuer "R3" (verified OK)) by mx2.freebsd.org (Postfix) with ESMTPS id 4QmFZ05dRDz3dMt; Wed, 21 Jun 2023 07:31:52 +0000 (UTC) (envelope-from corvink@FreeBSD.org) X-Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4QmFZ04sdMz3sbl; Wed, 21 Jun 2023 07:31:52 +0000 (UTC) (envelope-from corvink@FreeBSD.org) ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1687332712; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=4SzCGTJI4Xoc32u96PmZZdkEHqINeD5RSlv7Xvj2/U4=; b=jFAsSeaZuYqxyq4Chw1DUGo3yAHkELtvW4opOCUB/xkE/xaltGQ3YBJh7Bqzx6U4ccxj3q TwBZjR35tsqdKbManWFLQBEnuPDe2WO+DQXN4nQ1o06fVUZa8DBk31a+zEzDgxIwsKkGI2 gxBH20F41Up0FIaVGzb070H9ZWYG+JH9upuYw0N3YFUEdrWrUBQUaR5h1yYnVJoFvqQoZT 9wBzch7gR9uREPd5jPKsriZrXiACi+uTuIpDXfuqnLGTDXrVJUCveyed2qnW9PUtwLznqo 7Z3wZWcsqCgH4S/ZkmHkm2aL6w86g2M+bFu4vpc1SoRkbf1l6J5E1O83M5cN/w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1687332712; a=rsa-sha256; cv=none; b=pnqnZCtn27z2ktNtYKp8gq8gcqiFxQ08YbcA068j7GL8iQr8HUdZOmcoJvvfzJVkuv1qmO YkitvTEIADioAdv50ly5YVJSEGkIn63SH6yJGDvjIx0o/uDmASCqOjrdXhGUMejkvdGuaA D6LCwoazZ7fL5/9nd031fODaYNyfzbwKrm1/3hhUWod3pU710qJiTA8LENTe4bAwQO8Otp cC46LUyM2a5hjOCcJN7M3dToQpwGCBRI3CRhDZZwx3KbKlCnJmXNNdsWZSo/OoVubQYt7L WkAyrQqbUpDO7Sc+1tKMTfhyc9BoRXLAZCc5B0dN+ufBvg3YSjfkjOnW4XTMKA== X-Received: from corvink-nb.beckhoff.com (unknown [IPv6:2001:9e8:da6d:2500:f78a:5460:c2c3:5780]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: corvink) by smtp.freebsd.org (Postfix) with ESMTPSA id 4QmFYz3wbDzNMt; Wed, 21 Jun 2023 07:31:51 +0000 (UTC) (envelope-from corvink@FreeBSD.org) From: =?UTF-8?B?Q29ydmluIEvDtmhuZQ==?= To: devel@edk2.groups.io Cc: Peter Grehan , Ard Biesheuvel , Gerd Hoffmann , Jiewen Yao , Jordan Justen , Leif Lindholm , Rebecca Cran , Sami Mujawar Subject: [edk2-devel] [PATCH v4 3/6] OvmfPkg: move PciEncoding into AcpiPlatformLib Date: Wed, 21 Jun 2023 09:31:13 +0200 Message-ID: <20230621073141.149094-4-corvink@FreeBSD.org> In-Reply-To: <20230621073141.149094-1-corvink@FreeBSD.org> References: <20230621073141.149094-1-corvink@FreeBSD.org> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,corvink@FreeBSD.org X-Gm-Message-State: ipCaeCh4cLR3hY4Xyva0alP7x1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1687332714; bh=WJ4UjPFcRZi6yIi154rfeM4cn4B225S72r/56YEEoiI=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=xBW8vy9mTDm0JL4AaqxymmhgrqztaRKxCyaTPzYbV6AR49SVvuUtVVrbqHYIPzk8U5B CljZZc8jmRBTN00CE1BvKRaIydIW4gIgnKJ52M7TO5UNiB8qITM5GxCMEAWQDc7o1UqiU 5kLlMCDFGwQpiNJUp7R1gFWRwMuXj7Y3JMk= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1687332715544100013 Content-Type: text/plain; charset="utf-8" Bhyve supports providing ACPI tables by FwCfg. Therefore, InstallQemuFwCfgTables should be moved to AcpiPlatformLib to reuse the code. As first step, move PciEncoding into AcpiPlatformLib. Signed-off-by: Corvin K=C3=B6hne Acked-by: Peter Grehan Cc: Ard Biesheuvel Cc: Gerd Hoffmann Cc: Jiewen Yao Cc: Jordan Justen Cc: Leif Lindholm Cc: Rebecca Cran Cc: Sami Mujawar --- ArmVirtPkg/ArmVirtQemu.dsc | 1 + ArmVirtPkg/ArmVirtQemuKernel.dsc | 1 + OvmfPkg/AmdSev/AmdSevX64.dsc | 1 + OvmfPkg/CloudHv/CloudHvX64.dsc | 1 + OvmfPkg/IntelTdx/IntelTdxX64.dsc | 1 + OvmfPkg/Microvm/MicrovmX64.dsc | 1 + OvmfPkg/OvmfPkgIa32.dsc | 1 + OvmfPkg/OvmfPkgIa32X64.dsc | 1 + OvmfPkg/OvmfPkgX64.dsc | 1 + OvmfPkg/RiscVVirt/RiscVVirtQemu.dsc | 1 + OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf | 5 +- .../Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf | 1 - .../AcpiPlatformLib/DxeAcpiPlatformLib.inf | 7 + OvmfPkg/AcpiPlatformDxe/AcpiPlatform.h | 18 -- OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatform.h | 17 -- OvmfPkg/Include/Library/AcpiPlatformLib.h | 18 ++ OvmfPkg/AcpiPlatformDxe/QemuFwCfgAcpi.c | 1 + OvmfPkg/Bhyve/AcpiPlatformDxe/PciDecoding.c | 232 ------------------ .../AcpiPlatformLib}/PciDecoding.c | 3 +- 19 files changed, 38 insertions(+), 274 deletions(-) delete mode 100644 OvmfPkg/Bhyve/AcpiPlatformDxe/PciDecoding.c rename OvmfPkg/{AcpiPlatformDxe =3D> Library/AcpiPlatformLib}/PciDecoding.= c (96%) diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc index d998f816b2b3..1e0225951aef 100644 --- a/ArmVirtPkg/ArmVirtQemu.dsc +++ b/ArmVirtPkg/ArmVirtQemu.dsc @@ -111,6 +111,7 @@ [LibraryClasses.AARCH64.PEIM] ArmMmuLib|ArmPkg/Library/ArmMmuLib/ArmMmuPeiLib.inf =20 [LibraryClasses.common.DXE_DRIVER] + AcpiPlatformLib|OvmfPkg/Library/AcpiPlatformLib/DxeAcpiPlatformLib.inf ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeRepor= tStatusCodeLib.inf =20 !if $(TPM2_ENABLE) =3D=3D TRUE diff --git a/ArmVirtPkg/ArmVirtQemuKernel.dsc b/ArmVirtPkg/ArmVirtQemuKerne= l.dsc index c9d2b18392b9..8ef5927b53ff 100644 --- a/ArmVirtPkg/ArmVirtQemuKernel.dsc +++ b/ArmVirtPkg/ArmVirtQemuKernel.dsc @@ -83,6 +83,7 @@ [LibraryClasses.common] TpmPlatformHierarchyLib|SecurityPkg/Library/PeiDxeTpmPlatformHierarchyLi= bNull/PeiDxeTpmPlatformHierarchyLib.inf =20 [LibraryClasses.common.DXE_DRIVER] + AcpiPlatformLib|OvmfPkg/Library/AcpiPlatformLib/DxeAcpiPlatformLib.inf ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeRepor= tStatusCodeLib.inf =20 [LibraryClasses.common.UEFI_DRIVER] diff --git a/OvmfPkg/AmdSev/AmdSevX64.dsc b/OvmfPkg/AmdSev/AmdSevX64.dsc index d24909e847b4..2c6ed7c9745f 100644 --- a/OvmfPkg/AmdSev/AmdSevX64.dsc +++ b/OvmfPkg/AmdSev/AmdSevX64.dsc @@ -329,6 +329,7 @@ [LibraryClasses.common.UEFI_DRIVER] PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf =20 [LibraryClasses.common.DXE_DRIVER] + AcpiPlatformLib|OvmfPkg/Library/AcpiPlatformLib/DxeAcpiPlatformLib.inf PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf diff --git a/OvmfPkg/CloudHv/CloudHvX64.dsc b/OvmfPkg/CloudHv/CloudHvX64.dsc index dd9aa403d6a0..e000deed9e4d 100644 --- a/OvmfPkg/CloudHv/CloudHvX64.dsc +++ b/OvmfPkg/CloudHv/CloudHvX64.dsc @@ -366,6 +366,7 @@ [LibraryClasses.common.UEFI_DRIVER] PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf =20 [LibraryClasses.common.DXE_DRIVER] + AcpiPlatformLib|OvmfPkg/Library/AcpiPlatformLib/DxeAcpiPlatformLib.inf PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf diff --git a/OvmfPkg/IntelTdx/IntelTdxX64.dsc b/OvmfPkg/IntelTdx/IntelTdxX6= 4.dsc index db4953a82ec6..193657ff2d61 100644 --- a/OvmfPkg/IntelTdx/IntelTdxX64.dsc +++ b/OvmfPkg/IntelTdx/IntelTdxX64.dsc @@ -289,6 +289,7 @@ [LibraryClasses.common.UEFI_DRIVER] PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf =20 [LibraryClasses.common.DXE_DRIVER] + AcpiPlatformLib|OvmfPkg/Library/AcpiPlatformLib/DxeAcpiPlatformLib.inf PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf diff --git a/OvmfPkg/Microvm/MicrovmX64.dsc b/OvmfPkg/Microvm/MicrovmX64.dsc index 82da3a7e7cce..2f7585639374 100644 --- a/OvmfPkg/Microvm/MicrovmX64.dsc +++ b/OvmfPkg/Microvm/MicrovmX64.dsc @@ -368,6 +368,7 @@ [LibraryClasses.common.UEFI_DRIVER] PciExpressLib|OvmfPkg/Library/BaseCachingPciExpressLib/BaseCachingPciExp= ressLib.inf =20 [LibraryClasses.common.DXE_DRIVER] + AcpiPlatformLib|OvmfPkg/Library/AcpiPlatformLib/DxeAcpiPlatformLib.inf PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLibMicrovm.i= nf HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc index 08b04e65cab7..8d1ef4e833b2 100644 --- a/OvmfPkg/OvmfPkgIa32.dsc +++ b/OvmfPkg/OvmfPkgIa32.dsc @@ -373,6 +373,7 @@ [LibraryClasses.common.UEFI_DRIVER] PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf =20 [LibraryClasses.common.DXE_DRIVER] + AcpiPlatformLib|OvmfPkg/Library/AcpiPlatformLib/DxeAcpiPlatformLib.inf PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc index d456896a45fb..afee349910a2 100644 --- a/OvmfPkg/OvmfPkgIa32X64.dsc +++ b/OvmfPkg/OvmfPkgIa32X64.dsc @@ -378,6 +378,7 @@ [LibraryClasses.common.UEFI_DRIVER] PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf =20 [LibraryClasses.common.DXE_DRIVER] + AcpiPlatformLib|OvmfPkg/Library/AcpiPlatformLib/DxeAcpiPlatformLib.inf PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc index e1c0a6fe9ff7..24ac834e0631 100644 --- a/OvmfPkg/OvmfPkgX64.dsc +++ b/OvmfPkg/OvmfPkgX64.dsc @@ -399,6 +399,7 @@ [LibraryClasses.common.UEFI_DRIVER] PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf =20 [LibraryClasses.common.DXE_DRIVER] + AcpiPlatformLib|OvmfPkg/Library/AcpiPlatformLib/DxeAcpiPlatformLib.inf PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf diff --git a/OvmfPkg/RiscVVirt/RiscVVirtQemu.dsc b/OvmfPkg/RiscVVirt/RiscVV= irtQemu.dsc index 414d186179fb..06c300c4e850 100644 --- a/OvmfPkg/RiscVVirt/RiscVVirtQemu.dsc +++ b/OvmfPkg/RiscVVirt/RiscVVirtQemu.dsc @@ -113,6 +113,7 @@ [LibraryClasses.common] !endif =20 [LibraryClasses.common.DXE_DRIVER] + AcpiPlatformLib|OvmfPkg/Library/AcpiPlatformLib/DxeAcpiPlatformLib.inf ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeRepor= tStatusCodeLib.inf PciExpressLib|OvmfPkg/Library/BaseCachingPciExpressLib/BaseCachingPciExp= ressLib.inf =20 diff --git a/OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf b/OvmfPkg/AcpiPlat= formDxe/AcpiPlatformDxe.inf index 3fd0483b50eb..b22aad95e081 100644 --- a/OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf +++ b/OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf @@ -26,7 +26,6 @@ [Sources] BootScript.c CloudHvAcpi.c EntryPoint.c - PciDecoding.c QemuFwCfgAcpi.c =20 [Packages] @@ -35,15 +34,13 @@ [Packages] OvmfPkg/OvmfPkg.dec =20 [LibraryClasses] + AcpiPlatformLib BaseLib BaseMemoryLib - DebugLib MemoryAllocationLib OrderedCollectionLib - PcdLib QemuFwCfgLib QemuFwCfgS3Lib - UefiBootServicesTableLib UefiDriverEntryPoint HobLib TpmMeasurementLib diff --git a/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf b/OvmfPkg/Bh= yve/AcpiPlatformDxe/AcpiPlatformDxe.inf index 75ed8e4a7deb..2e228d815b87 100644 --- a/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf +++ b/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf @@ -26,7 +26,6 @@ [Sources] AcpiPlatform.h Bhyve.c EntryPoint.c - PciDecoding.c =20 [Packages] MdePkg/MdePkg.dec diff --git a/OvmfPkg/Library/AcpiPlatformLib/DxeAcpiPlatformLib.inf b/OvmfP= kg/Library/AcpiPlatformLib/DxeAcpiPlatformLib.inf index dfe0e5623d32..4be501bb2c58 100644 --- a/OvmfPkg/Library/AcpiPlatformLib/DxeAcpiPlatformLib.inf +++ b/OvmfPkg/Library/AcpiPlatformLib/DxeAcpiPlatformLib.inf @@ -16,11 +16,18 @@ [Defines] =20 [Sources] DxeAcpiPlatformLib.c + PciDecoding.c =20 [Packages] + MdeModulePkg/MdeModulePkg.dec MdePkg/MdePkg.dec OvmfPkg/OvmfPkg.dec =20 [LibraryClasses] BaseLib DebugLib + PcdLib + UefiBootServicesTableLib + +[Pcd] + gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration diff --git a/OvmfPkg/AcpiPlatformDxe/AcpiPlatform.h b/OvmfPkg/AcpiPlatformD= xe/AcpiPlatform.h index 3ec509865863..1328f6d1cba6 100644 --- a/OvmfPkg/AcpiPlatformDxe/AcpiPlatform.h +++ b/OvmfPkg/AcpiPlatformDxe/AcpiPlatform.h @@ -10,12 +10,6 @@ #define ACPI_PLATFORM_H_ =20 #include // EFI_ACPI_TABLE_PROTOCOL -#include // EFI_PCI_IO_PROTOCOL - -typedef struct { - EFI_PCI_IO_PROTOCOL *PciIo; - UINT64 PciAttributes; -} ORIGINAL_ATTRIBUTES; =20 typedef struct S3_CONTEXT S3_CONTEXT; =20 @@ -43,18 +37,6 @@ InstallAcpiTables ( IN EFI_ACPI_TABLE_PROTOCOL *AcpiTable ); =20 -VOID -EnablePciDecoding ( - OUT ORIGINAL_ATTRIBUTES **OriginalAttributes, - OUT UINTN *Count - ); - -VOID -RestorePciDecoding ( - IN ORIGINAL_ATTRIBUTES *OriginalAttributes, - IN UINTN Count - ); - EFI_STATUS AllocateS3Context ( OUT S3_CONTEXT **S3Context, diff --git a/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatform.h b/OvmfPkg/Bhyve/A= cpiPlatformDxe/AcpiPlatform.h index 54d1af073eab..b75292b73546 100644 --- a/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatform.h +++ b/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatform.h @@ -21,11 +21,6 @@ #include #include =20 -typedef struct { - EFI_PCI_IO_PROTOCOL *PciIo; - UINT64 PciAttributes; -} ORIGINAL_ATTRIBUTES; - typedef struct S3_CONTEXT S3_CONTEXT; =20 EFI_STATUS @@ -58,16 +53,4 @@ InstallAcpiTables ( IN EFI_ACPI_TABLE_PROTOCOL *AcpiTable ); =20 -VOID -EnablePciDecoding ( - OUT ORIGINAL_ATTRIBUTES **OriginalAttributes, - OUT UINTN *Count - ); - -VOID -RestorePciDecoding ( - IN ORIGINAL_ATTRIBUTES *OriginalAttributes, - IN UINTN Count - ); - #endif /* _ACPI_PLATFORM_H_INCLUDED_ */ diff --git a/OvmfPkg/Include/Library/AcpiPlatformLib.h b/OvmfPkg/Include/Li= brary/AcpiPlatformLib.h index 617265000315..167d6c49d6e2 100644 --- a/OvmfPkg/Include/Library/AcpiPlatformLib.h +++ b/OvmfPkg/Include/Library/AcpiPlatformLib.h @@ -8,6 +8,12 @@ #define ACPI_PLATFORM_LIB_H_ =20 #include +#include + +typedef struct { + EFI_PCI_IO_PROTOCOL *PciIo; + UINT64 PciAttributes; +} ORIGINAL_ATTRIBUTES; =20 /** Searches and returns the address of the ACPI Root System Description Poi= nter (RSDP) in system memory. @@ -51,4 +57,16 @@ InstallAcpiTablesFromRsdp ( IN EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER *Rsdp ); =20 +VOID +EnablePciDecoding ( + OUT ORIGINAL_ATTRIBUTES **OriginalAttributes, + OUT UINTN *Count + ); + +VOID +RestorePciDecoding ( + IN ORIGINAL_ATTRIBUTES *OriginalAttributes, + IN UINTN Count + ); + #endif diff --git a/OvmfPkg/AcpiPlatformDxe/QemuFwCfgAcpi.c b/OvmfPkg/AcpiPlatform= Dxe/QemuFwCfgAcpi.c index a073b292b743..3de039d57414 100644 --- a/OvmfPkg/AcpiPlatformDxe/QemuFwCfgAcpi.c +++ b/OvmfPkg/AcpiPlatformDxe/QemuFwCfgAcpi.c @@ -11,6 +11,7 @@ #include // EFI_ACPI_DESCRIPTION_HEAD= ER #include // QEMU_LOADER_FNAME_SIZE #include +#include #include // AsciiStrCmp() #include // CopyMem() #include // DEBUG() diff --git a/OvmfPkg/Bhyve/AcpiPlatformDxe/PciDecoding.c b/OvmfPkg/Bhyve/Ac= piPlatformDxe/PciDecoding.c deleted file mode 100644 index 0dcf3517f1e7..000000000000 --- a/OvmfPkg/Bhyve/AcpiPlatformDxe/PciDecoding.c +++ /dev/null @@ -1,232 +0,0 @@ -/** @file - Temporarily enable IO and MMIO decoding for all PCI devices while QEMU - regenerates the ACPI tables. - - Copyright (C) 2016, Red Hat, Inc. - - SPDX-License-Identifier: BSD-2-Clause-Patent -**/ - -#include - -#include "AcpiPlatform.h" - -/** - Collect all PciIo protocol instances in the system. Save their original - attributes, and enable IO and MMIO decoding for each. - - This is a best effort function; it doesn't return status codes. Its - caller is supposed to proceed even if this function fails. - - @param[out] OriginalAttributes On output, a dynamically allocated array= of - ORIGINAL_ATTRIBUTES elements. The array = lists - the PciIo protocol instances found in the - system at the time of the call, plus the - original PCI attributes for each. - - Before returning, the function enables I= O and - MMIO decoding for each PciIo instance it - finds. - - On error, or when no such instances are - found, OriginalAttributes is set to NULL. - - @param[out] Count On output, the number of elements in - OriginalAttributes. On error it is set to - zero. -**/ -VOID -EnablePciDecoding ( - OUT ORIGINAL_ATTRIBUTES **OriginalAttributes, - OUT UINTN *Count - ) -{ - EFI_STATUS Status; - UINTN NoHandles; - EFI_HANDLE *Handles; - ORIGINAL_ATTRIBUTES *OrigAttrs; - UINTN Idx; - - *OriginalAttributes =3D NULL; - *Count =3D 0; - - if (PcdGetBool (PcdPciDisableBusEnumeration)) { - // - // The platform downloads ACPI tables from QEMU in general, but there = are - // no root bridges in this execution. We're done. - // - return; - } - - Status =3D gBS->LocateHandleBuffer ( - ByProtocol, - &gEfiPciIoProtocolGuid, - NULL /* SearchKey */, - &NoHandles, - &Handles - ); - if (Status =3D=3D EFI_NOT_FOUND) { - // - // No PCI devices were found on either of the root bridges. We're done. - // - return; - } - - if (EFI_ERROR (Status)) { - DEBUG (( - DEBUG_WARN, - "%a: LocateHandleBuffer(): %r\n", - __func__, - Status - )); - return; - } - - OrigAttrs =3D AllocatePool (NoHandles * sizeof *OrigAttrs); - if (OrigAttrs =3D=3D NULL) { - DEBUG (( - DEBUG_WARN, - "%a: AllocatePool(): out of resources\n", - __func__ - )); - goto FreeHandles; - } - - for (Idx =3D 0; Idx < NoHandles; ++Idx) { - EFI_PCI_IO_PROTOCOL *PciIo; - UINT64 Attributes; - - // - // Look up PciIo on the handle and stash it - // - Status =3D gBS->HandleProtocol ( - Handles[Idx], - &gEfiPciIoProtocolGuid, - (VOID **)&PciIo - ); - ASSERT_EFI_ERROR (Status); - OrigAttrs[Idx].PciIo =3D PciIo; - - // - // Stash the current attributes - // - Status =3D PciIo->Attributes ( - PciIo, - EfiPciIoAttributeOperationGet, - 0, - &OrigAttrs[Idx].PciAttributes - ); - if (EFI_ERROR (Status)) { - DEBUG (( - DEBUG_WARN, - "%a: EfiPciIoAttributeOperationGet: %r\n", - __func__, - Status - )); - goto RestoreAttributes; - } - - // - // Retrieve supported attributes - // - Status =3D PciIo->Attributes ( - PciIo, - EfiPciIoAttributeOperationSupported, - 0, - &Attributes - ); - if (EFI_ERROR (Status)) { - DEBUG (( - DEBUG_WARN, - "%a: EfiPciIoAttributeOperationSupported: %r\n", - __func__, - Status - )); - goto RestoreAttributes; - } - - // - // Enable IO and MMIO decoding - // - Attributes &=3D EFI_PCI_IO_ATTRIBUTE_IO | EFI_PCI_IO_ATTRIBUTE_MEMORY; - Status =3D PciIo->Attributes ( - PciIo, - EfiPciIoAttributeOperationEnable, - Attributes, - NULL - ); - if (EFI_ERROR (Status)) { - DEBUG (( - DEBUG_WARN, - "%a: EfiPciIoAttributeOperationEnable: %r\n", - __func__, - Status - )); - goto RestoreAttributes; - } - } - - // - // Success - // - FreePool (Handles); - *OriginalAttributes =3D OrigAttrs; - *Count =3D NoHandles; - return; - -RestoreAttributes: - while (Idx > 0) { - --Idx; - OrigAttrs[Idx].PciIo->Attributes ( - OrigAttrs[Idx].PciIo, - EfiPciIoAttributeOperationSet, - OrigAttrs[Idx].PciAttributes, - NULL - ); - } - - FreePool (OrigAttrs); - -FreeHandles: - FreePool (Handles); -} - -/** - Restore the original PCI attributes saved with EnablePciDecoding(). - - @param[in] OriginalAttributes The array allocated and populated by - EnablePciDecoding(). This parameter may be - NULL. If OriginalAttributes is NULL, then= the - function is a no-op; otherwise the PciIo - attributes will be restored, and the - OriginalAttributes array will be freed. - - @param[in] Count The Count value stored by EnablePciDecodi= ng(), - the number of elements in OriginalAttribu= tes. - Count may be zero if and only if - OriginalAttributes is NULL. -**/ -VOID -RestorePciDecoding ( - IN ORIGINAL_ATTRIBUTES *OriginalAttributes, - IN UINTN Count - ) -{ - UINTN Idx; - - ASSERT ((OriginalAttributes =3D=3D NULL) =3D=3D (Count =3D=3D 0)); - if (OriginalAttributes =3D=3D NULL) { - return; - } - - for (Idx =3D 0; Idx < Count; ++Idx) { - OriginalAttributes[Idx].PciIo->Attributes ( - OriginalAttributes[Idx].PciIo, - EfiPciIoAttributeOperationSet, - OriginalAttributes[Idx].PciAttributes, - NULL - ); - } - - FreePool (OriginalAttributes); -} diff --git a/OvmfPkg/AcpiPlatformDxe/PciDecoding.c b/OvmfPkg/Library/AcpiPl= atformLib/PciDecoding.c similarity index 96% rename from OvmfPkg/AcpiPlatformDxe/PciDecoding.c rename to OvmfPkg/Library/AcpiPlatformLib/PciDecoding.c index c7dbfb1baaea..58fbfeefda36 100644 --- a/OvmfPkg/AcpiPlatformDxe/PciDecoding.c +++ b/OvmfPkg/Library/AcpiPlatformLib/PciDecoding.c @@ -7,12 +7,11 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ =20 +#include #include // DEBUG() #include // AllocatePool() #include // gBS =20 -#include "AcpiPlatform.h" - /** Collect all PciIo protocol instances in the system. Save their original attributes, and enable IO and MMIO decoding for each. --=20 2.41.0 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#106248): https://edk2.groups.io/g/devel/message/106248 Mute This Topic: https://groups.io/mt/99672100/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-