5a49a4e63b
22045-python27-compat.patch Thu Nov 11 18:44:48 CST 2010 - cyliu@novell.com - bnc#641144 - FV Xen VM running windows or linux cannot write to virtual floppy drive bdrv_default_rwflag.patch - fate#310510 - fix xenpaging xenpaging.optimize_p2m_mem_paging_populate.patch xenpaging.HVMCOPY_gfn_paged_out.patch - bnc#649864 - automatic numa cpu placement of xen conflicts with cpupools 22326-cpu-pools-numa-placement.patch - fate#310510 - fix xenpaging xenpaging.populate_only_if_paged.patch - revert logic, populate needs to happen unconditionally xenpaging.p2m_mem_paging_populate_if_p2m_ram_paged.patch - invalidate current mfn only if gfn is not in flight or done xenpaging.mem_event_check_ring-free_requests.patch - print info only if 1 instead of 2 slots are free xenpaging.guest_remove_page.patch - check mfn before usage in resume function xenpaging.machine_to_phys_mapping.patch - check mfn before usage in resume function - bnc#552115 - Remove target discovery in block-iscsi OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=82
69 lines
2.4 KiB
Diff
69 lines
2.4 KiB
Diff
# HG changeset patch
|
|
# User Keir Fraser <keir@xen.org>
|
|
# Date 1286784105 -3600
|
|
# Node ID a1405385db77c7c81aac27bd88d6c4b2d90b1389
|
|
# Parent a33886146b45da46a5161a7ebed4d2f607642aee
|
|
x86: emulate MSR_IA32_UCODE_REV Intel access protocol
|
|
|
|
Intel requires a write of zeros (hence such writes now get silently
|
|
ignored) followed by a cpuid(1) followed by the actual read.
|
|
|
|
Includes some code redundancy elimination possible after the actual
|
|
change.
|
|
|
|
Signed-off-by: Jan Beulich <jbeulich@novell.com>
|
|
|
|
--- a/xen/arch/x86/traps.c
|
|
+++ b/xen/arch/x86/traps.c
|
|
@@ -2268,6 +2268,14 @@ static int emulate_privileged_op(struct
|
|
if ( wrmsr_safe(MSR_FAM10H_MMIO_CONF_BASE, eax, edx) != 0 )
|
|
goto fail;
|
|
break;
|
|
+ case MSR_IA32_UCODE_REV:
|
|
+ if ( boot_cpu_data.x86_vendor != X86_VENDOR_INTEL )
|
|
+ goto fail;
|
|
+ if ( rdmsr_safe(regs->ecx, l, h) )
|
|
+ goto fail;
|
|
+ if ( l | h )
|
|
+ goto invalid;
|
|
+ break;
|
|
case MSR_IA32_MISC_ENABLE:
|
|
if ( rdmsr_safe(regs->ecx, l, h) )
|
|
goto invalid;
|
|
@@ -2375,16 +2383,21 @@ static int emulate_privileged_op(struct
|
|
regs->eax = regs->edx = 0;
|
|
break;
|
|
}
|
|
- if ( rdmsr_safe(regs->ecx, regs->eax, regs->edx) != 0 )
|
|
- goto fail;
|
|
- break;
|
|
+ goto rdmsr_normal;
|
|
+ case MSR_IA32_UCODE_REV:
|
|
+ BUILD_BUG_ON(MSR_IA32_UCODE_REV != MSR_AMD_PATCHLEVEL);
|
|
+ if ( boot_cpu_data.x86_vendor == X86_VENDOR_INTEL )
|
|
+ {
|
|
+ if ( wrmsr_safe(MSR_IA32_UCODE_REV, 0, 0) )
|
|
+ goto fail;
|
|
+ sync_core();
|
|
+ }
|
|
+ goto rdmsr_normal;
|
|
case MSR_IA32_MISC_ENABLE:
|
|
if ( rdmsr_safe(regs->ecx, regs->eax, regs->edx) )
|
|
goto fail;
|
|
regs->eax = guest_misc_enable(regs->eax);
|
|
break;
|
|
- case MSR_EFER:
|
|
- case MSR_AMD_PATCHLEVEL:
|
|
default:
|
|
if ( rdmsr_hypervisor_regs(regs->ecx, &val) )
|
|
{
|
|
@@ -2400,6 +2413,8 @@ static int emulate_privileged_op(struct
|
|
if ( rc )
|
|
goto rdmsr_writeback;
|
|
|
|
+ case MSR_EFER:
|
|
+ rdmsr_normal:
|
|
/* Everyone can read the MSR space. */
|
|
/* gdprintk(XENLOG_WARNING,"Domain attempted RDMSR %p.\n",
|
|
_p(regs->ecx));*/
|