Re: [Xen-devel] Stop the continuous flood of (XEN) traps.c:2432:d0Domain attempted WRMSR ..

From: Pasi Kärkkäinen
Date: Wed Mar 28 2012 - 18:09:24 EST


On Wed, Mar 28, 2012 at 04:29:07PM -0400, Konrad Rzeszutek Wilk wrote:
> > >
> > > Jesse, and Matthew,
> > >
> > > Is there a way to make the intel_ips.c driver be in a "low-power" state?
> > >
> > > My first thought about fixing this was that we could allow the
> > > hypervisor to allow those RDMSR but the Linux kernel has no power to
> > > actually influence the power management (as the hypervisor is in charge
> > > of that) - so would the driver be capable of just sitting back and
> > > not influencing the CPU?
> >
> > Yeah it's easy enough to turn off or disable. But it doesn't currently
> > export any knobs for controlling behavior. I don't have any issue with
> > exposing some though...
>
> Pasi,
>
> Could you test the two patches independetly of each other? Meaning
> test the Linux one without the Xen one, and vice-versa.
>

Sure, I'll give it a try during the weekend when I'm able to access the box in question.

Thanks!

-- Pasi




> diff --git a/drivers/platform/x86/intel_ips.c b/drivers/platform/x86/intel_ips.c
> index 88a98cf..7276831 100644
> --- a/drivers/platform/x86/intel_ips.c
> +++ b/drivers/platform/x86/intel_ips.c
> @@ -1407,6 +1407,10 @@ static struct ips_mcp_limits *ips_detect_cpu(struct ips_driver *ips)
> }
>
> rdmsrl(TURBO_POWER_CURRENT_LIMIT, turbo_power);
> + if (turbo_power == 0) {
> + ips->turbo_toggle_allowed = false;
> + return NULL;
> + }
> tdp = turbo_power & TURBO_TDP_MASK;
>
> /* Sanity check TDP against CPU */

> diff -r 8e2690dbec49 xen/arch/x86/traps.c
> --- a/xen/arch/x86/traps.c Sat Mar 24 13:13:49 2012 -0400
> +++ b/xen/arch/x86/traps.c Wed Mar 28 16:27:31 2012 -0400
> @@ -1746,7 +1746,8 @@ void (*pv_post_outb_hook)(unsigned int p
> static inline uint64_t guest_misc_enable(uint64_t val)
> {
> val &= ~(MSR_IA32_MISC_ENABLE_PERF_AVAIL |
> - MSR_IA32_MISC_ENABLE_MONITOR_ENABLE);
> + MSR_IA32_MISC_ENABLE_MONITOR_ENABLE |
> + MSR_IA32_MISC_ENABLE_TURBO);
> val |= MSR_IA32_MISC_ENABLE_BTS_UNAVAIL |
> MSR_IA32_MISC_ENABLE_PEBS_UNAVAIL |
> MSR_IA32_MISC_ENABLE_XTPR_DISABLE;
> diff -r 8e2690dbec49 xen/include/asm-x86/msr-index.h
> --- a/xen/include/asm-x86/msr-index.h Sat Mar 24 13:13:49 2012 -0400
> +++ b/xen/include/asm-x86/msr-index.h Wed Mar 28 16:27:31 2012 -0400
> @@ -327,6 +327,7 @@
> #define MSR_IA32_MISC_ENABLE_MONITOR_ENABLE (1<<18)
> #define MSR_IA32_MISC_ENABLE_LIMIT_CPUID (1<<22)
> #define MSR_IA32_MISC_ENABLE_XTPR_DISABLE (1<<23)
> +#define MSR_IA32_MISC_ENABLE_TURBO (1<<38)
>
> #define MSR_IA32_TSC_DEADLINE 0x000006E0
> #define MSR_IA32_ENERGY_PERF_BIAS 0x000001b0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/