Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751991AbbEGQ7m (ORCPT ); Thu, 7 May 2015 12:59:42 -0400 Received: from mga03.intel.com ([134.134.136.65]:19723 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751459AbbEGQ7j (ORCPT ); Thu, 7 May 2015 12:59:39 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.13,384,1427785200"; d="scan'208";a="567893716" From: Joe Konno To: linux-pm@vger.kernel.org Cc: rjw@rjwysocki.net, viresh.kumar@linaro.org, linux-kernel@vger.kernel.org, kristen@linux.intel.com Subject: [PATCH] intel_pstate: set BYT MSR with wrmsrl_on_cpu() Date: Thu, 7 May 2015 09:59:39 -0700 Message-Id: <1431017979-28349-1-git-send-email-joe.konno@linux.intel.com> X-Mailer: git-send-email 2.4.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1566 Lines: 41 From: Joe Konno In instances where the default cpufreq governor is Performance, reading from MSR 0x199 on an applicable multi-core Atom system saw boot-to-boot variability in the P-State value set to each logical core. Sometimes only one logical core would be set properly, other times two or three. There was an assumption in the code that only a thread on the intended logical core would be calling the wrmsrl() function. That was disproven during debug, as cpufreq, at init, was not always calling from the same as the logical core it targeted. Thus, use wrmsrl_on_cpu() instead, as done in the core_set_pstate() function. For: LCK-1822 Fixes: 007bea098b86 ("intel_pstate: Add setting voltage value for baytrail P states.") Signed-off-by: Joe Konno --- drivers/cpufreq/intel_pstate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c index 6414661ac1c4..c45d274a75c8 100644 --- a/drivers/cpufreq/intel_pstate.c +++ b/drivers/cpufreq/intel_pstate.c @@ -535,7 +535,7 @@ static void byt_set_pstate(struct cpudata *cpudata, int pstate) val |= vid; - wrmsrl(MSR_IA32_PERF_CTL, val); + wrmsrl_on_cpu(cpudata->cpu, MSR_IA32_PERF_CTL, val); } #define BYT_BCLK_FREQS 5 -- 2.4.0 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/