[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xen: filter APERFMPERF feature for kernel usage
On Tue, May 29, 2012 at 01:07:31PM +0200, Andre Przywara wrote: > Xen PV kernels allow access to the APERF/MPERF registers to read the > effective frequency. Access to the MSRs is however redirected to the > currently scheduled physical CPU, making consecutive read and > compares unreliable. In addition each rdmsr traps into the hypervisor. > So to avoid bogus readouts and expensive traps, disable the kernel > internal feature flag for APERF/MPERF if running under Xen. > This will > a) remove the aperfmperf flag from /proc/cpuinfo > b) not mislead the power scheduler (arch/x86/kernel/cpu/sched.c) to > use the feature to improve scheduling (by default disabled) > c) not mislead the cpufreq driver to use the MSRs > > This does not cover userland programs which access the MSRs via the > device file interface, but this will be addressed separately. > > Signed-off-by: Andre Przywara <andre.przywara@xxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx # v3.0+ applied. > --- > arch/x86/xen/enlighten.c | 8 ++++++++ > 1 files changed, 8 insertions(+), 0 deletions(-) > > diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c > index 95dccce..dfbe1af 100644 > --- a/arch/x86/xen/enlighten.c > +++ b/arch/x86/xen/enlighten.c > @@ -207,6 +207,9 @@ static void __init xen_banner(void) > xen_feature(XENFEAT_mmu_pt_update_preserve_ad) ? " > (preserve-AD)" : ""); > } > > +#define CPUID_THERM_POWER_LEAF 6 > +#define APERFMPERF_PRESENT 0 > + > static __read_mostly unsigned int cpuid_leaf1_edx_mask = ~0; > static __read_mostly unsigned int cpuid_leaf1_ecx_mask = ~0; > > @@ -240,6 +243,11 @@ static void xen_cpuid(unsigned int *ax, unsigned int *bx, > *dx = cpuid_leaf5_edx_val; > return; > > + case CPUID_THERM_POWER_LEAF: > + /* Disabling APERFMPERF for kernel usage */ > + maskecx = ~(1 << APERFMPERF_PRESENT); > + break; > + > case 0xb: > /* Suppress extended topology stuff */ > maskebx = 0; > -- > 1.7.4.4 > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |