From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH] OvmfPkg/PlatformPei: allow platform to specify start of PCI MMIO region Date: Fri, 8 Nov 2013 13:25:34 -0500 Message-ID: <20131108182534.GA20234@phenom.dumpdata.com> References: <1383932979-10329-1-git-send-email-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: <1383932979-10329-1-git-send-email-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Wei Liu Cc: edk2-devel@lists.sourceforge.net, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org On Fri, Nov 08, 2013 at 05:49:39PM +0000, Wei Liu wrote: > The original code calculates the start of PCI MMIO region automatically, > which is not desirable when running under Xen, as Xen is responsible of > setting up respective regions. What if Xen (hvmloader) also moves the MMIO to a different place and size? (Basically make e820_host option work with HVM)? > > This patch makes it possible to specify start of PCI MMIO so OVMF can > honor the region set up by Xen. > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Wei Liu > --- > OvmfPkg/OvmfPkg.dec | 3 +++ > OvmfPkg/PlatformPei/Platform.c | 13 +++++++++++-- > OvmfPkg/PlatformPei/PlatformPei.inf | 1 + > 3 files changed, 15 insertions(+), 2 deletions(-) > > diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec > index d874f0c..4a041d1 100644 > --- a/OvmfPkg/OvmfPkg.dec > +++ b/OvmfPkg/OvmfPkg.dec > @@ -68,6 +68,9 @@ > gUefiOvmfPkgTokenSpaceGuid.PcdVirtioScsiMaxTargetLimit|31|UINT16|6 > gUefiOvmfPkgTokenSpaceGuid.PcdVirtioScsiMaxLunLimit|7|UINT32|7 > > + ## Allow platform to specify where to start PCI MMIO region > + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPciMmioBaseAddress|0x0|UINT32|8 > + > [PcdsDynamic, PcdsDynamicEx] > gUefiOvmfPkgTokenSpaceGuid.PcdEmuVariableEvent|0|UINT64|2 > > diff --git a/OvmfPkg/PlatformPei/Platform.c b/OvmfPkg/PlatformPei/Platform.c > index fb56e99..74001cc 100644 > --- a/OvmfPkg/PlatformPei/Platform.c > +++ b/OvmfPkg/PlatformPei/Platform.c > @@ -197,7 +197,7 @@ MemMapInitialization ( > // > // address purpose size > // ------------ -------- ------------------------- > - // max(top, 2g) PCI MMIO 0xFC000000 - max(top, 2g) > + // MMIO_START PCI MMIO 0xFC000000 - MMIO_START > // 0xFC000000 gap 44 MB > // 0xFEC00000 IO-APIC 4 KB > // 0xFEC01000 gap 1020 KB > @@ -205,7 +205,16 @@ MemMapInitialization ( > // 0xFED00400 gap 1023 KB > // 0xFEE00000 LAPIC 1 MB > // > - AddIoMemoryRangeHob (TopOfMemory < BASE_2GB ? BASE_2GB : TopOfMemory, 0xFC000000); > + // if PcdOvmfPciMmioBaseAddress is set > + // MMIO_START = PcdOvmfPciMmioBaseAddress > + // else > + // MMIO_START = max(top, 2g) > + > + if (PcdGet32(PcdOvmfPciMmioBaseAddress) > 0) > + AddIoMemoryRangeHob (PcdGet32(PcdOvmfPciMmioBaseAddress), 0xFC000000); > + else > + AddIoMemoryRangeHob (TopOfMemory < BASE_2GB ? BASE_2GB : TopOfMemory, 0xFC000000); > + > AddIoMemoryBaseSizeHob (0xFEC00000, SIZE_4KB); > AddIoMemoryBaseSizeHob (0xFED00000, SIZE_1KB); > AddIoMemoryBaseSizeHob (PcdGet32(PcdCpuLocalApicBaseAddress), SIZE_1MB); > diff --git a/OvmfPkg/PlatformPei/PlatformPei.inf b/OvmfPkg/PlatformPei/PlatformPei.inf > index 3d5cbbb..64d9323 100644 > --- a/OvmfPkg/PlatformPei/PlatformPei.inf > +++ b/OvmfPkg/PlatformPei/PlatformPei.inf > @@ -61,6 +61,7 @@ > gUefiOvmfPkgTokenSpaceGuid.PcdOvmfMemFvBase > gUefiOvmfPkgTokenSpaceGuid.PcdOvmfMemFvSize > gUefiOvmfPkgTokenSpaceGuid.PcdAcpiPmBaseAddress > + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPciMmioBaseAddress > gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize > gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize > gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize > -- > 1.7.10.4 > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel