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; Tue, 30 Jul 2019 05:38:41 -0700 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D7BF430860A7; Tue, 30 Jul 2019 12:38:40 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (unknown [10.36.118.39]) by smtp.corp.redhat.com (Postfix) with ESMTP id DAB1C19C67; Tue, 30 Jul 2019 12:38:38 +0000 (UTC) Subject: Re: [edk2-devel] [PATCH v4 00/35] Specific platform to run OVMF in Xen PVH and HVM guests To: devel@edk2.groups.io, anthony.perard@citrix.com Cc: Julien Grall , xen-devel@lists.xenproject.org, Jordan Justen , Ard Biesheuvel , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= , Andrew Cooper References: <20190729153944.24239-1-anthony.perard@citrix.com> From: "Laszlo Ersek" Message-ID: <66a122e3-4e47-39e4-e87e-9b96820e14c6@redhat.com> Date: Tue, 30 Jul 2019 14:38:37 +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: <20190729153944.24239-1-anthony.perard@citrix.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.44]); Tue, 30 Jul 2019 12:38:41 +0000 (UTC) Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit On 07/29/19 17:39, Anthony PERARD wrote: > Patch series available in this git branch: > https://xenbits.xen.org/git-http/people/aperard/ovmf.git br.platform-xen-pvh-v4 > > Changes in v4: > - patch "OvmfPkg/XenPlatformPei: Reserve hvmloader's memory only when it has > run" was removed, and instead a different change is done in > "OvmfPkg/XenPlatformPei: Rework memory detection" > - other changes detailed in the notes of each patch I didn't understand why we'd still have 35 patches with one from v3 removed in v4 -- but I've found the new patch now: "OvmfPkg: Introduce PcdXenGrantFrames". Hopefully a v5 will not be necessary, but as a "precaution", you could run "git notes edit" on patch v4 32/35 at once, in order to state "introduced in v4", or something similar. 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-v4 > > 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 | 2 + > OvmfPkg/XenIoPvhDxe/XenIoPvhDxe.inf | 35 ++ > 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 | 53 ++ > 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 | 373 ++++++++++++ > 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, 4523 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 >