• Mukesh Rathor's avatar
    xen/pvh/x86: Define what an PVH guest is (v3). · ddc416cb
    Mukesh Rathor authored
    Which is a PV guest with auto page translation enabled
    and with vector callback. It is a cross between PVHVM and PV.
    
    The Xen side defines PVH as (from docs/misc/pvh-readme.txt,
    with modifications):
    
    "* the guest uses auto translate:
     - p2m is managed by Xen
     - pagetables are owned by the guest
     - mmu_update hypercall not available
    * it uses event callback and not vlapic emulation,
    * IDT is native, so set_trap_table hcall is also N/A for a PVH guest.
    
    For a full list of hcalls supported for PVH, see pvh_hypercall64_table
    in arch/x86/hvm/hvm.c in xen.  From the ABI prespective, it's mostly a
    PV guest with auto translate, although it does use hvm_op for setting
    callback vector."
    
    Also we use the PV cpuid, albeit we can use the HVM (native) cpuid.
    However, we do have a fair bit of filtering in the xen_cpuid and
    we can piggyback on that until the hypervisor/toolstack filters
    the appropiate cpuids. Once that is done we can swap over to
    use the native one.
    
    We setup a Kconfig entry that is disabled by default and
    cannot be enabled.
    
    Note that on ARM the concept of PVH is non-existent. As Ian
    put it: "an ARM guest is neither PV nor HVM nor PVHVM.
    It's a bit like PVH but is different also (it's further towards
    the H end of the spectrum than even PVH).". As such these
    options (PVHVM, PVH) are never enabled nor seen on ARM
    compilations.
    Signed-off-by: default avatarMukesh Rathor <mukesh.rathor@oracle.com>
    Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    ddc416cb