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; Thu, 15 Aug 2019 04:04:02 -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 4829D307D90D; Thu, 15 Aug 2019 11:04:02 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-117-57.ams2.redhat.com [10.36.117.57]) by smtp.corp.redhat.com (Postfix) with ESMTP id 996FB600CC; Thu, 15 Aug 2019 11:04:00 +0000 (UTC) Subject: Re: [edk2-devel] [PATCH v5 00/35] Specific platform to run OVMF in Xen PVH and HVM guests To: devel@edk2.groups.io, anthony.perard@citrix.com Cc: Jordan Justen , Julien Grall , xen-devel@lists.xenproject.org, Ard Biesheuvel References: <20190813113119.14804-1-anthony.perard@citrix.com> From: "Laszlo Ersek" Message-ID: <741727b8-7f89-9e81-bc99-c28206810c5f@redhat.com> Date: Thu, 15 Aug 2019 13:03:59 +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: <20190813113119.14804-1-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.48]); Thu, 15 Aug 2019 11:04:02 +0000 (UTC) Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit On 08/13/19 13:30, Anthony PERARD wrote: > Patch series available in this git branch: > https://xenbits.xen.org/git-http/people/aperard/ovmf.git br.platform-xen-pvh-v5 > > Changes in v5: > - patch 23 got a rework of the lapic range skipping > - small fixups in patch 20, 22, 23, 31, 32, 33. > see notes for detail. This series is now fully covered with maintainer R-b's and A-b's. I've also done some regression-tests, after applying the set in a topic branch on top of commit caa7d3a896f6 ("BaseTools/Scripts: Add GetUtcDateTime script.", 2019-08-15). Including build tests and my usual boot & S3 tests. Building for DEBUG (with GCC48) requires the independent fix [edk2-devel] [PATCH 1/1] MdeModulePkg/DxeIplPeim: Initialize pointer PageMapLevel5Entry which was posted at http://mid.mail-archive.com/20190814073741.16080-1-shenglei.zhang@intel.com https://edk2.groups.io/g/devel/message/45591 (again, that issue is independent of this series). With that independent fix, RELEASE builds fine too. Given that this v5 feature series has now been fully reviewed before entering the Soft Feature Freeze for edk2-stable201908 -- which will commence on 2019-08-16 at 00:00:00 UTC-8) --, the set is eligible for pushing during the Soft Feature Freeze: https://github.com/tianocore/tianocore.github.io/wiki/EDK-II-Release-Planning https://github.com/tianocore/tianocore.github.io/wiki/SoftFeatureFreeze Therefore I'll push v5 no later than 2019-Aug-21, unless a NACK arrives before that date, from xen-devel or elsewhere. Thanks Laszlo > Hi, > > I've started to create a Xen specific platform, in OvmfPkg/XenOvmf.dsc > with the goal to make it work on both Xen HVM and Xen PVH. > > The first few patches only create the platform and duplicate some code from > OvmfPkg and the later patches makes OVMF boot in a Xen PVH guest and can boot > a Linux guest. > > After this patch series, I'd like to wait a bit before removing Xen support > from the OvmfPkg*.dsc, to allow time to switch to the new Xen only platform, > maybe 1 year. > > To build and boot: > > To build, simply run OvmfPkg/build.sh -p OvmfPkg/OvmfXen.dsc > Then use OVMF.fd as a kernel of a pvh guest config file (with xl/libxl). > > Patch series available in this git branch: > https://xenbits.xen.org/git-http/people/aperard/ovmf.git br.platform-xen-pvh-v5 > > Anthony PERARD (35): > OvmfPkg/ResetSystemLib: Add missing dependency on PciLib > OvmfPkg: Create platform OvmfXen > OvmfPkg: Introduce XenResetVector > OvmfPkg: Introduce XenPlatformPei > OvmfPkg/OvmfXen: Creating an ELF header > OvmfPkg/XenResetVector: Add new entry point for Xen PVH > OvmfPkg/XenResetVector: Saving start of day pointer for PVH guests > OvmfPkg/XenResetVector: Allow jumpstart from either hvmloader or PVH > OvmfPkg/OvmfXen: use a TimerLib instance that depends only on the CPU > OvmfPkg/XenPlatformPei: Detect OVMF_INFO from hvmloader > OvmfPkg/XenPlatformPei: Use mXenHvmloaderInfo to get E820 > OvmfPkg/XenPlatformPei: Grab RSDP from PVH guest start of day struct > OvmfPkg/Library/XenPlatformLib: New library > OvmfPkg/AcpiPlatformDxe: Use XenPlatformLib > OvmfPkg/AcpiPlatformDxe: Use Xen PVH RSDP if it exist > OvmfPkg/XenHypercallLib: Enable it in PEIM > OvmfPkg/XenPlatformPei: Reinit XenHypercallLib > OvmfPkg/XenPlatformPei: Introduce XenHvmloaderDetected > OvmfPkg/XenPlatformPei: Setup HyperPages earlier > OvmfPkg/XenPlatformPei: Introduce XenPvhDetected > OvmfPkg: Import XENMEM_memory_map hypercall to Xen/memory.h > OvmfPkg/XenPlatformPei: no hvmloader: get the E820 table via hypercall > OvmfPkg/XenPlatformPei: Rework memory detection > OvmfPkg/XenPlatformPei: Reserve VGA memory region, to boot Linux > OvmfPkg/XenPlatformPei: Ignore missing PCI Host Bridge on Xen PVH > OvmfPkg/XenPlatformLib: Cache result for XenDetected > OvmfPkg/PlatformBootManagerLib: Use XenDetected from XenPlatformLib > OvmfPkg/PlatformBootManagerLib: Handle the absence of PCI bus on Xen > PVH > OvmfPkg/OvmfXen: Override PcdFSBClock to Xen vLAPIC timer frequency > OvmfPkg/OvmfXen: Introduce XenTimerDxe > OvmfPkg/PlatformBootManagerLib: Use a Xen console for ConOut/ConIn > OvmfPkg: Introduce PcdXenGrantFrames > OvmfPkg: Introduce XenIoPvhDxe to initialize Grant Tables > OvmfPkg: Move XenRealTimeClockLib from ArmVirtPkg > OvmfPkg/OvmfXen: use RealTimeClockRuntimeDxe from EmbeddedPkg > > OvmfPkg/OvmfPkg.dec | 10 + > ArmVirtPkg/ArmVirtXen.dsc | 2 +- > OvmfPkg/OvmfPkgIa32.dsc | 1 + > OvmfPkg/OvmfPkgIa32X64.dsc | 1 + > OvmfPkg/OvmfPkgX64.dsc | 1 + > OvmfPkg/{OvmfPkgX64.dsc => OvmfXen.dsc} | 238 +------- > OvmfPkg/OvmfXen.fdf | 539 ++++++++++++++++++ > OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf | 3 +- > .../PlatformBootManagerLib.inf | 6 +- > .../Library/ResetSystemLib/ResetSystemLib.inf | 1 + > .../XenHypercallLib/XenHypercallLib.inf | 4 +- > .../Library/XenPlatformLib/XenPlatformLib.inf | 33 ++ > .../XenRealTimeClockLib.inf | 0 > OvmfPkg/XenBusDxe/XenBusDxe.inf | 3 + > OvmfPkg/XenIoPvhDxe/XenIoPvhDxe.inf | 36 ++ > OvmfPkg/XenPlatformPei/XenPlatformPei.inf | 100 ++++ > OvmfPkg/XenResetVector/XenResetVector.inf | 41 ++ > OvmfPkg/XenTimerDxe/XenTimerDxe.inf | 42 ++ > OvmfPkg/AcpiPlatformDxe/AcpiPlatform.h | 6 +- > OvmfPkg/Include/Guid/XenInfo.h | 8 +- > .../Xen/arch-x86/hvm/start_info.h | 143 +++++ > OvmfPkg/Include/IndustryStandard/Xen/memory.h | 23 + > OvmfPkg/Include/Library/XenHypercallLib.h | 12 + > OvmfPkg/Include/Library/XenPlatformLib.h | 53 ++ > .../PlatformBootManagerLib/BdsPlatform.h | 1 + > OvmfPkg/XenBusDxe/XenBusDxe.h | 1 + > OvmfPkg/XenPlatformPei/Cmos.h | 52 ++ > OvmfPkg/XenPlatformPei/Platform.h | 136 +++++ > OvmfPkg/XenPlatformPei/Xen.h | 39 ++ > OvmfPkg/XenTimerDxe/XenTimerDxe.h | 177 ++++++ > OvmfPkg/AcpiPlatformDxe/Xen.c | 41 +- > .../PlatformBootManagerLib/BdsPlatform.c | 43 +- > .../PlatformBootManagerLib/PlatformData.c | 49 +- > .../Library/ResetSystemLib/ResetSystemLib.c | 3 +- > .../Library/XenHypercallLib/X86XenHypercall.c | 8 +- > .../Library/XenHypercallLib/XenHypercall.c | 16 + > .../Library/XenPlatformLib/XenPlatformLib.c | 81 +++ > .../XenRealTimeClockLib/XenRealTimeClockLib.c | 0 > OvmfPkg/OvmfXenElfHeaderGenerator.c | 140 +++++ > OvmfPkg/PlatformPei/Xen.c | 3 - > OvmfPkg/XenBusDxe/GrantTable.c | 3 +- > OvmfPkg/XenIoPvhDxe/XenIoPvhDxe.c | 54 ++ > OvmfPkg/XenPlatformPei/AmdSev.c | 64 +++ > OvmfPkg/XenPlatformPei/ClearCache.c | 112 ++++ > OvmfPkg/XenPlatformPei/Cmos.c | 60 ++ > OvmfPkg/XenPlatformPei/Fv.c | 76 +++ > OvmfPkg/XenPlatformPei/MemDetect.c | 490 ++++++++++++++++ > OvmfPkg/XenPlatformPei/Platform.c | 463 +++++++++++++++ > OvmfPkg/XenPlatformPei/Xen.c | 388 +++++++++++++ > OvmfPkg/XenTimerDxe/XenTimerDxe.c | 355 ++++++++++++ > Maintainers.txt | 10 +- > .../XenResetVector/Ia16/Real16ToFlat32.asm | 137 +++++ > .../XenResetVector/Ia16/ResetVectorVtf0.asm | 79 +++ > .../XenResetVector/Ia32/Flat32ToFlat64.asm | 68 +++ > OvmfPkg/XenResetVector/Ia32/PageTables64.asm | 149 +++++ > .../XenResetVector/Ia32/SearchForBfvBase.asm | 87 +++ > OvmfPkg/XenResetVector/Ia32/XenPVHMain.asm | 84 +++ > OvmfPkg/XenResetVector/XenResetVector.nasmb | 71 +++ > 58 files changed, 4541 insertions(+), 305 deletions(-) > copy OvmfPkg/{OvmfPkgX64.dsc => OvmfXen.dsc} (76%) > create mode 100644 OvmfPkg/OvmfXen.fdf > create mode 100644 OvmfPkg/Library/XenPlatformLib/XenPlatformLib.inf > rename {ArmVirtPkg => OvmfPkg}/Library/XenRealTimeClockLib/XenRealTimeClockLib.inf (100%) > create mode 100644 OvmfPkg/XenIoPvhDxe/XenIoPvhDxe.inf > create mode 100644 OvmfPkg/XenPlatformPei/XenPlatformPei.inf > create mode 100644 OvmfPkg/XenResetVector/XenResetVector.inf > create mode 100644 OvmfPkg/XenTimerDxe/XenTimerDxe.inf > create mode 100644 OvmfPkg/Include/IndustryStandard/Xen/arch-x86/hvm/start_info.h > create mode 100644 OvmfPkg/Include/Library/XenPlatformLib.h > create mode 100644 OvmfPkg/XenPlatformPei/Cmos.h > create mode 100644 OvmfPkg/XenPlatformPei/Platform.h > create mode 100644 OvmfPkg/XenPlatformPei/Xen.h > create mode 100644 OvmfPkg/XenTimerDxe/XenTimerDxe.h > create mode 100644 OvmfPkg/Library/XenPlatformLib/XenPlatformLib.c > rename {ArmVirtPkg => OvmfPkg}/Library/XenRealTimeClockLib/XenRealTimeClockLib.c (100%) > create mode 100644 OvmfPkg/OvmfXenElfHeaderGenerator.c > create mode 100644 OvmfPkg/XenIoPvhDxe/XenIoPvhDxe.c > create mode 100644 OvmfPkg/XenPlatformPei/AmdSev.c > create mode 100644 OvmfPkg/XenPlatformPei/ClearCache.c > create mode 100644 OvmfPkg/XenPlatformPei/Cmos.c > create mode 100644 OvmfPkg/XenPlatformPei/Fv.c > create mode 100644 OvmfPkg/XenPlatformPei/MemDetect.c > create mode 100644 OvmfPkg/XenPlatformPei/Platform.c > create mode 100644 OvmfPkg/XenPlatformPei/Xen.c > create mode 100644 OvmfPkg/XenTimerDxe/XenTimerDxe.c > create mode 100644 OvmfPkg/XenResetVector/Ia16/Real16ToFlat32.asm > create mode 100644 OvmfPkg/XenResetVector/Ia16/ResetVectorVtf0.asm > create mode 100644 OvmfPkg/XenResetVector/Ia32/Flat32ToFlat64.asm > create mode 100644 OvmfPkg/XenResetVector/Ia32/PageTables64.asm > create mode 100644 OvmfPkg/XenResetVector/Ia32/SearchForBfvBase.asm > create mode 100644 OvmfPkg/XenResetVector/Ia32/XenPVHMain.asm > create mode 100644 OvmfPkg/XenResetVector/XenResetVector.nasmb >