[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [V0 PATCH 2/6] AMD-PVH: cpuid intercept
Call pv_cpuid for pvh cpuid intercept. Note, we modify svm_vmexit_do_cpuid instead of the intercept switch because the guest eip needs to be adjusted for pvh also. Signed-off-by: Mukesh Rathor <mukesh.rathor@xxxxxxxxxx> --- xen/arch/x86/hvm/svm/svm.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c index 71b8a6a..4ff4a96 100644 --- a/xen/arch/x86/hvm/svm/svm.c +++ b/xen/arch/x86/hvm/svm/svm.c @@ -1517,18 +1517,22 @@ static void svm_vmexit_do_cpuid(struct cpu_user_regs *regs) if ( (inst_len = __get_instruction_length(current, INSTR_CPUID)) == 0 ) return; - eax = regs->eax; - ebx = regs->ebx; - ecx = regs->ecx; - edx = regs->edx; - - svm_cpuid_intercept(&eax, &ebx, &ecx, &edx); + if ( is_pvh_vcpu(current) ) + pv_cpuid(regs); + else + { + eax = regs->eax; + ebx = regs->ebx; + ecx = regs->ecx; + edx = regs->edx; - regs->eax = eax; - regs->ebx = ebx; - regs->ecx = ecx; - regs->edx = edx; + svm_cpuid_intercept(&eax, &ebx, &ecx, &edx); + regs->eax = eax; + regs->ebx = ebx; + regs->ecx = ecx; + regs->edx = edx; + } __update_guest_eip(regs, inst_len); } -- 1.8.3.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |