From: "Anthony PERARD" <anthony.perard@citrix.com>
To: <devel@edk2.groups.io>
Cc: Jordan Justen <jordan.l.justen@intel.com>,
Laszlo Ersek <lersek@redhat.com>,
Ard Biesheuvel <ard.biesheuvel@linaro.org>,
Julien Grall <julien.grall@arm.com>,
<xen-devel@lists.xenproject.org>,
Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v2 00/31] Specific platform to run OVMF in Xen PVH and HVM guests
Date: Tue, 9 Apr 2019 12:08:13 +0100 [thread overview]
Message-ID: <20190409110844.14746-1-anthony.perard@citrix.com> (raw)
Resent, to send to the new edk2 ML.
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 created a Xen specific platform, in OvmfPkg/XenOvmf.dsc
with the goal to make it work on both Xen HVM and Xen PVH.
https://bugzilla.tianocore.org/show_bug.cgi?id=1689
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/XenOvmf.dsc
Then use OVMF.fd as a kernel of a pvh guest config file (with xl/libxl).
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
next reply other threads:[~2019-04-09 11:09 UTC|newest]
Thread overview: 87+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-09 11:08 Anthony PERARD [this message]
2019-04-09 11:08 ` [PATCH v2 01/31] OvmfPkg/ResetSystemLib: Add missing dependency on PciLib Anthony PERARD
2019-04-10 8:48 ` [edk2-devel] " Laszlo Ersek
2019-04-10 9:16 ` Jordan Justen
2019-04-09 11:08 ` [PATCH v2 02/31] OvmfPkg: Create platform XenOvmf Anthony PERARD
2019-04-10 9:32 ` [edk2-devel] " Laszlo Ersek
2019-04-15 10:53 ` Anthony PERARD
2019-04-10 9:48 ` Jordan Justen
2019-04-10 14:27 ` Laszlo Ersek
2019-04-10 16:27 ` Ard Biesheuvel
2019-04-10 18:37 ` Jordan Justen
2019-04-11 7:34 ` Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 03/31] OvmfPkg: Introduce XenResetVector Anthony PERARD
2019-04-10 9:46 ` [edk2-devel] " Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 04/31] OvmfPkg: Introduce XenPlatformPei Anthony PERARD
2019-04-10 10:37 ` [edk2-devel] " Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 05/31] OvmfPkg/XenOvmf: Creating an ELF header Anthony PERARD
2019-04-11 10:43 ` [edk2-devel] " Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 06/31] OvmfPkg/XenResetVector: Add new entry point for Xen PVH Anthony PERARD
2019-04-11 10:49 ` [edk2-devel] " Laszlo Ersek
2019-04-11 12:52 ` [Xen-devel] " Andrew Cooper
2019-04-15 11:25 ` Anthony PERARD
2019-04-15 13:28 ` Andrew Cooper
2019-04-09 11:08 ` [PATCH v2 07/31] OvmfPkg/XenResetVector: Saving start of day pointer for PVH guests Anthony PERARD
2019-04-11 11:09 ` [edk2-devel] " Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 08/31] OvmfPkg/XenResetVector: Allow to jumpstart from either hvmloader or PVH Anthony PERARD
2019-04-11 11:19 ` [edk2-devel] " Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 09/31] OvmfPkg/XenOvmf: use a TimerLib instance that depends only on the CPU Anthony PERARD
2019-04-11 11:25 ` [edk2-devel] " Laszlo Ersek
2019-04-11 11:33 ` Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 10/31] OvmfPkg/XenPlatformPei: Detect OVMF_INFO from hvmloader Anthony PERARD
2019-04-11 11:47 ` [edk2-devel] " Laszlo Ersek
2019-04-11 11:47 ` Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 11/31] OvmfPkg/XenPlatformPei: Use mXenHvmloaderInfo to get E820 Anthony PERARD
2019-04-11 11:49 ` [edk2-devel] " Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 12/31] OvmfPkg/XenPlatformPei: Grab RSDP from PVH guest start of day struct Anthony PERARD
2019-04-11 11:58 ` [edk2-devel] " Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 13/31] OvmfPkg/Library/XenPlatformLib: New library Anthony PERARD
2019-04-11 12:10 ` [edk2-devel] " Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 14/31] OvmfPkg/AcpiPlatformDxe: Use PVH RSDP if exist Anthony PERARD
2019-04-11 12:20 ` [edk2-devel] " Laszlo Ersek
2019-04-11 12:23 ` Laszlo Ersek
2019-04-11 12:31 ` Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 15/31] OvmfPkg/XenHypercallLib: Enable it in PEIM Anthony PERARD
2019-04-12 9:07 ` [edk2-devel] " Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 16/31] OvmfPkg/XenPlatformPei: Introduce XenHvmloaderDetected Anthony PERARD
2019-04-12 9:08 ` [edk2-devel] " Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 17/31] OvmfPkg/XenPlatformPei: Reserve hvmloader's memory only when it as runned Anthony PERARD
2019-04-12 9:09 ` [edk2-devel] " Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 18/31] OvmfPkg/XenPlatformPei: Setup HyperPages earlier Anthony PERARD
2019-04-12 9:17 ` [edk2-devel] " Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 19/31] OvmfPkg/XenPlatformPei: Introduce XenPvhDetected Anthony PERARD
2019-04-12 9:20 ` [edk2-devel] " Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 20/31] OvmfPkg: Import XENMEM_memory_map hypercall to Xen/memory.h Anthony PERARD
2019-04-12 9:22 ` [edk2-devel] " Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 21/31] OvmfPkg/XenPlatformPei: Get E820 table via hypercall Anthony PERARD
2019-04-12 9:33 ` [edk2-devel] " Laszlo Ersek
2019-04-12 9:45 ` [Xen-devel] " Andrew Cooper
2019-04-09 11:08 ` [PATCH v2 22/31] OvmfPkg/XenPlatformPei: Rework memory detection Anthony PERARD
2019-04-12 11:15 ` [edk2-devel] " Laszlo Ersek
2019-04-15 13:42 ` Anthony PERARD
2019-04-09 11:08 ` [PATCH v2 23/31] OvmfPkg/XenPlatformPei: Reserve VGA memory region, to boot Linux Anthony PERARD
2019-04-15 13:21 ` [edk2-devel] " Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 24/31] OvmfPkg/XenPlatformPei: Ignore missing PCI Host Bridge on Xen PVH Anthony PERARD
2019-04-15 13:29 ` [edk2-devel] " Laszlo Ersek
2019-04-15 13:33 ` Laszlo Ersek
2019-04-15 13:37 ` [Xen-devel] " Andrew Cooper
2019-04-09 11:08 ` [PATCH v2 25/31] OvmfPkg/PlatformBootManagerLib: Handle the absence of PCI bus " Anthony PERARD
2019-04-15 13:33 ` [edk2-devel] " Laszlo Ersek
2019-04-15 13:49 ` Laszlo Ersek
2019-04-15 14:40 ` Anthony PERARD
2019-04-15 17:57 ` Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 26/31] OvmfPkg/XenOvmf: Override PcdFSBClock to Xen vLAPIC timer frequency Anthony PERARD
2019-04-15 13:52 ` [edk2-devel] " Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 27/31] OvmfPkg/XenOvmf: Introduce XenTimerDxe Anthony PERARD
2019-04-15 14:07 ` [edk2-devel] " Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 28/31] OvmfPkg/PlatformBootManagerLib: Use a Xen console for ConOut/ConIn Anthony PERARD
2019-04-15 14:56 ` [edk2-devel] " Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 29/31] OvmfPkg: Introduce XenIoPvhDxe to initialize Grant Tables Anthony PERARD
2019-04-16 8:49 ` [edk2-devel] " Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 30/31] OvmfPkg: Move XenRealTimeClockLib from ArmVirtPkg Anthony PERARD
2019-04-16 8:53 ` [edk2-devel] " Laszlo Ersek
2019-04-09 11:08 ` [PATCH v2 31/31] OvmfPkg/XenOvmf: use RealTimeClockRuntimeDxe from EmbeddedPkg Anthony PERARD
2019-04-16 8:58 ` [edk2-devel] " Laszlo Ersek
[not found] <20190408142408.30419-1-anthony.perard@citrix.com>
2019-04-08 15:50 ` [PATCH v2 00/31] Specific platform to run OVMF in Xen PVH and HVM guests Laszlo Ersek
2019-04-09 8:09 ` Laszlo Ersek
2019-04-09 10:50 ` Anthony PERARD
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190409110844.14746-1-anthony.perard@citrix.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox