From: David S. Miller Date: Thu, 28 Jul 2011 03:46:25 +0000 (-0700) Subject: sparc: Don't do expensive hypervisor PCR write unless necessary. X-Git-Tag: v3.0.2~26 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=ce840177aaadf72f7d0fc7619bcbc12e4e8129bf;p=karo-tx-linux.git sparc: Don't do expensive hypervisor PCR write unless necessary. [ Upstream commit 314ff52727fe94dfbe07f3a9a489ab3ca8d8df5a ] The hypervisor call is only necessary if hypervisor events are being requested. So if we're not tracking hypervisor events, simply do a direct register write. Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- diff --git a/arch/sparc/kernel/pcr.c b/arch/sparc/kernel/pcr.c index 8ac23e660080..878c6824c732 100644 --- a/arch/sparc/kernel/pcr.c +++ b/arch/sparc/kernel/pcr.c @@ -80,8 +80,11 @@ static void n2_pcr_write(u64 val) { unsigned long ret; - ret = sun4v_niagara2_setperf(HV_N2_PERF_SPARC_CTL, val); - if (ret != HV_EOK) + if (val & PCR_N2_HTRACE) { + ret = sun4v_niagara2_setperf(HV_N2_PERF_SPARC_CTL, val); + if (ret != HV_EOK) + write_pcr(val); + } else write_pcr(val); }