Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752797AbbEHLVs (ORCPT ); Fri, 8 May 2015 07:21:48 -0400 Received: from mail-wi0-f180.google.com ([209.85.212.180]:36671 "EHLO mail-wi0-f180.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751860AbbEHLVn (ORCPT ); Fri, 8 May 2015 07:21:43 -0400 From: Paolo Bonzini To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org Cc: rkrcmar@redhat.com, bsd@redhat.com Subject: [PATCH 00/12] KVM: x86: SMM support Date: Fri, 8 May 2015 13:20:22 +0200 Message-Id: <1431084034-8425-1-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3213 Lines: 78 Thanks to the thorough review, I'm removing the RFC tag. The only major remaining point of contention is the code duplication between virt/kvm/kvm_main.c and arch/x86/kvm/smram.c. As before, I have only tested these patches with Q35's high SMRAM and with open SMRAM. Still, the TODO list has gotten smaller. I still haven't tried using #define for offsets. The main obstacle is doing math to compute offsets. Reviewed-by tags for individual patches are appreciated (especially patches 1 and 2 which I'd like to push separately). Paolo RFC->v1: - two patches (Radim's kvm_write_guest_page optimization + my fix for CR4.SMEP=1/CR0.WP=0) have already graduated to kvm/next - one new patch ("kvm: x86: introduce num_emulated_msrs") - fix pasto in do_get_msr - introduced kvm_set_hflags - replaced printk with tracepoints - added smi.pending and smi.rsm_unmasks_nmi fields to kvm_vcpu_events, to fix NMIs and add support for latching an SMI - SMBASE is not guest-readable - rebased on top of kvm/next so that SMBASE is not reset on INIT - fix access rights (shift left by 8) in 32-bit SMM state save format - disable if !unrestricted_guest && !emulate_invalid_guest_state TODO: - test on AMD - test with true SMRAM support in QEMU (only affects patch 10) Paolo Bonzini (12): KVM: export __gfn_to_pfn_memslot, drop gfn_to_pfn_async KVM: x86: introduce num_emulated_msrs 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 Documentation/virtual/kvm/api.txt | 58 +++- arch/x86/include/asm/kvm_emulate.h | 9 +- arch/x86/include/asm/kvm_host.h | 42 ++- arch/x86/include/asm/vmx.h | 1 + arch/x86/include/uapi/asm/kvm.h | 14 +- arch/x86/kvm/Makefile | 2 +- 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 | 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 | 69 +++-- arch/x86/kvm/trace.h | 22 ++ arch/x86/kvm/vmx.c | 80 +++--- arch/x86/kvm/x86.c | 543 +++++++++++++++++++++++++++++++------ include/linux/kvm_host.h | 20 +- include/uapi/linux/kvm.h | 5 +- virt/kvm/kvm_main.c | 44 ++- 20 files changed, 1223 insertions(+), 244 deletions(-) create mode 100644 arch/x86/kvm/smram.c -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/