Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp3008507ybi; Mon, 17 Jun 2019 14:34:36 -0700 (PDT) X-Google-Smtp-Source: APXvYqwrZgR+VrEqHRWS1Rr/D3vpzAcDHuUWFnGS/xj2a3+JTVve/ew+a6u9ouSfknwbNf88h3kb X-Received: by 2002:a17:90a:5d15:: with SMTP id s21mr1147300pji.125.1560807276543; Mon, 17 Jun 2019 14:34:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560807276; cv=none; d=google.com; s=arc-20160816; b=fkt6cw5Q56I+bY/6fLZ5pDpScnIlwwvC+0ALNnue719hvtTe5nHKc+uVLJ0H4aKesl FVbv7P5BHktMTKUwNU+GvK5ZJq/r5OpYwkLv4nD2CtLwILzpV3Sa4hkakR+cg8c54V1b PuXbuawqsd/lYTsILm7nae/WTWUJBIUQNByJ4EX0KJj+kuutU5MnRIcCjyy2lhh1JjHX GkfS/WOCrJHJf77q4dkwfwVJgmcpqSVgtnHRZ4gfcU8M491FT084/zwh2yFnCcU8E/R5 SMEdEJEm+0QU1avw3ocNUStoqPErrNW83Dw14FHDA+7armyPWs3suS/HvMrPlDwMg+5U UqSw== 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=Mg7ehjRGzHXjJortCYV3A0VYn7fqMN6fd/LjPH+pMvc=; b=anRVkKvnRboVAR8mUobvsrMPf8cvG5pB5KnXuMTCgHwJaoHeD9yQCaJmfVYNj62xzw hcn0XpKsiQ4TDeEas5cI/LeEaHiScZvxvVtoJAvwGojR2mO4MG7pmVfKBaHlFfpch6Ks P6l23dT8kgo+oGUpU8t4B0p4MpJq6t5NH1PkETkCliwYpLrvCPPKL/iaAcCSeV0M/FaR cAt55KJzGxa/8Y5riXBmGJh9YLMy0GHtcvSS6OLnd5UhdN7YZmrv75ZQXKVU1TJM+qvO PdjFJQv8Y26oX2KdBlWYuiBpaQUHm0NGp+c0UBTuX6oSbhABjEY4b743vKAaUvW623nT FmYQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=vgF7hXt9; 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 27si12945785pgn.43.2019.06.17.14.34.21; Mon, 17 Jun 2019 14:34:36 -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=vgF7hXt9; 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 S1730188AbfFQV0Y (ORCPT + 99 others); Mon, 17 Jun 2019 17:26:24 -0400 Received: from mail.kernel.org ([198.145.29.99]:52920 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730203AbfFQV0W (ORCPT ); Mon, 17 Jun 2019 17:26:22 -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 5BEF920673; Mon, 17 Jun 2019 21:26:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1560806781; bh=3ie9uaHAKQRRDf5gHffup/LU2y2OJeM07FarmKK3MWM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=vgF7hXt9X5s96/Gloq2iHcGhq9d9shIbnYZrK5EjtMABgjJbcSfL6g6VYx3clfWGX X7x95GDQa1OnAsHNuM+fm+b+3Gh7QdLB/TmjFdvS71ak/0ybkhIW0DUS4S6zIF3qt9 HQY9LHoUXkcq9FaVlmJliuReEaiDojNWglbykrEI= 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.19 54/75] KVM: x86/pmu: do not mask the value that is written to fixed PMUs Date: Mon, 17 Jun 2019 23:10:05 +0200 Message-Id: <20190617210754.875882996@linuxfoundation.org> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190617210752.799453599@linuxfoundation.org> References: <20190617210752.799453599@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 ad7ea81fbfbf..c3f103e2b08e 100644 --- a/arch/x86/kvm/pmu_intel.c +++ b/arch/x86/kvm/pmu_intel.c @@ -240,11 +240,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