From: Anthony PERARD <anthony.perard@citrix.com>
To: <edk2-devel@lists.01.org>, <xen-devel@lists.xenproject.org>
Cc: Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH RFC 00/14] Specific platform to run OVMF in Xen PVH and HVM guests
Date: Thu, 8 Dec 2016 15:33:26 +0000 [thread overview]
Message-ID: <20161208153340.2285-1-anthony.perard@citrix.com> (raw)
Hi,
I've started to create a Xen specifig plaform, in OvmfPkg/XenOvmf.dsc
with the goal to make it work on both Xen HVM and Xen PVHv2
The first few patches only create the platform and duplicate some code from
OvmfPkg and the later patches (from OvmfPkg/XenPlatformPei: Add xen PVH
specific code) makes OVMF boot in a Xen PVH guest, and can boot a Linux.
== Part 1: XenOvmf.dsc
- OvmfPkg: Create platform XenOvmf
which for now remove virtio drivers and some SMM
- OvmfPkg/XenOvmf: Update debug IO port for Xen
- OvmfPkg/XenOvmf.dsc: Introduce XenResetVector
Just for one change, enable cache in CR0 as on Xen, OVMF run from RAM, that
disabling cache can make OVMF very slow.
- OvmfPkg: Introduce XenPlatformPei
remove some QEMU/KVM specific code from PlatformPei.
- OvmfPkg/Library: add XenPciHostBridgeLib
same with PciHostBridgeLib
== Part 2: PVH enabled
- OvmfPkg/XenPlatformPei: Add xen PVH specific code
To figure out the memory size from E820
- OvmfPkg/XenResetVector: Add new entry point for Xen PVH
which is in 32bits
- OvmfPkg/PlatformBootManagerLib: Workaround missing PCI bus on Xen PVH
to avoid the Unknown Host Bridge Device ID error
- OvmfPkg/ResetSystemLib: Add missing dependency on PciLib
- UefiCpuPkg/BaseXApicX2ApicLib: Fix initialisation on my system and ...
- OvmfPkg/XenOvmf: Adding XenTimerLocalApic
to replace the ACPI timer
- OvmfPkg/PlatformBootManagerLib: Use a Xen console for ConOut/ConIn
- OvmfPkg: Introduce XenIoPvhDxe to initialize Grant Tables
- XenOvmf: Use a different RTC
which does always return the same value
== to build and boot
To build, simply run OvmfPkg/build.sh -p OvmfPkg/XenOvmf.dsc
To run, I currently use a loader, base on hvmloader which does some setup, read
the e820 and copy ovmf to the right place to start it.
The loader is avaible in branch `ovmf-pvhloader' from
https://xenbits.xen.org/git-http/people/aperard/xen-unstable.git
And the guest I'm using:
builder = 'hvm'
memory = 512
name = "pvh-ovmf"
kernel = 'pvh-ovmf-loader'
ramdisk='OVMF.fd'
extra='ovmf=1'
disk = [ 'file:iso/archlinux-2016.10.01-dual.iso,hdc:cdrom,r', ]
device_model_version = 'none'
serial = 'pty'
Anthony PERARD (14):
OvmfPkg: Create platform XenOvmf
OvmfPkg/XenOvmf: Update debug IO port for Xen
OvmfPkg/XenOvmf.dsc: Introduce XenResetVector
OvmfPkg: Introduce XenPlatformPei
OvmfPkg/Library: add XenPciHostBridgeLib
OvmfPkg/XenPlatformPei: Add xen PVH specific code
OvmfPkg/XenResetVector: Add new entry point for Xen PVH
OvmfPkg/PlatformBootManagerLib: Workaround missing PCI bus on Xen PVH
OvmfPkg/ResetSystemLib: Add missing dependency on PciLib
UefiCpuPkg/BaseXApicX2ApicLib: Fix initialisation on my system and ...
OvmfPkg/XenOvmf: Adding XenTimerLocalApic
OvmfPkg/PlatformBootManagerLib: Use a Xen console for ConOut/ConIn
OvmfPkg: Introduce XenIoPvhDxe to initialize Grant Tables
XenOvmf: Use a different RTC
.../Library/PlatformBootManagerLib/BdsPlatform.c | 35 +
.../PlatformBootManagerLib.inf | 2 +
OvmfPkg/Library/ResetSystemLib/ResetSystemLib.inf | 1 +
.../Library/XenPciHostBridgeLib/XenPciHostBridge.h | 75 ++
.../XenPciHostBridgeLib/XenPciHostBridgeLib.c | 291 ++++++++
.../XenPciHostBridgeLib/XenPciHostBridgeLib.inf | 58 ++
OvmfPkg/Library/XenPciHostBridgeLib/XenSupport.c | 456 ++++++++++++
OvmfPkg/XenIoPvhDxe/XenIoPvhDxe.c | 263 +++++++
OvmfPkg/XenIoPvhDxe/XenIoPvhDxe.inf | 45 ++
OvmfPkg/XenOvmf.dsc | 809 +++++++++++++++++++++
OvmfPkg/XenOvmf.fdf | 506 +++++++++++++
OvmfPkg/XenPlatformPei/Cmos.c | 64 ++
OvmfPkg/XenPlatformPei/Cmos.h | 56 ++
OvmfPkg/XenPlatformPei/Fv.c | 100 +++
OvmfPkg/XenPlatformPei/MemDetect.c | 520 +++++++++++++
OvmfPkg/XenPlatformPei/Platform.c | 541 ++++++++++++++
OvmfPkg/XenPlatformPei/Platform.h | 114 +++
OvmfPkg/XenPlatformPei/Xen.c | 231 ++++++
OvmfPkg/XenPlatformPei/Xen.h | 45 ++
OvmfPkg/XenPlatformPei/XenPlatformPei.inf | 110 +++
OvmfPkg/XenResetVector/Ia16/Real16ToFlat32.asm | 133 ++++
OvmfPkg/XenResetVector/Ia16/ResetVectorVtf0.asm | 79 ++
OvmfPkg/XenResetVector/Ia32/PageTables64.asm | 93 +++
OvmfPkg/XenResetVector/Ia32/XenPVHMain.asm | 23 +
OvmfPkg/XenResetVector/XenResetVector.inf | 37 +
OvmfPkg/XenResetVector/XenResetVector.nasmb | 67 ++
OvmfPkg/XenTimerLocalApic/Timer.h | 191 +++++
OvmfPkg/XenTimerLocalApic/XenTimerLocalApic.c | 386 ++++++++++
OvmfPkg/XenTimerLocalApic/XenTimerLocalApic.inf | 51 ++
UefiCpuPkg/Include/Library/LocalApicLib.h | 40 +
.../BaseXApicX2ApicLib/BaseXApicX2ApicLib.c | 10 +-
31 files changed, 5427 insertions(+), 5 deletions(-)
create mode 100644 OvmfPkg/Library/XenPciHostBridgeLib/XenPciHostBridge.h
create mode 100644 OvmfPkg/Library/XenPciHostBridgeLib/XenPciHostBridgeLib.c
create mode 100644 OvmfPkg/Library/XenPciHostBridgeLib/XenPciHostBridgeLib.inf
create mode 100644 OvmfPkg/Library/XenPciHostBridgeLib/XenSupport.c
create mode 100644 OvmfPkg/XenIoPvhDxe/XenIoPvhDxe.c
create mode 100644 OvmfPkg/XenIoPvhDxe/XenIoPvhDxe.inf
create mode 100644 OvmfPkg/XenOvmf.dsc
create mode 100644 OvmfPkg/XenOvmf.fdf
create mode 100644 OvmfPkg/XenPlatformPei/Cmos.c
create mode 100644 OvmfPkg/XenPlatformPei/Cmos.h
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/Platform.h
create mode 100644 OvmfPkg/XenPlatformPei/Xen.c
create mode 100644 OvmfPkg/XenPlatformPei/Xen.h
create mode 100644 OvmfPkg/XenPlatformPei/XenPlatformPei.inf
create mode 100644 OvmfPkg/XenResetVector/Ia16/Real16ToFlat32.asm
create mode 100644 OvmfPkg/XenResetVector/Ia16/ResetVectorVtf0.asm
create mode 100644 OvmfPkg/XenResetVector/Ia32/PageTables64.asm
create mode 100644 OvmfPkg/XenResetVector/Ia32/XenPVHMain.asm
create mode 100644 OvmfPkg/XenResetVector/XenResetVector.inf
create mode 100644 OvmfPkg/XenResetVector/XenResetVector.nasmb
create mode 100644 OvmfPkg/XenTimerLocalApic/Timer.h
create mode 100644 OvmfPkg/XenTimerLocalApic/XenTimerLocalApic.c
create mode 100644 OvmfPkg/XenTimerLocalApic/XenTimerLocalApic.inf
--
Anthony PERARD
next reply other threads:[~2016-12-08 15:45 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-08 15:33 Anthony PERARD [this message]
2016-12-08 15:33 ` [PATCH RFC 01/14] OvmfPkg: Create platform XenOvmf Anthony PERARD
2017-01-04 19:14 ` Laszlo Ersek
2016-12-08 15:33 ` [PATCH RFC 02/14] OvmfPkg/XenOvmf: Update debug IO port for Xen Anthony PERARD
2017-01-04 19:23 ` Laszlo Ersek
2016-12-08 15:33 ` [PATCH RFC 03/14] OvmfPkg/XenOvmf.dsc: Introduce XenResetVector Anthony PERARD
2017-01-04 19:49 ` Laszlo Ersek
2017-01-10 15:58 ` Anthony PERARD
2016-12-08 15:33 ` [PATCH RFC 04/14] OvmfPkg: Introduce XenPlatformPei Anthony PERARD
2017-01-05 9:59 ` Laszlo Ersek
2017-01-10 16:08 ` Anthony PERARD
2016-12-08 15:33 ` [PATCH RFC 05/14] OvmfPkg/Library: add XenPciHostBridgeLib Anthony PERARD
2017-01-05 10:15 ` Laszlo Ersek
2016-12-08 15:33 ` [PATCH RFC 06/14] OvmfPkg/XenPlatformPei: Add xen PVH specific code Anthony PERARD
2017-01-05 10:30 ` Laszlo Ersek
2017-01-10 16:18 ` Anthony PERARD
2017-01-10 16:54 ` Laszlo Ersek
2016-12-08 15:33 ` [PATCH RFC 07/14] OvmfPkg/XenResetVector: Add new entry point for Xen PVH Anthony PERARD
2017-01-05 10:36 ` Laszlo Ersek
2016-12-08 15:33 ` [PATCH RFC 08/14] OvmfPkg/PlatformBootManagerLib: Workaround missing PCI bus on " Anthony PERARD
2017-01-05 10:38 ` Laszlo Ersek
2016-12-08 15:33 ` [PATCH RFC 09/14] OvmfPkg/ResetSystemLib: Add missing dependency on PciLib Anthony PERARD
2017-01-05 10:46 ` Laszlo Ersek
2016-12-08 15:33 ` [PATCH RFC 10/14] UefiCpuPkg/BaseXApicX2ApicLib: Fix initialisation on my system and Anthony PERARD
2016-12-09 6:48 ` Kinney, Michael D
2016-12-12 12:38 ` Anthony PERARD
[not found] ` <58dbbeb0-f600-ef3f-7f8c-5c110b0aa809@citrix.com>
2016-12-12 12:40 ` [Xen-devel] " Anthony PERARD
2016-12-08 15:33 ` [PATCH RFC 11/14] OvmfPkg/XenOvmf: Adding XenTimerLocalApic Anthony PERARD
2017-01-05 11:26 ` Laszlo Ersek
2016-12-08 15:33 ` [PATCH RFC 12/14] OvmfPkg/PlatformBootManagerLib: Use a Xen console for ConOut/ConIn Anthony PERARD
2017-01-05 16:38 ` Laszlo Ersek
2016-12-08 15:33 ` [PATCH RFC 13/14] OvmfPkg: Introduce XenIoPvhDxe to initialize Grant Tables Anthony PERARD
2017-01-05 16:58 ` Laszlo Ersek
2016-12-08 15:33 ` [PATCH RFC 14/14] XenOvmf: Use a different RTC Anthony PERARD
2017-01-05 17:02 ` Laszlo Ersek
2017-01-04 19:52 ` [PATCH RFC 00/14] Specific platform to run OVMF in Xen PVH and HVM guests Laszlo Ersek
2017-01-10 14:55 ` 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=20161208153340.2285-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