[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [V0 PATCH] SVM: set/unset TF flag for single_step
Noticed on AMD (cpu family : 16, model : 2), that SVM does not honor arch.hvm_vcpu.single_step flag. When arch.hvm_vcpu.single_step is set on VMX, it sets MTF. Since there is no MTF equivalent on AMD, it must set EFLAGS.TF. Also strangely, when SVM VMEXIT_EXCEPTION_DB occurs, the TF flag is not cleared. This patch addresses that too. Signed-off-by: Mukesh Rathor <mukesh.rathor@xxxxxxxxxx> --- xen/arch/x86/hvm/svm/intr.c | 6 ++++++ xen/arch/x86/hvm/svm/svm.c | 2 ++ 2 files changed, 8 insertions(+) diff --git a/xen/arch/x86/hvm/svm/intr.c b/xen/arch/x86/hvm/svm/intr.c index 023151a..28d2c6d 100644 --- a/xen/arch/x86/hvm/svm/intr.c +++ b/xen/arch/x86/hvm/svm/intr.c @@ -139,6 +139,12 @@ void svm_intr_assist(void) struct hvm_intack intack; enum hvm_intblk intblk; + if ( unlikely(v->arch.hvm_vcpu.single_step) ) + { + guest_cpu_user_regs()->eflags |= X86_EFLAGS_TF; + return; + } + /* Crank the handle on interrupt state. */ pt_update_irq(v); diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c index 76616ac..8addb94 100644 --- a/xen/arch/x86/hvm/svm/svm.c +++ b/xen/arch/x86/hvm/svm/svm.c @@ -2350,6 +2350,8 @@ void svm_vmexit_handler(struct cpu_user_regs *regs) case VMEXIT_EXCEPTION_DB: if ( !v->domain->debugger_attached ) goto exit_and_crash; + else + regs->eflags &= ~X86_EFLAGS_TF; domain_pause_for_debugger(); break; -- 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 |