[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 00/29] Xen/ARM guest support
Do you have this in a public branch based on this tree? https://github.com/tianocore/edk2 On 2015-02-12 03:18:52, Ard Biesheuvel wrote: > This series implements support for executing Tianocore inside a Xen > guest domain on 64-bit ARM systems (AArch64) > > The first part addresses ARM platform specifics, primarily to allow a > Tianocore binary image to be runtime relocatable, and execute from DRAM. > > The second part refactors the XenBus support, and adds some missing device > drivers that are needed to execute on ARM: a Xen PV console and a real time > clock driver. > > Finally, patch #29 wraps it all together and implements the .dsc and .fdf > platform descriptions that can be used to build the binary image. > > NOTES: > - the Xen RTC driver is a dummy implementation, as it is a Runtime driver > which > is callable through Runtime Services from the OS, and this is currently not > supportable under Xen, due to the need to share the shared info page between > the OS and the firmware > - UEFI maps the entire physical memory space as cached, and relies on Xen to > use the correct stage2 mappings for regions that are backed by devices, such > as the GIC or device passthrough. The reason is that the I/O console ring > and > grant table are backed by RAM that Xen maps as cached, which means that UEFI > *must* map those as cached as well. Instead of discovering those regions > early on (i.e., before enabling the MMU) it is much easier to rely on the > architecturally mandated behavior that stage2 device mappings supersede > stage1 > cached mappings for the same region. > - this code is not yet tested on x86 (still only build tested for v4) > > Changes since v3: > - rebased onto Olivier's pending GICv3 patches > - moved InterlockedCompareExchange16 () to BaseSynchronizationLib > - reimplemented XenBusDxe's TestAndClearBit () using > InterlockedCompareExchange16 () so that XenBusDxe itself is now completely > architecture agnostic > - various minor style and comment changes based on review feedback from > Laszlo and Olivier > - added acks and R-b's > > Changes since v2: > - rebased onto latest upstream containing Laszlo's ARM generic timer changes, > with Olivier's pending GICv3 patches applied on top; > - moved the relocatable PrePi to a completely separate module, and dropped > patches changing the original ARM PrePi code: all required changes have been > incorporated directly into the split off version > - dropped the ARM BDS entirely, only Intel BDS supported as of now > - added a constructor to XenConsoleSerialPortLib, otherwise there is no output > from the release build; > - implemented all review comments regarding style and correctness, including > cleaning up the DSC in the final patch > - added acks and R-b's > > Changes since v1: > - move to PatchableInModule PCDs for the runtime self-relocating PrePi: this > is > semantically more correct, and will make the build system help us spot if > there are remaining instances of FixedPcdGetXX() which need attention > - split some prepi and xen patches to make it easier on the reviewers > - split off the PCI support from XenBusDxe instead of the frankenstein DXE > from > v1 > - implemented review comments regarding moving of files, splitting of > libraries > and some EDK2 optimizations suggested by Laszlo (casting, use of specific > types etc) > - added some acks and R-b's > > > > Ard Biesheuvel (29): > ArmPkg: allow HYP timer interrupt to be omitted > ArmPkg: allow patchable PCDs for memory, FD and FV addresses > ArmPlatformPkg: allow patchable PCD for FD base address > ArmVirtualizationPkg: add GICv3 detection to VirtFdtDxe > ArmVirtualizationPkg: allow patchable PCD for device tree base address > ArmVirtualizationPkg: move early UART discovery to PlatformPeim > ArmVirtualizationPkg: use a HOB to store device tree blob > ArmVirtualizationPkg: add padding to FDT allocation > ArmVirtualizationPkg: add a relocatable version of PrePi > ArmVirtualizationPkg: implement custom MemoryInitPeiLib > ArmVirtualizationPkg: allow patchable PCD for FV and DT base addresses > ArmVirtualizationPkg: Xen/PV relocatable platformlib instance > MdePkg/BaseSynchronizationLib: Added proper support for ARM > architecture > MdePkg/BaseSynchronizationLib: implement 16-bit compare-exchange > Ovmf/Xen: move Xen interface version to <xen.h> > Ovmf/Xen: fix pointer to int cast in XenBusDxe > Ovmf/Xen: refactor XenBusDxe hypercall implementation > Ovmf/Xen: move XenBusDxe hypercall code to separate library > Ovmf/Xen: introduce XENIO_PROTOCOL > Ovmf/Xen: add separate driver for Xen PCI device > Ovmf/Xen: move XenBusDxe to abstract XENIO_PROTOCOL > Ovmf/Xen: implement XenHypercallLib for ARM > Ovmf/Xen: port XenBusDxe to other architectures > Ovmf/Xen: add Xen PV console SerialPortLib driver > ArmVirtualizationPkg: implement dummy RealTimeClockLib for Xen > Ovfm/Xen: add a Vendor Hardware device path GUID for the XenBus root > ArmVirtualizationPkg: add XenIoMmioLib > ArmVirtualizationPkg/VirtFdtDxe: wire up XenBusDxe to "xen,xen" DT > node > ArmVirtualizationPkg: add platform description for Xen guests > > ArmPkg/ArmPkg.dec > | 25 ++-- > ArmPkg/Drivers/TimerDxe/TimerDxe.c > | 14 +- > ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualization.dsc.inc > | 2 + > ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualizationPkg.dec > | 10 +- > ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualizationQemu.dsc > | 4 +- > ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualizationXen.dsc > | 218 +++++++++++++++++++++++++++++ > ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualizationXen.fdf > | 302 > ++++++++++++++++++++++++++++++++++++++++ > > ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmVirtualizationMemoryInitPeiLib/ArmVirtualizationMemoryInitPeiLib.c > | 91 ++++++++++++ > > .../ArmVirtualizationPkg/Library/ArmVirtualizationMemoryInitPeiLib/ArmVirtualizationMemoryInitPeiLib.inf > | 66 +++++++++ > > ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmVirtualizationPlatformLib/ArmVirtualizationPlatformLib.inf > | 6 +- > > ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmVirtualizationPlatformLib/Virt.c > | 48 +------ > > ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmXenRelocatablePlatformLib/AARCH64/MemnodeParser.S > | 237 +++++++++++++++++++++++++++++++ > > ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmXenRelocatablePlatformLib/AARCH64/RelocatableVirtHelper.S > | 167 ++++++++++++++++++++++ > > ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmXenRelocatablePlatformLib/ArmXenRelocatablePlatformLib.inf > | 59 ++++++++ > > ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmXenRelocatablePlatformLib/RelocatableVirt.c > | 71 ++++++++++ > > ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmXenRelocatablePlatformLib/XenVirtMem.c > | 83 +++++++++++ > ArmPlatformPkg/ArmVirtualizationPkg/Library/PlatformPeiLib/PlatformPeiLib.c > | 65 ++++++++- > > ArmPlatformPkg/ArmVirtualizationPkg/Library/PlatformPeiLib/PlatformPeiLib.inf > | 10 +- > > ArmPlatformPkg/ArmVirtualizationPkg/Library/XenRealTimeClockLib/XenRealTimeClockLib.c > | 196 ++++++++++++++++++++++++++ > > ArmPlatformPkg/ArmVirtualizationPkg/Library/XenRealTimeClockLib/XenRealTimeClockLib.inf > | 38 +++++ > ArmPlatformPkg/ArmVirtualizationPkg/PrePi/AArch64/ArchPrePi.c > | 33 +++++ > ArmPlatformPkg/ArmVirtualizationPkg/PrePi/AArch64/ModuleEntryPoint.S > | 180 ++++++++++++++++++++++++ > ArmPlatformPkg/ArmVirtualizationPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf > | 108 +++++++++++++++ > ArmPlatformPkg/ArmVirtualizationPkg/PrePi/LzmaDecompress.h > | 103 ++++++++++++++ > ArmPlatformPkg/ArmVirtualizationPkg/PrePi/PrePi.c > | 203 +++++++++++++++++++++++++++ > ArmPlatformPkg/ArmVirtualizationPkg/PrePi/PrePi.h > | 77 +++++++++++ > ArmPlatformPkg/ArmVirtualizationPkg/PrePi/Scripts/PrePi-PIE.lds > | 42 ++++++ > ArmPlatformPkg/ArmVirtualizationPkg/VirtFdtDxe/VirtFdtDxe.c > | 73 +++++++++- > ArmPlatformPkg/ArmVirtualizationPkg/VirtFdtDxe/VirtFdtDxe.inf > | 5 +- > > ArmPlatformPkg/Library/ArmPlatformGlobalVariableLib/PrePi/PrePiArmPlatformGlobalVariableLib.inf > | 2 +- > EmbeddedPkg/EmbeddedPkg.dec > | 2 + > EmbeddedPkg/Include/Guid/FdtHob.h > | 26 ++++ > MdePkg/Include/Library/SynchronizationLib.h > | 26 ++++ > MdePkg/Library/BaseSynchronizationLib/AArch64/Synchronization.S > | 203 +++++++++++++++++++++++++++ > MdePkg/Library/BaseSynchronizationLib/AArch64/Synchronization.c > | 115 ---------------- > MdePkg/Library/BaseSynchronizationLib/Arm/Synchronization.S > | 211 ++++++++++++++++++++++++++++ > MdePkg/Library/BaseSynchronizationLib/Arm/Synchronization.asm > | 212 ++++++++++++++++++++++++++++ > MdePkg/Library/BaseSynchronizationLib/Arm/Synchronization.c > | 115 ---------------- > MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf > | 10 +- > MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLibInternals.h > | 26 ++++ > MdePkg/Library/BaseSynchronizationLib/Ebc/Synchronization.c > | 31 +++++ > MdePkg/Library/BaseSynchronizationLib/Ia32/GccInline.c > | 42 ++++++ > .../Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.asm > | 88 ++++++------ > .../InterlockedCompareExchange16.h => > MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.c | > 89 +++++++----- > MdePkg/Library/BaseSynchronizationLib/Ipf/InterlockedCompareExchange16.s > | 30 ++++ > MdePkg/Library/BaseSynchronizationLib/Synchronization.c > | 31 +++++ > MdePkg/Library/BaseSynchronizationLib/X64/GccInline.c > | 44 ++++++ > .../Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.asm > | 83 +++++------ > MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.c > | 54 ++++++++ > OvmfPkg/Include/Guid/XenBusRootDevice.h > | 24 ++++ > OvmfPkg/Include/IndustryStandard/Xen/arch-arm/xen.h > | 436 > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > OvmfPkg/Include/IndustryStandard/Xen/io/console.h > | 51 +++++++ > OvmfPkg/Include/IndustryStandard/Xen/xen.h > | 7 +- > OvmfPkg/{XenBusDxe/XenHypercall.h => Include/Library/XenHypercallLib.h} > | 44 +----- > OvmfPkg/Include/Library/XenIoMmioLib.h > | 64 +++++++++ > OvmfPkg/Include/Protocol/XenIo.h > | 48 +++++++ > OvmfPkg/Library/XenConsoleSerialPortLib/XenConsoleSerialPortLib.c > | 156 +++++++++++++++++++++ > OvmfPkg/Library/XenConsoleSerialPortLib/XenConsoleSerialPortLib.inf > | 35 +++++ > OvmfPkg/Library/XenHypercallLib/Aarch64/Hypercall.S > | 26 ++++ > OvmfPkg/Library/XenHypercallLib/Arm/Hypercall.S > | 25 ++++ > OvmfPkg/{XenBusDxe => Library/XenHypercallLib}/Ia32/hypercall.nasm > | 6 +- > OvmfPkg/{XenBusDxe => Library/XenHypercallLib}/X64/hypercall.nasm > | 6 +- > OvmfPkg/Library/XenHypercallLib/XenHypercall.c > | 63 +++++++++ > OvmfPkg/Library/XenHypercallLib/XenHypercallIntel.c > | 77 +++++++++++ > OvmfPkg/Library/XenHypercallLib/XenHypercallLibArm.inf > | 40 ++++++ > OvmfPkg/Library/XenHypercallLib/XenHypercallLibIntel.inf > | 52 +++++++ > OvmfPkg/Library/XenIoMmioLib/XenIoMmioLib.c > | 166 ++++++++++++++++++++++ > OvmfPkg/Library/XenIoMmioLib/XenIoMmioLib.inf > | 39 ++++++ > OvmfPkg/OvmfPkg.dec > | 10 ++ > OvmfPkg/OvmfPkgIa32.dsc > | 2 + > OvmfPkg/OvmfPkgIa32.fdf > | 1 + > OvmfPkg/OvmfPkgIa32X64.dsc > | 2 + > OvmfPkg/OvmfPkgIa32X64.fdf > | 1 + > OvmfPkg/OvmfPkgX64.dsc > | 2 + > OvmfPkg/OvmfPkgX64.fdf > | 1 + > OvmfPkg/XenBusDxe/ComponentName.c > | 2 +- > OvmfPkg/XenBusDxe/EventChannel.c > | 14 +- > OvmfPkg/XenBusDxe/GrantTable.c > | 17 ++- > OvmfPkg/XenBusDxe/GrantTable.h > | 3 +- > OvmfPkg/XenBusDxe/Ia32/TestAndClearBit.nasm > | 16 --- > OvmfPkg/XenBusDxe/InterlockedCompareExchange16.c > | 33 ----- > OvmfPkg/XenBusDxe/TestAndClearBit.c > | 46 +++++++ > OvmfPkg/XenBusDxe/X64/TestAndClearBit.nasm > | 15 -- > OvmfPkg/XenBusDxe/XenBus.c > | 6 +- > OvmfPkg/XenBusDxe/XenBusDxe.c > | 106 +++++++------- > OvmfPkg/XenBusDxe/XenBusDxe.h > | 16 +-- > OvmfPkg/XenBusDxe/XenBusDxe.inf > | 25 +--- > OvmfPkg/XenBusDxe/XenHypercall.c > | 118 ---------------- > OvmfPkg/XenBusDxe/XenStore.c > | 6 +- > OvmfPkg/XenIoPciDxe/XenIoPciDxe.c > | 367 > ++++++++++++++++++++++++++++++++++++++++++++++++ > OvmfPkg/XenIoPciDxe/XenIoPciDxe.inf > | 45 ++++++ > OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.h > | 4 - > 92 files changed, 5417 insertions(+), 782 deletions(-) > create mode 100644 > ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualizationXen.dsc > create mode 100644 > ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualizationXen.fdf > create mode 100644 > ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmVirtualizationMemoryInitPeiLib/ArmVirtualizationMemoryInitPeiLib.c > create mode 100644 > ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmVirtualizationMemoryInitPeiLib/ArmVirtualizationMemoryInitPeiLib.inf > create mode 100644 > ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmXenRelocatablePlatformLib/AARCH64/MemnodeParser.S > create mode 100644 > ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmXenRelocatablePlatformLib/AARCH64/RelocatableVirtHelper.S > create mode 100644 > ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmXenRelocatablePlatformLib/ArmXenRelocatablePlatformLib.inf > create mode 100644 > ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmXenRelocatablePlatformLib/RelocatableVirt.c > create mode 100644 > ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmXenRelocatablePlatformLib/XenVirtMem.c > create mode 100644 > ArmPlatformPkg/ArmVirtualizationPkg/Library/XenRealTimeClockLib/XenRealTimeClockLib.c > create mode 100644 > ArmPlatformPkg/ArmVirtualizationPkg/Library/XenRealTimeClockLib/XenRealTimeClockLib.inf > create mode 100644 > ArmPlatformPkg/ArmVirtualizationPkg/PrePi/AArch64/ArchPrePi.c > create mode 100644 > ArmPlatformPkg/ArmVirtualizationPkg/PrePi/AArch64/ModuleEntryPoint.S > create mode 100755 > ArmPlatformPkg/ArmVirtualizationPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf > create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/PrePi/LzmaDecompress.h > create mode 100755 ArmPlatformPkg/ArmVirtualizationPkg/PrePi/PrePi.c > create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/PrePi/PrePi.h > create mode 100644 > ArmPlatformPkg/ArmVirtualizationPkg/PrePi/Scripts/PrePi-PIE.lds > create mode 100644 EmbeddedPkg/Include/Guid/FdtHob.h > create mode 100644 > MdePkg/Library/BaseSynchronizationLib/AArch64/Synchronization.S > delete mode 100644 > MdePkg/Library/BaseSynchronizationLib/AArch64/Synchronization.c > create mode 100644 > MdePkg/Library/BaseSynchronizationLib/Arm/Synchronization.S > create mode 100644 > MdePkg/Library/BaseSynchronizationLib/Arm/Synchronization.asm > delete mode 100644 > MdePkg/Library/BaseSynchronizationLib/Arm/Synchronization.c > mode change 100644 => 100755 > MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf > rename OvmfPkg/XenBusDxe/Ia32/InterlockedCompareExchange16.nasm => > MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.asm > (86%) > rename OvmfPkg/XenBusDxe/InterlockedCompareExchange16.h => > MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.c > (52%) > create mode 100644 > MdePkg/Library/BaseSynchronizationLib/Ipf/InterlockedCompareExchange16.s > rename OvmfPkg/XenBusDxe/X64/InterlockedCompareExchange16.nasm => > MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.asm > (88%) > create mode 100644 > MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.c > create mode 100644 OvmfPkg/Include/Guid/XenBusRootDevice.h > create mode 100644 OvmfPkg/Include/IndustryStandard/Xen/arch-arm/xen.h > create mode 100644 OvmfPkg/Include/IndustryStandard/Xen/io/console.h > rename OvmfPkg/{XenBusDxe/XenHypercall.h => > Include/Library/XenHypercallLib.h} (59%) > create mode 100644 OvmfPkg/Include/Library/XenIoMmioLib.h > create mode 100644 OvmfPkg/Include/Protocol/XenIo.h > create mode 100644 > OvmfPkg/Library/XenConsoleSerialPortLib/XenConsoleSerialPortLib.c > create mode 100644 > OvmfPkg/Library/XenConsoleSerialPortLib/XenConsoleSerialPortLib.inf > create mode 100644 OvmfPkg/Library/XenHypercallLib/Aarch64/Hypercall.S > create mode 100644 OvmfPkg/Library/XenHypercallLib/Arm/Hypercall.S > rename OvmfPkg/{XenBusDxe => Library/XenHypercallLib}/Ia32/hypercall.nasm > (81%) > rename OvmfPkg/{XenBusDxe => Library/XenHypercallLib}/X64/hypercall.nasm > (78%) > create mode 100644 OvmfPkg/Library/XenHypercallLib/XenHypercall.c > create mode 100644 OvmfPkg/Library/XenHypercallLib/XenHypercallIntel.c > create mode 100644 OvmfPkg/Library/XenHypercallLib/XenHypercallLibArm.inf > create mode 100644 OvmfPkg/Library/XenHypercallLib/XenHypercallLibIntel.inf > create mode 100644 OvmfPkg/Library/XenIoMmioLib/XenIoMmioLib.c > create mode 100644 OvmfPkg/Library/XenIoMmioLib/XenIoMmioLib.inf > delete mode 100644 OvmfPkg/XenBusDxe/Ia32/TestAndClearBit.nasm > delete mode 100644 OvmfPkg/XenBusDxe/InterlockedCompareExchange16.c > create mode 100644 OvmfPkg/XenBusDxe/TestAndClearBit.c > delete mode 100644 OvmfPkg/XenBusDxe/X64/TestAndClearBit.nasm > delete mode 100644 OvmfPkg/XenBusDxe/XenHypercall.c > create mode 100644 OvmfPkg/XenIoPciDxe/XenIoPciDxe.c > create mode 100644 OvmfPkg/XenIoPciDxe/XenIoPciDxe.inf > > -- > 1.8.3.2 > Attachment:
signature.asc _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |