From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) by mx.groups.io with SMTP id smtpd.web11.26988.1611146527196222345 for ; Wed, 20 Jan 2021 04:42:07 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=HpFNgr9d; spf=pass (domain: redhat.com, ip: 63.128.21.124, mailfrom: lersek@redhat.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1611146526; 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=opbNlFYZYYbCUOABz0orFTT4nabZW7qnZ7AW8ro4h+Y=; b=HpFNgr9d3icL3CVAkzd+6zpAhsCmH4GZN18HqTRW4bykf0rRNELcfLgA+kUxPq6LcjU58Z QFa+vwf+LjrRjrWR3InVs0SEodG2/IjdK2TpyTv9ZoIXTolhMhikhA/jJ09IgK349EUesO tAu7J9QkPzkjQ4+PD6gIEoU2JCLUhW0= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-574-pBcR8nKcMRuYei5Oil1UvQ-1; Wed, 20 Jan 2021 07:42:02 -0500 X-MC-Unique: pBcR8nKcMRuYei5Oil1UvQ-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id A00FFC7402; Wed, 20 Jan 2021 12:42:00 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-115-96.ams2.redhat.com [10.36.115.96]) by smtp.corp.redhat.com (Postfix) with ESMTP id 23C8119C48; Wed, 20 Jan 2021 12:41:56 +0000 (UTC) Subject: Re: [edk2-devel] [PATCH v6 05/11] OvmfPkg/PciHostBridgeUtilityLib: Extend parameters of InitRootBridge() To: devel@edk2.groups.io, cenjiahui@huawei.com Cc: Jordan Justen , Ard Biesheuvel , Rebecca Cran , Peter Grehan , Anthony Perard , Julien Grall , Leif Lindholm , Sami Mujawar , xieyingtai@huawei.com, wu.wubin@huawei.com, Yubo Miao References: <20210119011302.10908-1-cenjiahui@huawei.com> <20210119011302.10908-6-cenjiahui@huawei.com> From: "Laszlo Ersek" Message-ID: <87eee7f4-57ac-bc43-f214-db304cf70842@redhat.com> Date: Wed, 20 Jan 2021 13:41:55 +0100 MIME-Version: 1.0 In-Reply-To: <20210119011302.10908-6-cenjiahui@huawei.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=lersek@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit On 01/19/21 02:12, Jiahui Cen via groups.io wrote: > Extend parameter list of PciHostBridgeUtilityInitRootBridge() with > DmaAbove4G and NoExtendedConfigSpace to prepare for sharing with > ArmVirtPkg. > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3059 > > Cc: Jordan Justen > Cc: Laszlo Ersek > Cc: Ard Biesheuvel > Cc: Anthony Perard > Cc: Julien Grall > Signed-off-by: Jiahui Cen > Signed-off-by: Yubo Miao > --- > OvmfPkg/Library/PciHostBridgeLib/PciHostBridgeLib.inf | 1 + > OvmfPkg/Library/PciHostBridgeUtilityLib/PciHostBridgeUtilityLib.inf | 4 -- > OvmfPkg/Include/Library/PciHostBridgeUtilityLib.h | 56 +++++++++-------- > OvmfPkg/Library/PciHostBridgeLib/PciHostBridgeLib.c | 5 ++ > OvmfPkg/Library/PciHostBridgeLib/XenSupport.c | 1 + > OvmfPkg/Library/PciHostBridgeUtilityLib/PciHostBridgeUtilityLib.c | 63 +++++++++++--------- > 6 files changed, 73 insertions(+), 57 deletions(-) Reviewed-by: Laszlo Ersek Thanks Laszlo > > diff --git a/OvmfPkg/Library/PciHostBridgeLib/PciHostBridgeLib.inf b/OvmfPkg/Library/PciHostBridgeLib/PciHostBridgeLib.inf > index 7944f94b7743..72458262cb42 100644 > --- a/OvmfPkg/Library/PciHostBridgeLib/PciHostBridgeLib.inf > +++ b/OvmfPkg/Library/PciHostBridgeLib/PciHostBridgeLib.inf > @@ -50,4 +50,5 @@ [Pcd] > gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Size > gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Base > gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Size > + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId > gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration > diff --git a/OvmfPkg/Library/PciHostBridgeUtilityLib/PciHostBridgeUtilityLib.inf b/OvmfPkg/Library/PciHostBridgeUtilityLib/PciHostBridgeUtilityLib.inf > index e3d0a3740952..4d6764b702f4 100644 > --- a/OvmfPkg/Library/PciHostBridgeUtilityLib/PciHostBridgeUtilityLib.inf > +++ b/OvmfPkg/Library/PciHostBridgeUtilityLib/PciHostBridgeUtilityLib.inf > @@ -39,7 +39,3 @@ [LibraryClasses] > DebugLib > DevicePathLib > MemoryAllocationLib > - PcdLib > - > -[Pcd] > - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId > diff --git a/OvmfPkg/Include/Library/PciHostBridgeUtilityLib.h b/OvmfPkg/Include/Library/PciHostBridgeUtilityLib.h > index 8a1ddc2f5e02..a44ad5034520 100644 > --- a/OvmfPkg/Include/Library/PciHostBridgeUtilityLib.h > +++ b/OvmfPkg/Include/Library/PciHostBridgeUtilityLib.h > @@ -20,43 +20,49 @@ > /** > Utility function to initialize a PCI_ROOT_BRIDGE structure. > > - @param[in] Supports Supported attributes. > + @param[in] Supports Supported attributes. > > - @param[in] Attributes Initial attributes. > + @param[in] Attributes Initial attributes. > > - @param[in] AllocAttributes Allocation attributes. > + @param[in] AllocAttributes Allocation attributes. > > - @param[in] RootBusNumber The bus number to store in RootBus. > + @param[in] DmaAbove4G DMA above 4GB memory. > > - @param[in] MaxSubBusNumber The inclusive maximum bus number that can be > - assigned to any subordinate bus found behind any > - PCI bridge hanging off this root bus. > + @param[in] NoExtendedConfigSpace No Extended Config Space. > > - The caller is repsonsible for ensuring that > - RootBusNumber <= MaxSubBusNumber. If > - RootBusNumber equals MaxSubBusNumber, then the > - root bus has no room for subordinate buses. > + @param[in] RootBusNumber The bus number to store in RootBus. > > - @param[in] Io IO aperture. > + @param[in] MaxSubBusNumber The inclusive maximum bus number that can > + be assigned to any subordinate bus found > + behind any PCI bridge hanging off this > + root bus. > > - @param[in] Mem MMIO aperture. > + The caller is repsonsible for ensuring > + that RootBusNumber <= MaxSubBusNumber. If > + RootBusNumber equals MaxSubBusNumber, then > + the root bus has no room for subordinate > + buses. > > - @param[in] MemAbove4G MMIO aperture above 4G. > + @param[in] Io IO aperture. > > - @param[in] PMem Prefetchable MMIO aperture. > + @param[in] Mem MMIO aperture. > > - @param[in] PMemAbove4G Prefetchable MMIO aperture above 4G. > + @param[in] MemAbove4G MMIO aperture above 4G. > > - @param[out] RootBus The PCI_ROOT_BRIDGE structure (allocated by the > - caller) that should be filled in by this > - function. > + @param[in] PMem Prefetchable MMIO aperture. > > - @retval EFI_SUCCESS Initialization successful. A device path > - consisting of an ACPI device path node, with > - UID = RootBusNumber, has been allocated and > - linked into RootBus. > + @param[in] PMemAbove4G Prefetchable MMIO aperture above 4G. > > - @retval EFI_OUT_OF_RESOURCES Memory allocation failed. > + @param[out] RootBus The PCI_ROOT_BRIDGE structure (allocated > + by the caller) that should be filled in by > + this function. > + > + @retval EFI_SUCCESS Initialization successful. A device path > + consisting of an ACPI device path node, > + with UID = RootBusNumber, has been > + allocated and linked into RootBus. > + > + @retval EFI_OUT_OF_RESOURCES Memory allocation failed. > **/ > EFI_STATUS > EFIAPI > @@ -64,6 +70,8 @@ PciHostBridgeUtilityInitRootBridge ( > IN UINT64 Supports, > IN UINT64 Attributes, > IN UINT64 AllocAttributes, > + IN BOOLEAN DmaAbove4G, > + IN BOOLEAN NoExtendedConfigSpace, > IN UINT8 RootBusNumber, > IN UINT8 MaxSubBusNumber, > IN PCI_ROOT_BRIDGE_APERTURE *Io, > diff --git a/OvmfPkg/Library/PciHostBridgeLib/PciHostBridgeLib.c b/OvmfPkg/Library/PciHostBridgeLib/PciHostBridgeLib.c > index 07fa98110e98..8758d7c12bf0 100644 > --- a/OvmfPkg/Library/PciHostBridgeLib/PciHostBridgeLib.c > +++ b/OvmfPkg/Library/PciHostBridgeLib/PciHostBridgeLib.c > @@ -10,6 +10,7 @@ > #include > > #include > +#include > > #include > #include > @@ -151,6 +152,8 @@ PciHostBridgeGetRootBridges ( > Attributes, > Attributes, > AllocationAttributes, > + FALSE, > + PcdGet16 (PcdOvmfHostBridgePciDevId) != INTEL_Q35_MCH_DEVICE_ID, > (UINT8) LastRootBridgeNumber, > (UINT8) (RootBridgeNumber - 1), > &Io, > @@ -176,6 +179,8 @@ PciHostBridgeGetRootBridges ( > Attributes, > Attributes, > AllocationAttributes, > + FALSE, > + PcdGet16 (PcdOvmfHostBridgePciDevId) != INTEL_Q35_MCH_DEVICE_ID, > (UINT8) LastRootBridgeNumber, > PCI_MAX_BUS, > &Io, > diff --git a/OvmfPkg/Library/PciHostBridgeLib/XenSupport.c b/OvmfPkg/Library/PciHostBridgeLib/XenSupport.c > index 5dfeba0e6e23..9ef39f01821b 100644 > --- a/OvmfPkg/Library/PciHostBridgeLib/XenSupport.c > +++ b/OvmfPkg/Library/PciHostBridgeLib/XenSupport.c > @@ -456,6 +456,7 @@ ScanForRootBridges ( > ASSERT (RootBridges != NULL); > PciHostBridgeUtilityInitRootBridge ( > Attributes, Attributes, 0, > + FALSE, PcdGet16 (PcdOvmfHostBridgePciDevId) != INTEL_Q35_MCH_DEVICE_ID, > (UINT8) PrimaryBus, (UINT8) SubBus, > &Io, &Mem, &MemAbove4G, &mNonExistAperture, &mNonExistAperture, > &RootBridges[*NumberOfRootBridges] > diff --git a/OvmfPkg/Library/PciHostBridgeUtilityLib/PciHostBridgeUtilityLib.c b/OvmfPkg/Library/PciHostBridgeUtilityLib/PciHostBridgeUtilityLib.c > index 92b42566e5f8..bed2d87ea89c 100644 > --- a/OvmfPkg/Library/PciHostBridgeUtilityLib/PciHostBridgeUtilityLib.c > +++ b/OvmfPkg/Library/PciHostBridgeUtilityLib/PciHostBridgeUtilityLib.c > @@ -11,12 +11,10 @@ > **/ > > #include > -#include > #include > #include > #include > #include > -#include > #include > > > @@ -64,43 +62,49 @@ OVMF_PCI_ROOT_BRIDGE_DEVICE_PATH mRootBridgeDevicePathTemplate = { > /** > Utility function to initialize a PCI_ROOT_BRIDGE structure. > > - @param[in] Supports Supported attributes. > + @param[in] Supports Supported attributes. > > - @param[in] Attributes Initial attributes. > + @param[in] Attributes Initial attributes. > > - @param[in] AllocAttributes Allocation attributes. > + @param[in] AllocAttributes Allocation attributes. > > - @param[in] RootBusNumber The bus number to store in RootBus. > + @param[in] DmaAbove4G DMA above 4GB memory. > > - @param[in] MaxSubBusNumber The inclusive maximum bus number that can be > - assigned to any subordinate bus found behind any > - PCI bridge hanging off this root bus. > + @param[in] NoExtendedConfigSpace No Extended Config Space. > > - The caller is repsonsible for ensuring that > - RootBusNumber <= MaxSubBusNumber. If > - RootBusNumber equals MaxSubBusNumber, then the > - root bus has no room for subordinate buses. > + @param[in] RootBusNumber The bus number to store in RootBus. > > - @param[in] Io IO aperture. > + @param[in] MaxSubBusNumber The inclusive maximum bus number that can > + be assigned to any subordinate bus found > + behind any PCI bridge hanging off this > + root bus. > > - @param[in] Mem MMIO aperture. > + The caller is repsonsible for ensuring > + that RootBusNumber <= MaxSubBusNumber. If > + RootBusNumber equals MaxSubBusNumber, then > + the root bus has no room for subordinate > + buses. > > - @param[in] MemAbove4G MMIO aperture above 4G. > + @param[in] Io IO aperture. > > - @param[in] PMem Prefetchable MMIO aperture. > + @param[in] Mem MMIO aperture. > > - @param[in] PMemAbove4G Prefetchable MMIO aperture above 4G. > + @param[in] MemAbove4G MMIO aperture above 4G. > > - @param[out] RootBus The PCI_ROOT_BRIDGE structure (allocated by the > - caller) that should be filled in by this > - function. > + @param[in] PMem Prefetchable MMIO aperture. > > - @retval EFI_SUCCESS Initialization successful. A device path > - consisting of an ACPI device path node, with > - UID = RootBusNumber, has been allocated and > - linked into RootBus. > + @param[in] PMemAbove4G Prefetchable MMIO aperture above 4G. > > - @retval EFI_OUT_OF_RESOURCES Memory allocation failed. > + @param[out] RootBus The PCI_ROOT_BRIDGE structure (allocated > + by the caller) that should be filled in by > + this function. > + > + @retval EFI_SUCCESS Initialization successful. A device path > + consisting of an ACPI device path node, > + with UID = RootBusNumber, has been > + allocated and linked into RootBus. > + > + @retval EFI_OUT_OF_RESOURCES Memory allocation failed. > **/ > EFI_STATUS > EFIAPI > @@ -108,6 +112,8 @@ PciHostBridgeUtilityInitRootBridge ( > IN UINT64 Supports, > IN UINT64 Attributes, > IN UINT64 AllocAttributes, > + IN BOOLEAN DmaAbove4G, > + IN BOOLEAN NoExtendedConfigSpace, > IN UINT8 RootBusNumber, > IN UINT8 MaxSubBusNumber, > IN PCI_ROOT_BRIDGE_APERTURE *Io, > @@ -130,7 +136,7 @@ PciHostBridgeUtilityInitRootBridge ( > RootBus->Supports = Supports; > RootBus->Attributes = Attributes; > > - RootBus->DmaAbove4G = FALSE; > + RootBus->DmaAbove4G = DmaAbove4G; > > RootBus->AllocationAttributes = AllocAttributes; > RootBus->Bus.Base = RootBusNumber; > @@ -141,8 +147,7 @@ PciHostBridgeUtilityInitRootBridge ( > CopyMem (&RootBus->PMem, PMem, sizeof (*PMem)); > CopyMem (&RootBus->PMemAbove4G, PMemAbove4G, sizeof (*PMemAbove4G)); > > - RootBus->NoExtendedConfigSpace = (PcdGet16 (PcdOvmfHostBridgePciDevId) != > - INTEL_Q35_MCH_DEVICE_ID); > + RootBus->NoExtendedConfigSpace = NoExtendedConfigSpace; > > DevicePath = AllocateCopyPool (sizeof mRootBridgeDevicePathTemplate, > &mRootBridgeDevicePathTemplate); >