Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp5302942pxj; Wed, 9 Jun 2021 14:14:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzX6KtDTh/u8KnYVrH24Y2Vvw2GLfXtHWXlRsFuyHWFgJ312gyx+PAiIfOZSRsyxUD6dZWj X-Received: by 2002:a05:6402:5a:: with SMTP id f26mr1311131edu.306.1623273246777; Wed, 09 Jun 2021 14:14:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623273246; cv=none; d=google.com; s=arc-20160816; b=sFKgTD5d9XLSgelB/XEXcy0LQ9fBT90rqpBSJF6NFwdIKoGjY2PccMNlPuAg4PFxeR WK4P/TtajRh4VYW02OT6a/wJBn3R8w+Y8qnVeTsbLaDzO31rLqQHW4YtGxtR1vGYkCTC LUph3o31ppLsv5xD7yWDzC3p+ESYGm5LZohD5i4zQbWio6WegF7ZZYgR3EabYsVzfFTx ByfSogSr44mijCN8WUTg4iZaxDkO3/Z4JCsrotga7TQQbwlfv18ln4Ishr461R0xNa2F LkLaprqoWmh4NoQfUaoN2Gl4QR9chcuUGhUS0Q11EanDC6ILmcuYbk/3ijqebBTs/+Yu UI7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:ironport-sdr:ironport-sdr; bh=su0MUu8Z0gHgEpvtJ1HntjywyoHO9jZuH+8iqi5JKPo=; b=TAMWaneeBxG6w7ZN+30jZeQ8fSMTfVZzJ82yNWvTBJFnli6hoJqz9i8+7/FTStHchW 2iJNUujttjda2OB7jRRh2H9cHj1q5X+j02wnvlhr/JK+51uWuhOrRtAGyhO+iX9WjW89 9X66pEhUyyvSarlphba/bFfiHR20vlpLxJCdujVrj0GiKYnQELAcRZC3qviqEk5hLCHr q3zK0tQayIZRULehCaEEX2A/zD3rxwkd9MiteLM9MxAjlBnQgdGo1lYAVvaNbj5/S7rx tm/9kcEeyp3f36m3NIiDgM2ea8kyFUnh/pJae1NzAhtlvjKUKxep7gQ7H55Hdpf4DgeV xURw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id n2si656093edr.39.2021.06.09.14.13.42; Wed, 09 Jun 2021 14:14:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229914AbhFIVO0 (ORCPT + 99 others); Wed, 9 Jun 2021 17:14:26 -0400 Received: from mga18.intel.com ([134.134.136.126]:18022 "EHLO mga18.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229548AbhFIVOZ (ORCPT ); Wed, 9 Jun 2021 17:14:25 -0400 IronPort-SDR: jylLqfOjak87JGI0G6Tgx0beHymWh+Ewjvyg99FWYe8MRtl78/vqztJ2OwtrZF82lGQOgAVWq/ zzUTAG/qhUxg== X-IronPort-AV: E=McAfee;i="6200,9189,10010"; a="192485920" X-IronPort-AV: E=Sophos;i="5.83,261,1616482800"; d="scan'208";a="192485920" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jun 2021 14:12:29 -0700 IronPort-SDR: cjLUL8EoPePaY+f8THIdsxm7jG++GLJDyeFxYJEWij/IVSbLHi+TvkJe8sSS6kW+elSFK7cMPl dV477ODI9TSQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,261,1616482800"; d="scan'208";a="419416308" Received: from gupta-dev2.jf.intel.com (HELO gupta-dev2.localdomain) ([10.54.74.119]) by orsmga002.jf.intel.com with ESMTP; 09 Jun 2021 14:12:29 -0700 Date: Wed, 9 Jun 2021 14:12:38 -0700 From: Pawan Gupta To: Thomas Gleixner , Borislav Petkov Cc: Jonathan Corbet , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , x86@kernel.org, "H. Peter Anvin" , "Paul E. McKenney" , Randy Dunlap , Andrew Morton , "Maciej W. Rozycki" , Viresh Kumar , Vlastimil Babka , Tony Luck , Paolo Bonzini , Sean Christopherson , Kyung Min Park , Fenghua Yu , Ricardo Neri , Tom Lendacky , Juergen Gross , Krish Sadhukhan , Kan Liang , Joerg Roedel , Victor Ding , Srinivas Pandruvada , Pawan Gupta , Brijesh Singh , Dave Hansen , Mike Rapoport , Anthony Steinhauser , Anand K Mistry , Andi Kleen , Miguel Ojeda , Nick Desaulniers , Joe Perches , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org Subject: [PATCH 2/4] perf/x86/intel: Do not deploy workaround when TSX is deprecated Message-ID: <4926973a8b0b2ed78217add01b5c459a92f0d511.1623272033.git-series.pawan.kumar.gupta@linux.intel.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Earlier workaround added by commit 400816f60c54 ("perf/x86/intel: Implement support for TSX Force Abort") for perf counter interactions [1] are not required on some client systems which received a microcode update that deprecates TSX. Bypass the perf workaround when such microcode is enumerated. [1] Performance Monitoring Impact of IntelĀ® Transactional Synchronization Extension Memory http://cdrdv2.intel.com/v1/dl/getContent/604224 Signed-off-by: Pawan Gupta Reviewed-by: Andi Kleen Reviewed-by: Tony Luck Tested-by: Neelima Krishnan --- arch/x86/events/intel/core.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c index e28892270c58..b5953e1e59a2 100644 --- a/arch/x86/events/intel/core.c +++ b/arch/x86/events/intel/core.c @@ -6016,10 +6016,24 @@ __init int intel_pmu_init(void) intel_pmu_pebs_data_source_skl(pmem); if (boot_cpu_has(X86_FEATURE_TSX_FORCE_ABORT)) { - x86_pmu.flags |= PMU_FL_TFA; - x86_pmu.get_event_constraints = tfa_get_event_constraints; - x86_pmu.enable_all = intel_tfa_pmu_enable_all; - x86_pmu.commit_scheduling = intel_tfa_commit_scheduling; + u64 msr; + + rdmsrl(MSR_TSX_FORCE_ABORT, msr); + /* Systems that enumerate CPUID.RTM_ALWAYS_ABORT or + * support MSR_TSX_FORCE_ABORT[SDV_ENABLE_RTM] bit have + * TSX deprecated by default. TSX force abort hooks are + * not required on these systems. + * + * Only deploy the workaround when older microcode is + * detected. + */ + if (!boot_cpu_has(X86_FEATURE_RTM_ALWAYS_ABORT) && + !(msr & MSR_TFA_SDV_ENABLE_RTM)) { + x86_pmu.flags |= PMU_FL_TFA; + x86_pmu.get_event_constraints = tfa_get_event_constraints; + x86_pmu.enable_all = intel_tfa_pmu_enable_all; + x86_pmu.commit_scheduling = intel_tfa_commit_scheduling; + } } pr_cont("Skylake events, "); -- git-series 0.9.1