From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: redhat.com, ip: 209.132.183.28, mailfrom: lersek@redhat.com) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by groups.io with SMTP; Fri, 12 Apr 2019 02:17:33 -0700 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D26723097041; Fri, 12 Apr 2019 09:17:32 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-120-65.rdu2.redhat.com [10.10.120.65]) by smtp.corp.redhat.com (Postfix) with ESMTP id 43FC5600D4; Fri, 12 Apr 2019 09:17:31 +0000 (UTC) Subject: Re: [edk2-devel] [PATCH v2 18/31] OvmfPkg/XenPlatformPei: Setup HyperPages earlier To: devel@edk2.groups.io, anthony.perard@citrix.com Cc: Jordan Justen , Ard Biesheuvel , Julien Grall , xen-devel@lists.xenproject.org References: <20190409110844.14746-1-anthony.perard@citrix.com> <20190409110844.14746-19-anthony.perard@citrix.com> From: "Laszlo Ersek" Message-ID: <7bf30793-3740-1720-5bf6-7dc393933f70@redhat.com> Date: Fri, 12 Apr 2019 11:17:30 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <20190409110844.14746-19-anthony.perard@citrix.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.43]); Fri, 12 Apr 2019 09:17:33 +0000 (UTC) Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit 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 > --- > 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