From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Justen Subject: Re: [PATCH v4 00/29] Xen/ARM guest support Date: Thu, 12 Feb 2015 13:18:55 -0800 Message-ID: <20150212211855.11478.90744__20342.0934304178$1423776069$gmane$org@jljusten-hsw> References: <1423739961-5945-1-git-send-email-ard.biesheuvel@linaro.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0824319075516513400==" Return-path: In-Reply-To: <1423739961-5945-1-git-send-email-ard.biesheuvel@linaro.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Ard Biesheuvel Cc: feng.tian@intel.com, julien.grall@linaro.org, ian.campbell@citrix.com, olivier.martin@arm.com, stefano.stabellini@eu.citrix.com, edk2-devel@lists.sourceforge.net, leif.lindholm@linaro.org, xen-devel@lists.xen.org, roy.franz@linaro.org, michael.d.kinney@intel.com, anthony.perard@citrix.com, lersek@redhat.com List-Id: xen-devel@lists.xenproject.org --===============0824319075516513400== Content-Type: multipart/signed; protocol="application/pgp-signature"; micalg="pgp-sha256"; boundary="===============1928942675879215314==" Content-Disposition: inline --===============1928942675879215314== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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 ti= me > 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 be= tween > 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 ri= ng 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 t= he > 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 complet= ely > 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 chan= ges, > 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 o= utput > from the release build; > - implemented all review comments regarding style and correctness, includ= ing > 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: t= his 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 DX= E from > v1 > - implemented review comments regarding moving of files, splitting of lib= raries > and some EDK2 optimizations suggested by Laszlo (casting, use of specif= ic > 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 > 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/ArmVirtualizationMemoryInitP= eiLib/ArmVirtualizationMemoryInitPeiLib.c | 91 ++++++++++++ > .../ArmVirtualizationPkg/Library/ArmVirtualizationMemoryInitPeiLib/ArmVi= rtualizationMemoryInitPeiLib.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/PlatformPeiLi= b.c | 65 ++++++++- > ArmPlatformPkg/ArmVirtualizationPkg/Library/PlatformPeiLib/PlatformPeiLi= b.inf | 10 +- > ArmPlatformPkg/ArmVirtualizationPkg/Library/XenRealTimeClockLib/XenRealT= imeClockLib.c | 196 ++++++++++++++++++++++++++ > ArmPlatformPkg/ArmVirtualizationPkg/Library/XenRealTimeClockLib/XenRealT= imeClockLib.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/PrePiArmPlatfo= rmGlobalVariableLib.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 =3D> MdePkg/Library/BaseSynchronizati= onLib/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 =3D> 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 =3D> Library/XenHypercallLib}/Ia32/hypercall.nasm = | 6 +- > OvmfPkg/{XenBusDxe =3D> 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/ArmVirtualization= Xen.dsc > create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualization= Xen.fdf > create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmVirtua= lizationMemoryInitPeiLib/ArmVirtualizationMemoryInitPeiLib.c > create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmVirtua= lizationMemoryInitPeiLib/ArmVirtualizationMemoryInitPeiLib.inf > create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmXenRel= ocatablePlatformLib/AARCH64/MemnodeParser.S > create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmXenRel= ocatablePlatformLib/AARCH64/RelocatableVirtHelper.S > create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmXenRel= ocatablePlatformLib/ArmXenRelocatablePlatformLib.inf > create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmXenRel= ocatablePlatformLib/RelocatableVirt.c > create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmXenRel= ocatablePlatformLib/XenVirtMem.c > create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/Library/XenRealTi= meClockLib/XenRealTimeClockLib.c > create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/Library/XenRealTi= meClockLib/XenRealTimeClockLib.inf > create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/PrePi/AArch64/Arc= hPrePi.c > create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/PrePi/AArch64/Mod= uleEntryPoint.S > create mode 100755 ArmPlatformPkg/ArmVirtualizationPkg/PrePi/ArmVirtPreP= iUniCoreRelocatable.inf > create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/PrePi/LzmaDecompr= ess.h > create mode 100755 ArmPlatformPkg/ArmVirtualizationPkg/PrePi/PrePi.c > create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/PrePi/PrePi.h > create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/PrePi/Scripts/Pre= Pi-PIE.lds > create mode 100644 EmbeddedPkg/Include/Guid/FdtHob.h > create mode 100644 MdePkg/Library/BaseSynchronizationLib/AArch64/Synchro= nization.S > delete mode 100644 MdePkg/Library/BaseSynchronizationLib/AArch64/Synchro= nization.c > create mode 100644 MdePkg/Library/BaseSynchronizationLib/Arm/Synchroniza= tion.S > create mode 100644 MdePkg/Library/BaseSynchronizationLib/Arm/Synchroniza= tion.asm > delete mode 100644 MdePkg/Library/BaseSynchronizationLib/Arm/Synchroniza= tion.c > mode change 100644 =3D> 100755 MdePkg/Library/BaseSynchronizationLib/Bas= eSynchronizationLib.inf > rename OvmfPkg/XenBusDxe/Ia32/InterlockedCompareExchange16.nasm =3D> Mde= Pkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.asm (8= 6%) > rename OvmfPkg/XenBusDxe/InterlockedCompareExchange16.h =3D> MdePkg/Libr= ary/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.c (52%) > create mode 100644 MdePkg/Library/BaseSynchronizationLib/Ipf/Interlocked= CompareExchange16.s > rename OvmfPkg/XenBusDxe/X64/InterlockedCompareExchange16.nasm =3D> MdeP= kg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.asm (88%) > create mode 100644 MdePkg/Library/BaseSynchronizationLib/X64/Interlocked= CompareExchange16.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 =3D> Include/Library/XenHyperca= llLib.h} (59%) > create mode 100644 OvmfPkg/Include/Library/XenIoMmioLib.h > create mode 100644 OvmfPkg/Include/Protocol/XenIo.h > create mode 100644 OvmfPkg/Library/XenConsoleSerialPortLib/XenConsoleSer= ialPortLib.c > create mode 100644 OvmfPkg/Library/XenConsoleSerialPortLib/XenConsoleSer= ialPortLib.inf > create mode 100644 OvmfPkg/Library/XenHypercallLib/Aarch64/Hypercall.S > create mode 100644 OvmfPkg/Library/XenHypercallLib/Arm/Hypercall.S > rename OvmfPkg/{XenBusDxe =3D> Library/XenHypercallLib}/Ia32/hypercall.n= asm (81%) > rename OvmfPkg/{XenBusDxe =3D> Library/XenHypercallLib}/X64/hypercall.na= sm (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 >=20 --===============1928942675879215314== MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Description: signature Content-Type: application/pgp-signature; name="signature.asc"; charset="us-ascii" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABCAAGBQJU3Ri/AAoJEDf5n2jK+ZLrG5UQAIizst43MF4Qn3STf65jiKU8 kRiLy0BGkhmMzwEvfGJKIGCUZt4FbyDnhHC0nwD6swAJU58SdJYNQbqgJl3B7Rdm a11fxnlcSk9iPSoUKNoOdTavtDcEgZmjJtfjU7nMUvuDu3e4u5G+MScmePqlHKyZ 6AA13CJIy0pH9AiFjvKA5jQIjG9Zq7qc3wr1prM9ABulIRkZcAhvbOv5pu4H6OG3 LmGTQ+7JCFW9t3ATxEuWKSZ5gtNd2Hyo7ghk15gUx6op5eSwu5iqfXQLw6d2j645 S7FwJXjZfcq2lyqGM2w2G8UCg7SkYzLDeREaU5B1bG6/JdJubsS3XUmNlolrA9mS Qo9sngKGw//35ZdPIkg5lWCeN+4CcC/z62qv+NZwc/yHE2XJ5pUYiXle4sc99ZnX bi5ARcVpGzkVOrhzAo6fGjmyNy/B64xp2z5C/rwwhXnOsWJH6+wWq9Rd0wtPJ/9/ /XOy9PtbSx++z37vYX3niLPG3/2cpkk/YxXQzWF54eo5JrtxSZSWJMCUJEgFbbC6 xCoi4YUWi4w5THx/BHyM0qAF2xJRxyFGTxNiTAFfE74ONX9TOu9tBM/4tqmdELYi PCfJZI2MEHw4Cz9d4o1sAB2UvAC3t+AcqlT4wbvc2ymeKW+8PYPiKnL8OcCM7T8d RRi441APGmAH9bdRukwE =zKwy -----END PGP SIGNATURE----- --===============1928942675879215314==-- --===============0824319075516513400== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel --===============0824319075516513400==--