[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



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 started to create a Xen specific platform, in OvmfPkg/XenOvmf.dsc
with the goal to make it work on both Xen HVM and Xen PVH.

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.

Question:

Should we start moving these to a different *Pkg? Like it's done for ArmPkg and
ArmVirtPkg?  Maybe XenPkg.

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).

Patch series available in this git branch:
https://xenbits.xen.org/git-http/people/aperard/ovmf.git br.platform-xen-pvh-v2

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®.