lkml.org 
[lkml]   [2015]   [Apr]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[RFC PATCH 00/13] KVM: x86: SMM support
    Date
    This patch series introduces system management mode support.
    There is still some work to do, namely: test without unrestricted
    guest support, test on AMD, disable the capability if !unrestricted
    guest and !emulate invalid guest state(*), test with a QEMU that
    understand KVM_MEM_X86_SMRAM, actually post QEMU patches that let
    you use this.

    (*) newer chipsets moved away from legacy SMRAM at 0xa0000,
    thus support for real mode CS base above 1M is necessary

    Because legacy SMRAM is a mess, I have tried these patches with Q35's
    high SMRAM (at 0xfeda0000). This means that right now this isn't
    the easiest thing to test; you need QEMU patches that add support
    for high SMRAM, and SeaBIOS patches to use high SMRAM. Until QEMU
    support for KVM_MEM_X86_SMRAM is in place, also, I'm keeping SMRAM
    open in SeaBIOS.

    That said, even this clumsy and incomplete userspace configuration is
    enough to test all patches except 11 and 12.

    The series is structured as follows.

    Patch 1 is an unrelated bugfix (I think). Patches 2 to 6 extend some
    infrastructure functions. Patches 1 to 4 could be committed right now.

    Patches 7 to 9 implement basic support for SMM in the KVM API
    and teach KVM about doing the world switch on SMI and RSM.

    Patch 10 touches all places in KVM that read/write guest memory to
    go through an x86-specific function. The x86-specific function takes
    a VCPU rather than a struct kvm. This is used in patches 11 and 12
    to limits access to specially marked SMRAM slots unless the VCPU is
    in system management mode.

    Finally, patch 13 exposes the new capability for userspace to probe.

    Paolo

    Paolo Bonzini (12):
    KVM: MMU: fix for CR4.SMEP=1, CR0.WP=0?
    KVM: export __gfn_to_pfn_memslot, drop gfn_to_pfn_async
    KVM: remove unnecessary arg from mark_page_dirty_in_slot, export it
    KVM: x86: pass host_initiated to functions that read MSRs
    KVM: x86: pass the whole hflags field to emulator and back
    KVM: x86: API changes for SMM support
    KVM: x86: stubs for SMM support
    KVM: x86: save/load state on SMM switch
    KVM: x86: add vcpu-specific functions to read/write/translate GFNs
    KVM: x86: add SMM to the MMU role
    KVM: x86: add KVM_MEM_X86_SMRAM memory slot flag
    KVM: x86: advertise KVM_CAP_X86_SMM

    Radim Krčmář (1):
    KVM: reuse memslot in kvm_write_guest_page

    Documentation/virtual/kvm/api.txt | 52 ++++-
    arch/x86/include/asm/kvm_emulate.h | 7 +-
    arch/x86/include/asm/kvm_host.h | 39 ++--
    arch/x86/include/asm/vmx.h | 1 +
    arch/x86/include/uapi/asm/kvm.h | 10 +
    arch/x86/kvm/Makefile | 2 +-
    arch/x86/kvm/cpuid.h | 8 +
    arch/x86/kvm/emulate.c | 257 ++++++++++++++++++++-
    arch/x86/kvm/kvm_cache_regs.h | 5 +
    arch/x86/kvm/lapic.c | 26 ++-
    arch/x86/kvm/mmu.c | 20 +-
    arch/x86/kvm/paging_tmpl.h | 8 +-
    arch/x86/kvm/smram.c | 229 +++++++++++++++++++
    arch/x86/kvm/svm.c | 63 +++---
    arch/x86/kvm/vmx.c | 74 +++---
    arch/x86/kvm/x86.c | 452 ++++++++++++++++++++++++++++++-------
    include/linux/kvm_host.h | 20 +-
    include/uapi/linux/kvm.h | 5 +-
    virt/kvm/kvm_main.c | 48 ++--
    19 files changed, 1095 insertions(+), 231 deletions(-)
    create mode 100644 arch/x86/kvm/smram.c

    --
    1.8.3.1



    \
     
     \ /
      Last update: 2015-04-30 13:41    [W:4.249 / U:1.464 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site