[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [edk2-devel] [PATCH v2 18/31] OvmfPkg/XenPlatformPei: Setup HyperPages earlier



On 04/09/19 13:08, Anthony PERARD wrote:
> We are going to need to make an hypercall in order to retreive the E820
> table from the hypervisor before been able to setup the memory.
> 
> Calling XenConnect earlier will allow to setup the XenHypercallLib
> earlier to allow to make hypercalls.
> 
> While here, add some comments in XenConnect().
> 
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx>
> ---
>  OvmfPkg/XenPlatformPei/Platform.h |  5 +++++
>  OvmfPkg/XenPlatformPei/Platform.c |  2 ++
>  OvmfPkg/XenPlatformPei/Xen.c      | 23 ++++++++++----------
>  3 files changed, 19 insertions(+), 11 deletions(-)
> 
> diff --git a/OvmfPkg/XenPlatformPei/Platform.h 
> b/OvmfPkg/XenPlatformPei/Platform.h
> index 5565d47e34..a524c23a43 100644
> --- a/OvmfPkg/XenPlatformPei/Platform.h
> +++ b/OvmfPkg/XenPlatformPei/Platform.h
> @@ -85,6 +85,11 @@ InstallClearCacheCallback (
>    VOID
>    );
>  
> +EFI_STATUS
> +XenConnect (
> +  VOID
> +  );
> +
>  EFI_STATUS
>  InitializeXen (
>    VOID
> diff --git a/OvmfPkg/XenPlatformPei/Platform.c 
> b/OvmfPkg/XenPlatformPei/Platform.c
> index 2d567a4760..5e6d553ad5 100644
> --- a/OvmfPkg/XenPlatformPei/Platform.c
> +++ b/OvmfPkg/XenPlatformPei/Platform.c
> @@ -421,6 +421,8 @@ InitializeXenPlatform (
>      CpuDeadLoop ();
>    }
>  
> +  XenConnect ();
> +
>    BootModeInitialization ();
>    AddressWidthInitialization ();
>  
> diff --git a/OvmfPkg/XenPlatformPei/Xen.c b/OvmfPkg/XenPlatformPei/Xen.c
> index 22c7a22c88..b36eff524d 100644
> --- a/OvmfPkg/XenPlatformPei/Xen.c
> +++ b/OvmfPkg/XenPlatformPei/Xen.c
> @@ -78,14 +78,11 @@ XenGetE820Map (
>  /**
>    Connects to the Hypervisor.
>   
> -  @param  XenLeaf     CPUID index used to connect.
> -
>    @return EFI_STATUS
>  
>  **/
>  EFI_STATUS
>  XenConnect (
> -  UINT32 XenLeaf
>    )
>  {
>    UINT32 Index;
> @@ -96,7 +93,13 @@ XenConnect (
>    CHAR8 Sig[sizeof (Info->Signature) + 1];
>    UINT32 *PVHResetVectorData;
>  
> -  AsmCpuid (XenLeaf + 2, &TransferPages, &TransferReg, NULL, NULL);
> +  ASSERT (mXenLeaf != 0);
> +
> +  //
> +  // Prepare HyperPages to be able to make hypercalls
> +  //
> +
> +  AsmCpuid (mXenLeaf + 2, &TransferPages, &TransferReg, NULL, NULL);
>    mXenInfo.HyperPages = AllocatePages (TransferPages);
>    if (!mXenInfo.HyperPages) {
>      return EFI_OUT_OF_RESOURCES;
> @@ -108,7 +111,11 @@ XenConnect (
>                     (Index << EFI_PAGE_SHIFT) + Index);
>    }
>  
> -  AsmCpuid (XenLeaf + 1, &XenVersion, NULL, NULL, NULL);
> +  //
> +  // Find out the Xen version
> +  //
> +
> +  AsmCpuid (mXenLeaf + 1, &XenVersion, NULL, NULL, NULL);
>    DEBUG ((EFI_D_ERROR, "Detected Xen version %d.%d\n",
>            XenVersion >> 16, XenVersion & 0xFFFF));
>    mXenInfo.VersionMajor = (UINT16)(XenVersion >> 16);
> @@ -265,12 +272,6 @@ InitializeXen (
>  {
>    RETURN_STATUS PcdStatus;
>  
> -  if (mXenLeaf == 0) {
> -    return EFI_NOT_FOUND;
> -  }
> -
> -  XenConnect (mXenLeaf);
> -
>    //
>    // Reserve away HVMLOADER reserved memory [0xFC000000,0xFD000000).
>    // This needs to match HVMLOADER RESERVED_MEMBASE/RESERVED_MEMSIZE.
> 

Acked-by: Laszlo Ersek <lersek@xxxxxxxxxx>

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

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