Message ID | 20190729153944.24239-1-anthony.perard@citrix.com (mailing list archive) |
---|---|
Headers | show |
Series | Specific platform to run OVMF in Xen PVH and HVM guests | expand |
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 >
Hi Anthony, 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've gone through the v4 series. If reviewers on the xen-devel list think v4 is okay to merge, I can do that (with the small fixups I offered here and there). I suggest that we wait a few days -- please ping me when you believe the review on xen-devel has concluded. If you prefer to post v5, that works as well of course. Thanks, Laszlo
On Tue, Jul 30, 2019 at 03:10:13PM +0200, Laszlo Ersek wrote: > Hi Anthony, > > 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've gone through the v4 series. If reviewers on the xen-devel list > think v4 is okay to merge, I can do that (with the small fixups I > offered here and there). I suggest that we wait a few days -- please > ping me when you believe the review on xen-devel has concluded. > > If you prefer to post v5, that works as well of course. There's a few more small fixup proposed by Roger, should I post a v5 for them? (and maybe only CC you and the lists.) Otherwise, I've pushed the branch br.platform-xen-pvh-v4.1 to my repo [1] where I believe I've collected all the small fixups. [1] https://xenbits.xen.org/git-http/people/aperard/ovmf.git br.platform-xen-pvh-v4.1 Thanks,
On 08/12/19 17:12, Anthony PERARD wrote: > On Tue, Jul 30, 2019 at 03:10:13PM +0200, Laszlo Ersek wrote: >> Hi Anthony, >> >> 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've gone through the v4 series. If reviewers on the xen-devel list >> think v4 is okay to merge, I can do that (with the small fixups I >> offered here and there). I suggest that we wait a few days -- please >> ping me when you believe the review on xen-devel has concluded. >> >> If you prefer to post v5, that works as well of course. > > There's a few more small fixup proposed by Roger, should I post a v5 for > them? (and maybe only CC you and the lists.) > > Otherwise, I've pushed the branch br.platform-xen-pvh-v4.1 to my repo [1] > where I believe I've collected all the small fixups. > [1] https://xenbits.xen.org/git-http/people/aperard/ovmf.git br.platform-xen-pvh-v4.1 Please post v5. Thanks! Laszlo