[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 00/31] Specific platform to run OVMF in Xen PVH and HVM guests
Patch series available in this git branch: https://xenbits.xen.org/git-http/people/aperard/ovmf.git br.platform-xen-pvh-v2 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. Question: Should we start moving these to a different *Pkg? Like it's done for ArmPkg and ArmVirtPkg? Maybe XenPkg. To build and boot: To build, simply run OvmfPkg/build.sh -p OvmfPkg/XenOvmf.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-v2 Anthony PERARD (31): OvmfPkg/ResetSystemLib: Add missing dependency on PciLib OvmfPkg: Create platform XenOvmf OvmfPkg: Introduce XenResetVector OvmfPkg: Introduce XenPlatformPei OvmfPkg/XenOvmf: 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 to jumpstart from either hvmloader or PVH OvmfPkg/XenOvmf: 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 PVH RSDP if exist OvmfPkg/XenHypercallLib: Enable it in PEIM OvmfPkg/XenPlatformPei: Introduce XenHvmloaderDetected OvmfPkg/XenPlatformPei: Reserve hvmloader's memory only when it as runned OvmfPkg/XenPlatformPei: Setup HyperPages earlier OvmfPkg/XenPlatformPei: Introduce XenPvhDetected OvmfPkg: Import XENMEM_memory_map hypercall to Xen/memory.h OvmfPkg/XenPlatformPei: Get 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/PlatformBootManagerLib: Handle the absence of PCI bus on Xen PVH OvmfPkg/XenOvmf: Override PcdFSBClock to Xen vLAPIC timer frequency OvmfPkg/XenOvmf: Introduce XenTimerDxe OvmfPkg/PlatformBootManagerLib: Use a Xen console for ConOut/ConIn OvmfPkg: Introduce XenIoPvhDxe to initialize Grant Tables OvmfPkg: Move XenRealTimeClockLib from ArmVirtPkg OvmfPkg/XenOvmf: use RealTimeClockRuntimeDxe from EmbeddedPkg OvmfPkg/OvmfPkg.dec | 4 + ArmVirtPkg/ArmVirtXen.dsc | 2 +- OvmfPkg/OvmfPkgIa32.dsc | 1 + OvmfPkg/OvmfPkgIa32X64.dsc | 1 + OvmfPkg/OvmfPkgX64.dsc | 1 + OvmfPkg/{OvmfPkgX64.dsc => XenOvmf.dsc} | 236 ++------ OvmfPkg/XenOvmf.fdf | 561 ++++++++++++++++++++ OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf | 2 +- OvmfPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf | 4 + OvmfPkg/Library/ResetSystemLib/ResetSystemLib.inf | 1 + OvmfPkg/Library/XenHypercallLib/XenHypercallLib.inf | 2 +- ArmVirtPkg/Library/XenRealTimeClockLib/XenRealTimeClockLib.inf => OvmfPkg/Library/XenPlatformLib/XenPlatformLib.inf | 30 +- {ArmVirtPkg => OvmfPkg}/Library/XenRealTimeClockLib/XenRealTimeClockLib.inf | 0 OvmfPkg/XenIoPvhDxe/XenIoPvhDxe.inf | 35 ++ OvmfPkg/XenPlatformPei/XenPlatformPei.inf | 107 ++++ OvmfPkg/XenResetVector/XenResetVector.inf | 46 ++ OvmfPkg/XenTimerDxe/XenTimerDxe.inf | 49 ++ OvmfPkg/AcpiPlatformDxe/AcpiPlatform.h | 6 +- OvmfPkg/Include/Guid/XenInfo.h | 8 +- OvmfPkg/Include/IndustryStandard/Xen/arch-x86/hvm/start_info.h | 159 ++++++ OvmfPkg/Include/IndustryStandard/Xen/memory.h | 23 + OvmfPkg/Include/Library/XenHypercallLib.h | 12 + OvmfPkg/Include/Library/XenPlatformLib.h | 59 ++ OvmfPkg/Include/OvmfPlatforms.h | 6 + OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.h | 1 + OvmfPkg/XenPlatformPei/Cmos.h | 58 ++ OvmfPkg/XenPlatformPei/Platform.h | 135 +++++ OvmfPkg/{PlatformPei => XenPlatformPei}/Xen.h | 0 OvmfPkg/XenTimerDxe/XenTimerDxe.h | 183 +++++++ OvmfPkg/AcpiPlatformDxe/Xen.c | 41 +- OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c | 15 +- OvmfPkg/Library/PlatformBootManagerLib/PlatformData.c | 59 ++ OvmfPkg/Library/ResetSystemLib/ResetSystemLib.c | 3 +- OvmfPkg/Library/XenHypercallLib/X86XenHypercall.c | 11 + OvmfPkg/Library/XenPlatformLib/XenPlatformLib.c | 75 +++ {ArmVirtPkg => OvmfPkg}/Library/XenRealTimeClockLib/XenRealTimeClockLib.c | 0 OvmfPkg/PlatformPei/Xen.c | 3 - OvmfPkg/XenIoPvhDxe/XenIoPvhDxe.c | 38 ++ OvmfPkg/XenPlatformPei/AmdSev.c | 70 +++ OvmfPkg/XenPlatformPei/ClearCache.c | 118 ++++ OvmfPkg/XenPlatformPei/Cmos.c | 66 +++ OvmfPkg/XenPlatformPei/Fv.c | 82 +++ OvmfPkg/XenPlatformPei/MemDetect.c | 498 +++++++++++++++++ OvmfPkg/XenPlatformPei/Platform.c | 458 ++++++++++++++++ OvmfPkg/XenPlatformPei/Xen.c | 381 +++++++++++++ OvmfPkg/XenTimerDxe/XenTimerDxe.c | 361 +++++++++++++ generate_elf_header.c | 78 +++ OvmfPkg/XenResetVector/Ia16/Real16ToFlat32.asm | 144 +++++ OvmfPkg/XenResetVector/Ia16/ResetVectorVtf0.asm | 87 +++ OvmfPkg/XenResetVector/Ia32/Flat32ToFlat64.asm | 66 +++ OvmfPkg/XenResetVector/Ia32/PageTables64.asm | 156 ++++++ OvmfPkg/XenResetVector/Ia32/SearchForBfvBase.asm | 93 ++++ OvmfPkg/XenResetVector/Ia32/XenPVHMain.asm | 75 +++ OvmfPkg/XenResetVector/XenResetVector.nasmb | 78 +++ 54 files changed, 4526 insertions(+), 262 deletions(-) copy OvmfPkg/{OvmfPkgX64.dsc => XenOvmf.dsc} (78%) create mode 100644 OvmfPkg/XenOvmf.fdf copy ArmVirtPkg/Library/XenRealTimeClockLib/XenRealTimeClockLib.inf => OvmfPkg/Library/XenPlatformLib/XenPlatformLib.inf (50%) 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 copy OvmfPkg/{PlatformPei => XenPlatformPei}/Xen.h (100%) 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/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 generate_elf_header.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 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |