|
[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |