[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] OvmfPkg/PlatformPei: allow platform to specify start of PCI MMIO region
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 <wei.liu2@xxxxxxxxxx> > --- > 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@xxxxxxxxxxxxx > http://lists.xen.org/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |