[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 2/2] vm_event: consolidate hvm_event_fill_regs and p2m_vm_event_fill_regs
>>> On 12.02.16 at 11:19, <rcojocaru@xxxxxxxxxxxxxxx> wrote: > On 02/12/2016 11:57 AM, Jan Beulich wrote: >>>>> On 12.02.16 at 01:22, <tlengyel@xxxxxxxxxxx> wrote: >>> --- a/xen/arch/x86/vm_event.c >>> +++ b/xen/arch/x86/vm_event.c >>> @@ -122,6 +122,65 @@ 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; >>> + >>> + if ( !is_hvm_domain(curr->domain) ) >>> + return; >> >> No such check existed in either of the two original functions. Why is >> it needed all of the sudden? And if it is needed, why do the other >> fields not get filled (as far as possible at least) for PV guests? > > I can't speak for Tamas, but I suspect the check has been placed there > because calls to hvm_funcs.save_cpu_ctxt(curr, &ctxt) and > hvm_get_segment_register(curr, x86_seg_fs, &seg) follow, and he's put > vm_event_fill_regs() in xen/arch/x86/vm_event.c (a previous function was > called hvm_event_fill_regs(), in arch/x86/hvm/event.c, so no checking > for HVM was needed). > > I don't think the check is needed for the current codepaths, but since > the code has been moved to xen/arch/x86/ the question about future PV > events is fair. In which case ASSERT(is_hvm_vcpu(curr)) would be the common way to document this (at once avoiding the open coding of is_hvm_vcpu()). Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |