Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp3005347ybi; Mon, 17 Jun 2019 14:30:42 -0700 (PDT) X-Google-Smtp-Source: APXvYqySXTt9mxjzq3iyJk1q0LNL6BWzuyJpIKrJJGSredW+W2PcvVc/rglQojAaJbq+UU9vafpv X-Received: by 2002:a17:90a:350c:: with SMTP id q12mr1213786pjb.46.1560807041988; Mon, 17 Jun 2019 14:30:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560807041; cv=none; d=google.com; s=arc-20160816; b=M5Wk8G5QvEBqSQKTDCGfpnasUxcL510goAyTrEFtbbZAl9toKW0iQrRXJk/OGzK5tk VNpkPel4CxUJ2TBFi2k2fI3srmdH1YC5NL7Etw/kcya8q8q5Y8SccROWjRN5KKnDQhrZ K26OU1icim8e4oW0zRkHNsCBIEGfch4Wqtc559ScFOyCJgKRyQZ4J3XgGqR+cGplvTPw /rUIw4jCATBi4ewR2gDUAIjGr9h6ln/AcVBb/inov8dcLW4Kh+c38N+KKDljNx0AnkeY v9PQ1jtJyk4Vkf/2NRnaQAs/5PZdBh4eJPWCi5Fff2dURlVMCpShNqQlOzvP8/RLksib Ymtg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=+bIKCwD9MsrmdXU73JsMWAKCwc17COv4JFsMxJzzFzg=; b=PqV/93TLbSYZmTDRkEXqcRhMNKR3wY/sUeswq/8TDySkDAlrmTAkQfNYcCDgeBCGPb h+sdlN3ZkzGUvt5yESM8uv6zVgVGr0XNJljuH5+YpK+wKMvRazeQyC8ioFtkPuWay+CX 68xjE+WkF9ttFFqiMrrkiJY6X5CzuzvtUk8y2OZhj1OMHq+Hdpw27Cke5Em41xEb3q2B imVks06Vq8wbg4k9sVRt31kQRBahHr8ATuuipW3CVfHZObQOAZf70jynfx6iwdo8YoU4 jjCaWCnIH/FBSzuR4v0Vxvcm6zr2SdGcd1CVEDONzxj+PhVW6zI/d/eLxrFoqWvW0r/S urxA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="FbXQlrD/"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y4si10681027plk.357.2019.06.17.14.30.26; Mon, 17 Jun 2019 14:30:41 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="FbXQlrD/"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730669AbfFQV3O (ORCPT + 99 others); Mon, 17 Jun 2019 17:29:14 -0400 Received: from mail.kernel.org ([198.145.29.99]:56376 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729043AbfFQV3M (ORCPT ); Mon, 17 Jun 2019 17:29:12 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 1D7A62063F; Mon, 17 Jun 2019 21:29:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1560806951; bh=dNlhZXcSxapq/pBxruiZXHFae5wUZKQT88NMHvsonGU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FbXQlrD/OMMpu+qjTqG31fkB8zpZGFepKoa6r3eM5p2iM04GTe/Dd+dZjb7FO/Ysm P0P7lpAHw7OA2hC3q8yP6t5sUSVhhouM7OCV19oxNY6tUdiQRehbet78IC1Pg92jDl NDxS/i1xLItEfKmakVgxP+O9Mq+UqKq/w/j5UJoY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Nadav Amit , Paolo Bonzini , Sasha Levin Subject: [PATCH 4.14 39/53] KVM: x86/pmu: do not mask the value that is written to fixed PMUs Date: Mon, 17 Jun 2019 23:10:22 +0200 Message-Id: <20190617210751.866366227@linuxfoundation.org> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190617210745.104187490@linuxfoundation.org> References: <20190617210745.104187490@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org [ Upstream commit 2924b52117b2812e9633d5ea337333299166d373 ] According to the SDM, for MSR_IA32_PERFCTR0/1 "the lower-order 32 bits of each MSR may be written with any value, and the high-order 8 bits are sign-extended according to the value of bit 31", but the fixed counters in real hardware are limited to the width of the fixed counters ("bits beyond the width of the fixed-function counter are reserved and must be written as zeros"). Fix KVM to do the same. Reported-by: Nadav Amit Signed-off-by: Paolo Bonzini Signed-off-by: Sasha Levin --- arch/x86/kvm/pmu_intel.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/arch/x86/kvm/pmu_intel.c b/arch/x86/kvm/pmu_intel.c index 5ab4a364348e..2729131fe9bf 100644 --- a/arch/x86/kvm/pmu_intel.c +++ b/arch/x86/kvm/pmu_intel.c @@ -235,11 +235,14 @@ static int intel_pmu_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info) } break; default: - if ((pmc = get_gp_pmc(pmu, msr, MSR_IA32_PERFCTR0)) || - (pmc = get_fixed_pmc(pmu, msr))) { - if (!msr_info->host_initiated) - data = (s64)(s32)data; - pmc->counter += data - pmc_read_counter(pmc); + if ((pmc = get_gp_pmc(pmu, msr, MSR_IA32_PERFCTR0))) { + if (msr_info->host_initiated) + pmc->counter = data; + else + pmc->counter = (s32)data; + return 0; + } else if ((pmc = get_fixed_pmc(pmu, msr))) { + pmc->counter = data; return 0; } else if ((pmc = get_gp_pmc(pmu, msr, MSR_P6_EVNTSEL0))) { if (data == pmc->eventsel) -- 2.20.1