[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v5 8/9] x86/vm_event: Add HVM debug exception vm_events
>>> On 03.06.16 at 00:52, <tamas@xxxxxxxxxxxxx> wrote: > --- a/xen/arch/x86/hvm/vmx/vmx.c > +++ b/xen/arch/x86/hvm/vmx/vmx.c > @@ -3377,10 +3377,33 @@ void vmx_vmexit_handler(struct cpu_user_regs *regs) > HVMTRACE_1D(TRAP_DEBUG, exit_qualification); > write_debugreg(6, exit_qualification | DR_STATUS_RESERVED_ONE); > if ( !v->domain->debugger_attached ) > - vmx_propagate_intr(intr_info); > + { > + unsigned long insn_length = 0; It's insn_len further down - please try to be consistent. > + int rc; > + unsigned long trap_type = MASK_EXTR(intr_info, > + > INTR_INFO_INTR_TYPE_MASK); > + > + if( trap_type >= X86_EVENTTYPE_SW_INTERRUPT ) > + __vmread(VM_EXIT_INSTRUCTION_LEN, &insn_length); > + > + rc = hvm_monitor_debug(regs->eip, > + HVM_MONITOR_DEBUG_EXCEPTION, > + trap_type, insn_length); > + if ( !rc ) > + { > + vmx_propagate_intr(intr_info); > + break; > + } > + else if ( rc > 0 ) > + break; So you've removed the odd / hard to understand return value adjustment from hvm_monitor_debug(), but this isn't any better: What does the return value being positive really mean? And btw., no point using "else" after an unconditional "break" in the previous if(). > + } > else > + { > domain_pause_for_debugger(); > - break; > + break; > + } > + > + goto exit_and_crash; There was no such goto before, i.e. you introduce this. I'm rather hesitant to see such getting added without a good reason, and that good reason should be stated in a comment. Also it looks like the change would be easier to grok if you didn't alter the code down here, but instead inverted the earlier if: if ( unlikely(rc < 0) ) /* ... */ goto exit_and_crash; if ( !rc ) vmx_propagate_intr(intr_info); Which imo would get us closer to code being at least half way self-explanatory. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |