From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mx.groups.io with SMTP id smtpd.web10.40533.1595258773881497936 for ; Mon, 20 Jul 2020 08:26:14 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=iYvS3lhD; spf=pass (domain: intel.com, ip: 192.55.52.120, mailfrom: maurice.ma@intel.com) IronPort-SDR: 29dW7O+PQWbO87cDl9eY0Rb4mkdnwMLh7NWTxV1yrN609LcmxBryFmN5dhzDAqu39K2NNQCV1j hrwd2cApfyqQ== X-IronPort-AV: E=McAfee;i="6000,8403,9688"; a="147429992" X-IronPort-AV: E=Sophos;i="5.75,375,1589266800"; d="scan'208";a="147429992" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jul 2020 08:26:13 -0700 IronPort-SDR: O7F0VWA5vsixWANoInx6+aY37N9vGu+meRaRGaaT1aKUz4MVPGajpeoAKKVdkzRT2kZpXKXuuv l1Xo10IJe9Iw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,375,1589266800"; d="scan'208";a="362047830" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga001.jf.intel.com with ESMTP; 20 Jul 2020 08:26:12 -0700 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 20 Jul 2020 08:26:11 -0700 Received: from FMSEDG002.ED.cps.intel.com (10.1.192.134) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Mon, 20 Jul 2020 08:26:11 -0700 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (104.47.36.52) by edgegateway.intel.com (192.55.55.69) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 20 Jul 2020 08:26:11 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nMGkAnDm9sulg2J9fhXjyGY9sn3zHJi0Iq7dYCPdZ0gK9hRohsgkeLLiY+hYMM4qZCH3RnqG5fimbLIUyWqUmnpa13ouRMpVoLt53OmH3bKE0eM7cLTA2r5cb3Gz/qPxNfn/t4YJWOfw71Y1DHN2nPcma8hvK6cIH0dMmC8npWe1mlXZdQB2hlHrFOTEMpW0oUA8jqku+gpHPFd/vZxR2miPrgYBpGNzS6p2SqzKLC8GSy7eumJS7sh/OSAcStM8is8ZWf0tie8MztdjMIQdC9R9BLutGvCblPT4jEU9TQrjbL+CR/FCsWgriPtCR6EpDMH2PPOzPWSV1lSVidUY2Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xGzpykTPcBy3BMLlEaPXJ7eTePUCBWfe7svsmcCt+WE=; b=oGz+Mx/TP3y3Tf2V71iurVpIlPhjMQrPuvCG05EZ20v/HL7zPmL8yln+SWZsk5CHOpAd5mMI6O2iqfEmV3XUSQnSWzM5TEJfjh0g/etb9lON9nFBXqBdMC4GfaAnPS5LNsUG+RNa0AK+mLxt1rmL9qTdrpgYcXgSPpnTtKGjd5ket9YZDAvn86wOpUuyZW1s5/UjxkkeGhpRlg7J2moWXoga3Yqj2pXI/3qLZr+CepmtPUsUw4B90CoEoowAcgEPkIUy2KrvVldVTchNDwanTENBH4Rl5yPGj3fGXbm7wfYQrDcvjAQQmP+u0qT3oclZuDrgHpAXp52PBFynWwXMXw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xGzpykTPcBy3BMLlEaPXJ7eTePUCBWfe7svsmcCt+WE=; b=iYvS3lhDpWngMMvKrv+UCsp7NsEsAHXxCYHQigVEFXyrooPUSFL4aeS6WZQ9SVBHMWEA/z/+jI7DRg8GEL+QUFrLI/h8Y4vrrqh2mK7E6IKF81U0Ab1uy6lkFDrraGldcl2jj9EPRzQsVC7Bxogky0cYyVkTd8kQvO/8c9qJDao= Received: from DM6PR11MB2793.namprd11.prod.outlook.com (2603:10b6:5:c0::29) by DM6PR11MB4508.namprd11.prod.outlook.com (2603:10b6:5:200::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3195.23; Mon, 20 Jul 2020 15:26:07 +0000 Received: from DM6PR11MB2793.namprd11.prod.outlook.com ([fe80::d43:5665:5cee:b3c5]) by DM6PR11MB2793.namprd11.prod.outlook.com ([fe80::d43:5665:5cee:b3c5%6]) with mapi id 15.20.3195.025; Mon, 20 Jul 2020 15:26:07 +0000 From: "Ma, Maurice" To: Marcello Sylvester Bauer , "devel@edk2.groups.io" CC: Patrick Rudolph , Christian Walter , "Desimone, Nathaniel L" , "Zeng, Star" , "Kinney, Michael D" , "Gao, Liming" Subject: Re: [PATCH v2 2/2] MdePkg: Add support for variable size MMCONF space Thread-Topic: [PATCH v2 2/2] MdePkg: Add support for variable size MMCONF space Thread-Index: AQHWW2cLJbTuleJrBEiFWFksSwYXpKkQnFJw Date: Mon, 20 Jul 2020 15:26:07 +0000 Message-ID: References: <20200716114820.14211-1-marcello.bauer@9elements.com> <20200716114820.14211-3-marcello.bauer@9elements.com> In-Reply-To: <20200716114820.14211-3-marcello.bauer@9elements.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action authentication-results: 9elements.com; dkim=none (message not signed) header.d=none;9elements.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [104.153.200.60] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7d0a1cd5-706d-449e-69c1-08d82cc1399d x-ms-traffictypediagnostic: DM6PR11MB4508: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: bMITPSBu+a7gczl7kVfgqqomSWPio0nhBnUankatAyVaXKCtIALMZhI0UheFEf9/zy8/ZwWOqtBNnVO/wa16VXv2LWq/dtB925J07vN726Zwa8gTZhoHWVnWUxZ12ImiD0UM8sjXbDmJiThgFvs3PkRD8tcYZP8Ug1O2dUy7hZLZc4PaIsgk1G9cPwnFLeIJJhHRUQdkJJORxdqrLTWXYOByQvHeyzCh5BojC8vRg18qGEv614XPWNXqvRY0lzfuK4lhvIotB1TIH3UYV68DfJGFm5Q4RFR+wrrQsv6BZCMEK52l+Jt7oZrdG4sUspq4TnRih4XnQ8XRyCBjRoW0qQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR11MB2793.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(136003)(366004)(376002)(39860400002)(396003)(346002)(66556008)(86362001)(71200400001)(53546011)(4326008)(186003)(66476007)(66946007)(6506007)(66446008)(64756008)(8936002)(26005)(107886003)(76116006)(19627235002)(9686003)(316002)(8676002)(30864003)(52536014)(2906002)(7696005)(33656002)(54906003)(478600001)(83380400001)(5660300002)(55016002)(110136005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: 9O7PqTNhJKxnBGBrhAjQfEZpCGCEc5+hU8bn5WctH7b/pJkVmdI/Vsw1/MxeuWyBtMWNkPex52FXzxw0L+Tqae/IygnnWpNL7auQSCNaIh7QRssBR0daMTIx7zR0UEyN345TuvK90MWfRicMz+fUdClFox34WInoxYrYkmXFdCfeq3nPIDVxOkWWDgAFcvBJK8pAdwm9B+AoseBzF0wZA9YXPXuOmEGzzvwOj6PP91S9LAjcd5KNq82cthmassifoT+1W4RLiWYVobbdmfVYzkTbYspOQFEgTSTess6YSOOmMWBYCdrYeGHsmUHRqAfKUFVWb5GbZhapuxa3KjYBrUonU6ptW9C1oJhMz4osFKYPrQjHj+lG3+j92S4cKiJi1aDmF5jVOO4wTRJ8Qpp1KcYh/D3oNyn5qWP2vrdrBaHNjQGVHFMs/hPK26Tsdiazv0Uc9+ptgStLoMjWYB7JFhDadvtZ2mID4egVz+wyPEp8Zgwxr02ueiMVoRLQSz21 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB2793.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7d0a1cd5-706d-449e-69c1-08d82cc1399d X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Jul 2020 15:26:07.8433 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: VpAMv8l1tjNRb0YsdLCMSum1w6PwytFGg9bmeH1MydsFbiY0qmzixhUrpGYFJ9ou2Jja7x9mDcgWCArE4XLptg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB4508 Return-Path: maurice.ma@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Marcello, Since this patch mixes changes for both UefiPayloadPkg and MdePkg. I thin= k you might want to split this patch into two so that it can be reviewed by= the proper package maintainers. Thanks Maurice > -----Original Message----- > From: Marcello Sylvester Bauer > Sent: Thursday, July 16, 2020 4:48 > To: devel@edk2.groups.io > Cc: Patrick Rudolph ; Christian Walter > ; Ma, Maurice ; > Desimone, Nathaniel L ; Zeng, Star > ; Kinney, Michael D ; Ga= o, > Liming > Subject: [PATCH v2 2/2] MdePkg: Add support for variable size MMCONF spac= e >=20 > From: Patrick Rudolph >=20 > On embedded AMD platforms the MMCONF window is usually only 64MiB. >=20 > Add support for arbitrary sized MMCONF by introducing a new PCD. > The default size is still 256MiB, but will be overwritten by UefiPayloadP= kg with > the real MMCONF size. >=20 > Fixes crash on platforms not exposing 256 buses. >=20 > Tested on: > * AMD Stoney Ridge >=20 > Signed-off-by: Patrick Rudolph > Signed-off-by: Marcello Sylvester Bauer > Cc: Patrick Rudolph > Cc: Christian Walter > Cc: Maurice Ma > Cc: Nate DeSimone > Cc: Star Zeng > Cc: Michael D Kinney > Cc: Liming Gao > --- > MdePkg/MdePkg.dec | 4 + > UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc | 1 + > MdePkg/Library/BasePciExpressLib/BasePciExpressLib.inf | 6 +- > UefiPayloadPkg/BlSupportDxe/BlSupportDxe.inf | 1 + > MdePkg/Include/Library/PciExpressLib.h | 5 +- > MdePkg/Library/BasePciExpressLib/PciExpressLib.c | 118 > +++++++++++++++++++- > UefiPayloadPkg/BlSupportDxe/BlSupportDxe.c | 4 +- > 7 files changed, 131 insertions(+), 8 deletions(-) >=20 > diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec index > 73f6c2407357..02e736a01126 100644 > --- a/MdePkg/MdePkg.dec > +++ b/MdePkg/MdePkg.dec > @@ -2274,6 +2274,10 @@ [PcdsFixedAtBuild, PcdsPatchableInModule, > PcdsDynamic, PcdsDynamicEx] > # @Prompt PCI Express Base Address. > gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress|0xE0000000|UINT64| > 0x0000000a + ## This value is used to set the size of PCI express hierar= chy. The > default is 256 MB.+ # @Prompt PCI Express Base Size.+ > gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseSize|0x0FFFFFFF|UINT64|0x00 > 00000f+ ## Default current ISO 639-2 language: English & French. # > @Prompt Default Value of LangCodes Variable. > gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangCodes|"engfraengfra" > |VOID*|0x0000001cdiff --git a/UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc > b/UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc > index a768a8702c66..162cbf47a83f 100644 > --- a/UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc > +++ b/UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc > @@ -363,6 +363,7 @@ [PcdsDynamicDefault] > gEfiMdeModulePkgTokenSpaceGuid.PcdConOutRow|31 > gEfiMdeModulePkgTokenSpaceGuid.PcdConOutColumn|100 > gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress|0+ > gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseSize|0 > ############################################################# > ################### #diff --git > a/MdePkg/Library/BasePciExpressLib/BasePciExpressLib.inf > b/MdePkg/Library/BasePciExpressLib/BasePciExpressLib.inf > index a7edb74cde71..12734b022ac7 100644 > --- a/MdePkg/Library/BasePciExpressLib/BasePciExpressLib.inf > +++ b/MdePkg/Library/BasePciExpressLib/BasePciExpressLib.inf > @@ -1,7 +1,7 @@ > ## @file-# Instance of PCI Express Library using the 256 MB PCI Express= MMIO > window.+# Instance of PCI Express Library using the variable size PCI Ex= press > MMIO window. #-# PCI Express Library that uses the 256 MB PCI Express MM= IO > window to perform+# PCI Express Library that uses the variable size PCI = Express > MMIO window to perform # PCI Configuration cycles. Layers on top of an I= /O > Library instance. # # Copyright (c) 2007 - 2018, Intel Corporation. All = rights > reserved.
@@ -38,4 +38,4 @@ [LibraryClasses] > [Pcd] gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress ## > CONSUMES-+ gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseSize ## > CONSUMESdiff --git a/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.inf > b/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.inf > index 1371d5eb7952..cebc81135565 100644 > --- a/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.inf > +++ b/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.inf > @@ -54,6 +54,7 @@ [Pcd] > gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoHorizontalResolution > gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoVerticalResolution > gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress+ > gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseSize [Depex] TRUEdiff --git > a/MdePkg/Include/Library/PciExpressLib.h > b/MdePkg/Include/Library/PciExpressLib.h > index 826fdcf7db6c..d78193a0a352 100644 > --- a/MdePkg/Include/Library/PciExpressLib.h > +++ b/MdePkg/Include/Library/PciExpressLib.h > @@ -2,8 +2,9 @@ > Provides services to access PCI Configuration Space using the MMIO PCI > Express window. This library is identical to the PCI Library, except t= he access > method for performing PCI- configuration cycles must be through the 256 = MB > PCI Express MMIO window whose base address- is defined by > PcdPciExpressBaseAddress.+ configuration cycles must be through the PCI > Express MMIO window whose base address+ is defined by > PcdPciExpressBaseAddress and size defined by PcdPciExpressBaseSize.+ > Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
SP= DX- > License-Identifier: BSD-2-Clause-Patentdiff --git > a/MdePkg/Library/BasePciExpressLib/PciExpressLib.c > b/MdePkg/Library/BasePciExpressLib/PciExpressLib.c > index 99a166c3609b..4d099f2c575e 100644 > --- a/MdePkg/Library/BasePciExpressLib/PciExpressLib.c > +++ b/MdePkg/Library/BasePciExpressLib/PciExpressLib.c > @@ -22,7 +22,8 @@ > /** Assert the validity of a PCI address. A valid PCI address should = contain 1's- > only in the low 28 bits.+ only in the low 28 bits. PcdPciExpressBaseSize= limits the > size to the real+ number of PCI busses in this segment. @param A The= address > to validate. @@ -58,7 +59,6 @@ PciExpressRegisterForRuntimeAccess ( > IN UINTN Address ) {- ASSERT_INVALID_PCI_ADDRESS (Address); retu= rn > RETURN_UNSUPPORTED; } @@ -79,6 +79,24 @@ GetPciExpressBaseAddress ( > return (VOID*)(UINTN) PcdGet64 (PcdPciExpressBaseAddress); } +/**+ Ge= ts > the size of PCI Express.++ This internal functions retrieves PCI Express= Base Size > via a PCD entry+ PcdPciExpressBaseSize.++ @return The base address of P= CI > Express.++**/+STATIC+UINTN+PcdPciExpressBaseSize (+ VOID+ )+{+ return > (UINTN) PcdGet64 (PcdPciExpressBaseSize);+}+ /** Reads an 8-bit PCI > configuration register. @@ -101,6 +119,9 @@ PciExpressRead8 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT8) ~0;+ } return MmioRead8 > ((UINTN) GetPciExpressBaseAddress () + Address); } @@ -128,6 +149,9 @@ > PciExpressWrite8 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT8) ~0;+ } return MmioWrite8 > ((UINTN) GetPciExpressBaseAddress () + Address, Value); } @@ -159,6 +183,= 9 > @@ PciExpressOr8 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT8) ~0;+ } return MmioOr8 ((= UINTN) > GetPciExpressBaseAddress () + Address, OrData); } @@ -190,6 +217,9 @@ > PciExpressAnd8 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT8) ~0;+ } return MmioAnd8 (= (UINTN) > GetPciExpressBaseAddress () + Address, AndData); } @@ -224,6 +254,9 @@ > PciExpressAndThenOr8 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT8) ~0;+ } return MmioAndThe= nOr8 > ( (UINTN) GetPciExpressBaseAddress () + Address, An= dData,@@ - > 261,6 +294,9 @@ PciExpressBitFieldRead8 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT8) ~0;+ } return MmioBitFie= ldRead8 > ( (UINTN) GetPciExpressBaseAddress () + Address, St= artBit,@@ - > 302,6 +338,9 @@ PciExpressBitFieldWrite8 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT8) ~0;+ } return MmioBitFie= ldWrite8 > ( (UINTN) GetPciExpressBaseAddress () + Address, St= artBit,@@ - > 347,6 +386,9 @@ PciExpressBitFieldOr8 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT8) ~0;+ } return MmioBitFie= ldOr8 > ( (UINTN) GetPciExpressBaseAddress () + Address, St= artBit,@@ - > 392,6 +434,9 @@ PciExpressBitFieldAnd8 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT8) ~0;+ } return MmioBitFie= ldAnd8 > ( (UINTN) GetPciExpressBaseAddress () + Address, St= artBit,@@ - > 442,6 +487,9 @@ PciExpressBitFieldAndThenOr8 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT8) ~0;+ } return > MmioBitFieldAndThenOr8 ( (UINTN) GetPciExpressBaseAddress () + > Address, StartBit,@@ -474,6 +522,9 @@ PciExpressRead16 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT16) ~0;+ } return MmioRead1= 6 > ((UINTN) GetPciExpressBaseAddress () + Address); } @@ -502,6 +553,9 @@ > PciExpressWrite16 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT16) ~0;+ } return MmioWrite= 16 > ((UINTN) GetPciExpressBaseAddress () + Address, Value); } @@ -534,6 +588,= 9 > @@ PciExpressOr16 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT16) ~0;+ } return MmioOr16 > ((UINTN) GetPciExpressBaseAddress () + Address, OrData); } @@ -566,6 +623= ,9 > @@ PciExpressAnd16 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT16) ~0;+ } return MmioAnd16 > ((UINTN) GetPciExpressBaseAddress () + Address, AndData); } @@ -601,6 > +661,9 @@ PciExpressAndThenOr16 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT16) ~0;+ } return > MmioAndThenOr16 ( (UINTN) GetPciExpressBaseAddress () + Addres= s, > AndData,@@ -639,6 +702,9 @@ PciExpressBitFieldRead16 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT16) ~0;+ } return > MmioBitFieldRead16 ( (UINTN) GetPciExpressBaseAddress () + Add= ress, > StartBit,@@ -681,6 +747,9 @@ PciExpressBitFieldWrite16 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT16) ~0;+ } return > MmioBitFieldWrite16 ( (UINTN) GetPciExpressBaseAddress () + Ad= dress, > StartBit,@@ -727,6 +796,9 @@ PciExpressBitFieldOr16 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT16) ~0;+ } return MmioBitFi= eldOr16 > ( (UINTN) GetPciExpressBaseAddress () + Address, St= artBit,@@ - > 773,6 +845,9 @@ PciExpressBitFieldAnd16 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT16) ~0;+ } return > MmioBitFieldAnd16 ( (UINTN) GetPciExpressBaseAddress () + Addr= ess, > StartBit,@@ -824,6 +899,9 @@ PciExpressBitFieldAndThenOr16 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT16) ~0;+ } return > MmioBitFieldAndThenOr16 ( (UINTN) GetPciExpressBaseAddress () = + > Address, StartBit,@@ -856,6 +934,9 @@ PciExpressRead32 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT16) ~0;+ } return MmioRead3= 2 > ((UINTN) GetPciExpressBaseAddress () + Address); } @@ -884,6 +965,9 @@ > PciExpressWrite32 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT16) ~0;+ } return MmioWrite= 32 > ((UINTN) GetPciExpressBaseAddress () + Address, Value); } @@ -916,6 +1000= ,9 > @@ PciExpressOr32 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT16) ~0;+ } return MmioOr32 > ((UINTN) GetPciExpressBaseAddress () + Address, OrData); } @@ -948,6 > +1035,9 @@ PciExpressAnd32 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT16) ~0;+ } return MmioAnd32 > ((UINTN) GetPciExpressBaseAddress () + Address, AndData); } @@ -983,6 > +1073,9 @@ PciExpressAndThenOr32 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT16) ~0;+ } return > MmioAndThenOr32 ( (UINTN) GetPciExpressBaseAddress () + Addres= s, > AndData,@@ -1021,6 +1114,9 @@ PciExpressBitFieldRead32 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT16) ~0;+ } return > MmioBitFieldRead32 ( (UINTN) GetPciExpressBaseAddress () + Add= ress, > StartBit,@@ -1063,6 +1159,9 @@ PciExpressBitFieldWrite32 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT16) ~0;+ } return > MmioBitFieldWrite32 ( (UINTN) GetPciExpressBaseAddress () + Ad= dress, > StartBit,@@ -1109,6 +1208,9 @@ PciExpressBitFieldOr32 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT32) ~0;+ } return MmioBitFi= eldOr32 > ( (UINTN) GetPciExpressBaseAddress () + Address, St= artBit,@@ - > 1155,6 +1257,9 @@ PciExpressBitFieldAnd32 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT32) ~0;+ } return > MmioBitFieldAnd32 ( (UINTN) GetPciExpressBaseAddress () + Addr= ess, > StartBit,@@ -1206,6 +1311,9 @@ PciExpressBitFieldAndThenOr32 ( > ) { ASSERT_INVALID_PCI_ADDRESS (Address);+ if (Address >=3D > PcdPciExpressBaseSize()) {+ return (UINT32) ~0;+ } return > MmioBitFieldAndThenOr32 ( (UINTN) GetPciExpressBaseAddress () = + > Address, StartBit,@@ -1249,6 +1357,9 @@ PciExpressReadBuffer ( > UINTN ReturnValue; ASSERT_INVALID_PCI_ADDRESS (StartAddress);+ i= f > (StartAddress >=3D PcdPciExpressBaseSize()) {+ return (UINTN) ~0;+ } = ASSERT > (((StartAddress & 0xFFF) + Size) <=3D 0x1000); if (Size =3D=3D 0) {@@ = -1349,6 > +1460,9 @@ PciExpressWriteBuffer ( > UINTN ReturnValue; ASSERT_INVALID_PCI_A= DDRESS > (StartAddress);+ if (StartAddress >=3D PcdPciExpressBaseSize()) {+ re= turn > (UINTN) ~0;+ } ASSERT (((StartAddress & 0xFFF) + Size) <=3D 0x1000); = if (Size > =3D=3D 0) {diff --git a/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.c > b/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.c > index a3974dcc02f8..a746d0581ee3 100644 > --- a/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.c > +++ b/UefiPayloadPkg/BlSupportDxe/BlSupportDxe.c > @@ -155,13 +155,15 @@ BlDxeEntryPoint ( > } //- // Set PcdPciExpressBaseAddress by HOB info+ // Set > PcdPciExpressBaseAddress and PcdPciExpressBaseSize by HOB info // > GuidHob =3D GetFirstGuidHob (&gUefiAcpiBoardInfoGuid); if (GuidHob !=3D= NULL) > { AcpiBoardInfo =3D (ACPI_BOARD_INFO *)GET_GUID_HOB_DATA (GuidHob); > Status =3D PcdSet64S (PcdPciExpressBaseAddress, AcpiBoardInfo- > >PcieBaseAddress); ASSERT_EFI_ERROR (Status);+ Status =3D PcdSet64= S > (PcdPciExpressBaseSize, AcpiBoardInfo->PcieBaseSize);+ ASSERT_EFI_ERRO= R > (Status); } return EFI_SUCCESS;-- > 2.27.0