From patchwork Wed Nov 26 15:56:25 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Nadav Amit X-Patchwork-Id: 5386471 Return-Path: X-Original-To: patchwork-kvm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 0996B9F39B for ; Wed, 26 Nov 2014 15:57:10 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 26CAC2017D for ; Wed, 26 Nov 2014 15:57:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 8DE4020149 for ; Wed, 26 Nov 2014 15:57:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752663AbaKZP5D (ORCPT ); Wed, 26 Nov 2014 10:57:03 -0500 Received: from mailgw12.technion.ac.il ([132.68.225.12]:8493 "EHLO mailgw12.technion.ac.il" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750927AbaKZP5B (ORCPT ); Wed, 26 Nov 2014 10:57:01 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AicDAKT3dVSERCABjGdsb2JhbABbhC/ObAKBChYBAQEBAQEQAQEBJ0KEAwEFJ1IQUVcHEohAzQWFUAEBAQEGAgEfkHsHhE0FoDGHEpJTdYJKAQEB X-IPAS-Result: AicDAKT3dVSERCABjGdsb2JhbABbhC/ObAKBChYBAQEBAQEQAQEBJ0KEAwEFJ1IQUVcHEohAzQWFUAEBAQEGAgEfkHsHhE0FoDGHEpJTdYJKAQEB X-IronPort-AV: E=Sophos;i="5.07,462,1413234000"; d="scan'208";a="131116978" Received: from csa.cs.technion.ac.il ([132.68.32.1]) by mailgw12.technion.ac.il with ESMTP; 26 Nov 2014 17:57:00 +0200 Received: from csn.cs.technion.ac.il (csn.cs.technion.ac.il [132.68.32.15]) by csa.cs.technion.ac.il (Postfix) with ESMTP id 4ADA8140039; Wed, 26 Nov 2014 17:56:59 +0200 (IST) Received: from csl-tapuz20.cs.technion.ac.il (csl-tapuz20.cs.technion.ac.il [132.68.206.58]) by csn.cs.technion.ac.il (Postfix) with ESMTPSA id 39731A1BFE; Wed, 26 Nov 2014 17:56:59 +0200 (IST) From: Nadav Amit To: pbonzini@redhat.com, rkrcmar@redhat.com Cc: kvm@vger.kernel.org, Nadav Amit Subject: [PATCH v2] KVM: x86: Fix reserved x2apic registers Date: Wed, 26 Nov 2014 17:56:25 +0200 Message-Id: <1417017385-6350-1-git-send-email-namit@cs.technion.ac.il> X-Mailer: git-send-email 1.9.1 In-Reply-To: <20141126153956.GA8120@potion.brq.redhat.com> References: <20141126153956.GA8120@potion.brq.redhat.com> Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP x2APIC has no registers for DFR and ICR2 (see Intel SDM 10.12.1.2 "x2APIC Register Address Space"). KVM needs to cause #GP on such accesses. Fix it (DFR and ICR2 on read, ICR2 on write, DFR already handled on writes). Signed-off-by: Nadav Amit Reviewed-by: Radim Kr?má? --- v1->v2: Cause #GP on ICR2 write access (as Radim pointed) --- arch/x86/kvm/lapic.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index e0e5642..9c90d31 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c @@ -1883,6 +1883,9 @@ int kvm_x2apic_msr_write(struct kvm_vcpu *vcpu, u32 msr, u64 data) if (!irqchip_in_kernel(vcpu->kvm) || !apic_x2apic_mode(apic)) return 1; + if (reg == APIC_ICR2) + return 1; + /* if this is ICR write vector before command */ if (msr == 0x830) apic_reg_write(apic, APIC_ICR2, (u32)(data >> 32)); @@ -1897,6 +1900,12 @@ int kvm_x2apic_msr_read(struct kvm_vcpu *vcpu, u32 msr, u64 *data) if (!irqchip_in_kernel(vcpu->kvm) || !apic_x2apic_mode(apic)) return 1; + if (reg == APIC_DFR || reg == APIC_ICR2) { + apic_debug("KVM_APIC_READ: read x2apic reserved register %x\n", + reg); + return 1; + } + if (apic_reg_read(apic, reg, 4, &low)) return 1; if (msr == 0x830)