|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] vm_event: consolidate hvm_event_fill_regs and p2m_vm_event_fill_regs
On 11/02/2016 21:05, Tamas K Lengyel wrote:
> diff --git a/xen/arch/x86/vm_event.c b/xen/arch/x86/vm_event.c
> index 08d678a..fa5d154 100644
> --- a/xen/arch/x86/vm_event.c
> +++ b/xen/arch/x86/vm_event.c
> @@ -122,6 +122,64 @@ void vm_event_set_registers(struct vcpu *v,
> vm_event_response_t *rsp)
> v->arch.user_regs.eip = rsp->data.regs.x86.rip;
> }
>
> +void vm_event_fill_regs(vm_event_request_t *req)
> +{
> + const struct cpu_user_regs *regs = guest_cpu_user_regs();
> + struct segment_register seg;
> + struct hvm_hw_cpu ctxt;
> + struct vcpu *curr = current;
> +
> + req->data.regs.x86.rax = regs->eax;
> + req->data.regs.x86.rcx = regs->ecx;
> + req->data.regs.x86.rdx = regs->edx;
> + req->data.regs.x86.rbx = regs->ebx;
> + req->data.regs.x86.rsp = regs->esp;
> + req->data.regs.x86.rbp = regs->ebp;
> + req->data.regs.x86.rsi = regs->esi;
> + req->data.regs.x86.rdi = regs->edi;
> +
> + req->data.regs.x86.r8 = regs->r8;
> + req->data.regs.x86.r9 = regs->r9;
> + req->data.regs.x86.r10 = regs->r10;
> + req->data.regs.x86.r11 = regs->r11;
> + req->data.regs.x86.r12 = regs->r12;
> + req->data.regs.x86.r13 = regs->r13;
> + req->data.regs.x86.r14 = regs->r14;
> + req->data.regs.x86.r15 = regs->r15;
> +
> + req->data.regs.x86.rflags = regs->eflags;
> + req->data.regs.x86.rip = regs->eip;
> + req->data.regs.x86.dr7 = curr->arch.debugreg[7];
I think there is a %dr7 handling issue here. For an HVM guests, this
field is only valid when you are not in the context of the guest, as it
lives in the vmcs/vmcs. (PV guests keep it synchronously up to date)
Normally, the vcpu context switch code takes care of calling
{vmx,svm}_{save,restore}_dr(), which is why migration works fine (not
permitted in the context of the guest), you are now introducing a new path.
I think you need to modify {vmx,svm}_{vmcb,vmcs}_save() to do a
selective {vmx,svm}_save_dr() if v == current.
~Andrew
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |