Messages in this thread | | | Date | Fri, 05 Jun 2015 13:17:11 +0300 | From | Avi Kivity <> | Subject | Re: [PATCH v2 00/13] SMM implementation for KVM |
| |
On 05/27/2015 08:05 PM, Paolo Bonzini wrote: > This brings together the remaining parts of SMM. For now I've left the > "weird" interaction between SMM and NMI blocking, and I'm using the same > format for the state save area (which is also the one used by QEMU) as > the RFC. > > It builds on the previous cleanup patches, which (with the exception > of "KVM: x86: pass kvm_mmu_page to gfn_to_rmap") are now in kvm/queue. > The first six patches are more or less the same as the previous version, > while the address spaces part hopefully touches all affected functions > now. > > Patches 1-6 implement the SMM API and world switch; patches 7-12 > implements the multiple address spaces; patch 13 ties the loose > ends and advertises the capability. > > Tested with SeaBIOS and OVMF, where SMM provides the trusted base > for secure boot. >
Nice work. While I did not do a thorough review, the mmu bits look robust.
> Thanks, > > Paolo > > Paolo Bonzini (13): > KVM: x86: introduce num_emulated_msrs > 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: add vcpu-specific functions to read/write/translate GFNs > KVM: implement multiple address spaces > KVM: x86: pass kvm_mmu_page to gfn_to_rmap > KVM: x86: use vcpu-specific functions to read/write/translate GFNs > KVM: x86: work on all available address spaces > KVM: x86: add SMM to the MMU role, support SMRAM address space > KVM: x86: advertise KVM_CAP_X86_SMM > > Documentation/virtual/kvm/api.txt | 52 ++- > arch/powerpc/include/asm/kvm_book3s_64.h | 2 +- > arch/x86/include/asm/kvm_emulate.h | 9 +- > arch/x86/include/asm/kvm_host.h | 44 ++- > arch/x86/include/asm/vmx.h | 1 + > arch/x86/include/uapi/asm/kvm.h | 11 +- > arch/x86/kvm/cpuid.h | 8 + > arch/x86/kvm/emulate.c | 262 +++++++++++++- > arch/x86/kvm/kvm_cache_regs.h | 5 + > arch/x86/kvm/lapic.c | 4 +- > arch/x86/kvm/mmu.c | 171 +++++----- > arch/x86/kvm/mmu_audit.c | 16 +- > arch/x86/kvm/paging_tmpl.h | 18 +- > arch/x86/kvm/svm.c | 73 ++-- > arch/x86/kvm/trace.h | 22 ++ > arch/x86/kvm/vmx.c | 106 +++--- > arch/x86/kvm/x86.c | 562 ++++++++++++++++++++++++++----- > include/linux/kvm_host.h | 49 ++- > include/uapi/linux/kvm.h | 6 +- > virt/kvm/kvm_main.c | 237 ++++++++++--- > 20 files changed, 1337 insertions(+), 321 deletions(-) >
| |