[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] cpufreq: Always return successfully from cpufreq MSR traps
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1197632222 0 # Node ID 136f80d219588b5e45a5d13e19dd51a2401504f5 # Parent 3ee37b6279b76c58f49a056c44f413bf8cc030a9 cpufreq: Always return successfully from cpufreq MSR traps Signed-off-by: Mark Langsdorf <mark.langsdorf@xxxxxxx> Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx> --- xen/arch/x86/traps.c | 31 ++++++++++++++++++++----------- 1 files changed, 20 insertions(+), 11 deletions(-) diff -r 3ee37b6279b7 -r 136f80d21958 xen/arch/x86/traps.c --- a/xen/arch/x86/traps.c Fri Dec 14 10:48:18 2007 +0000 +++ b/xen/arch/x86/traps.c Fri Dec 14 11:37:02 2007 +0000 @@ -1878,7 +1878,7 @@ static int emulate_privileged_op(struct eax = regs->eax; edx = regs->edx; res = ((u64)edx << 32) | eax; - switch ( regs->ecx ) + switch ( (u32)regs->ecx ) { #ifdef CONFIG_X86_64 case MSR_FS_BASE: @@ -1916,15 +1916,19 @@ static int emulate_privileged_op(struct case MSR_K8_PSTATE5: case MSR_K8_PSTATE6: case MSR_K8_PSTATE7: - if ( (cpufreq_controller != FREQCTL_dom0_kernel) || - (boot_cpu_data.x86_vendor != X86_VENDOR_AMD) || - wrmsr_safe(regs->ecx, eax, edx) ) + if ( boot_cpu_data.x86_vendor != X86_VENDOR_AMD ) goto fail; + if ( cpufreq_controller != FREQCTL_dom0_kernel ) + break; + if ( wrmsr_safe(regs->ecx, eax, edx) != 0 ) + goto fail; break; case MSR_IA32_PERF_CTL: - if ( (cpufreq_controller != FREQCTL_dom0_kernel) || - (boot_cpu_data.x86_vendor != X86_VENDOR_INTEL) || - wrmsr_safe(regs->ecx, eax, edx) ) + if ( boot_cpu_data.x86_vendor != X86_VENDOR_INTEL ) + goto fail; + if ( cpufreq_controller != FREQCTL_dom0_kernel ) + break; + if ( wrmsr_safe(regs->ecx, eax, edx) != 0 ) goto fail; break; default: @@ -1944,7 +1948,7 @@ static int emulate_privileged_op(struct break; case 0x32: /* RDMSR */ - switch ( regs->ecx ) + switch ( (u32)regs->ecx ) { #ifdef CONFIG_X86_64 case MSR_FS_BASE: @@ -1979,9 +1983,14 @@ static int emulate_privileged_op(struct case MSR_K8_PSTATE5: case MSR_K8_PSTATE6: case MSR_K8_PSTATE7: - if ( (cpufreq_controller != FREQCTL_dom0_kernel) || - (boot_cpu_data.x86_vendor != X86_VENDOR_AMD) || - rdmsr_safe(regs->ecx, regs->eax, regs->edx) ) + if ( boot_cpu_data.x86_vendor != X86_VENDOR_AMD ) + goto fail; + if ( cpufreq_controller != FREQCTL_dom0_kernel ) + { + regs->eax = regs->edx = 0; + break; + } + if ( rdmsr_safe(regs->ecx, regs->eax, regs->edx) != 0 ) goto fail; break; case MSR_EFER: _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |