[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.