[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
Description: signature

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.