From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752154AbdKZQle (ORCPT ); Sun, 26 Nov 2017 11:41:34 -0500 Received: from smtp-fw-9101.amazon.com ([207.171.184.25]:44989 "EHLO smtp-fw-9101.amazon.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751883AbdKZQlc (ORCPT ); Sun, 26 Nov 2017 11:41:32 -0500 X-IronPort-AV: E=Sophos;i="5.44,459,1505779200"; d="scan'208";a="717108093" From: Filippo Sironi To: pbonzini@redhat.com, rkrcmar@redhat.com, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Filippo Sironi Subject: [PATCH 1/2] KVM: x86: Store the microcode version in struct kvm_arch Date: Sun, 26 Nov 2017 17:41:21 +0100 Message-Id: <1511714482-3273-1-git-send-email-sironi@amazon.de> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org ... and read it from there when emulating accesses to MSR_IA32_UCODE_REV. This is the first step to allow userspace to define what's the microcode version that the guest should see. Signed-off-by: Filippo Sironi --- arch/x86/include/asm/kvm_host.h | 2 ++ arch/x86/kvm/x86.c | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index 1bfb99770c34..84b20139f4f1 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -776,6 +776,8 @@ struct kvm_arch { struct mutex apic_map_lock; struct kvm_apic_map *apic_map; + u32 microcode_version; + unsigned int tss_addr; bool apic_access_page_done; diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 34c85aa2e2d1..925c3e29cad3 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -2447,7 +2447,7 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info) msr_info->data = 0; break; case MSR_IA32_UCODE_REV: - msr_info->data = 0x100000000ULL; + msr_info->data = (u64)vcpu->kvm->arch.microcode_version << 32; break; case MSR_MTRRcap: case 0x200 ... 0x2ff: @@ -8121,6 +8121,8 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type) if (type) return -EINVAL; + kvm->arch.microcode_version = 0x1; + INIT_HLIST_HEAD(&kvm->arch.mask_notifier_list); INIT_LIST_HEAD(&kvm->arch.active_mmu_pages); INIT_LIST_HEAD(&kvm->arch.zapped_obsolete_pages); -- 2.7.4