[edk2-devel] [PATCH v4 00/35] Specific platform to run OVMF in Xen PVH and HVM guests
Anthony PERARD
anthony.perard at citrix.com
Mon Jul 29 15:39:09 UTC 2019
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
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
--
Anthony PERARD
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#44529): https://edk2.groups.io/g/devel/message/44529
Mute This Topic: https://groups.io/mt/32643834/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list