[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH v2 00/31] Specific platform to run OVMF in Xen PVH and HVM guests



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


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

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