[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v6 5/5] x86/vm_event: Add HVM debug exception vm_events



On Fri, Jun 24, 2016 at 5:24 AM, Jan Beulich <JBeulich@xxxxxxxx> wrote:
>>>> On 24.06.16 at 13:20, <kevin.tian@xxxxxxxxx> wrote:
>>>  From: Tamas K Lengyel [mailto:tamas@xxxxxxxxxxxxx]
>>> Sent: Friday, June 24, 2016 1:07 AM
>>>
>>> diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
>>> index 03fcba7..4b69ca6 100644
>>> --- a/xen/arch/x86/hvm/vmx/vmx.c
>>> +++ b/xen/arch/x86/hvm/vmx/vmx.c
>>> @@ -3373,10 +3373,39 @@ 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_len = 0;
>>> +                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_len);
>>> +
>>> +                rc = hvm_monitor_debug(regs->eip,
>>> +                                       HVM_MONITOR_DEBUG_EXCEPTION,
>>> +                                       trap_type, insn_len);
>>> +
>>> +                /*
>>> +                 * !rc  continue normally
>>> +                 * rc > paused waiting for response, work here is done
>>
>> Did you mean "rc > 0, vcpu is paused and waiting for response..."? Please
>> make the comment clear to understand.

Yes, sure.

>>
>>> +                 * rc < error, fall-through to exit_and_crash
>>> +                 */
>>> +                if ( !rc )
>>> +                {
>>> +                    vmx_propagate_intr(intr_info);
>>> +                    break;
>>> +                }
>>> +                if ( rc > 0 )
>>> +                    break;
>>> +            }
>>>              else
>>> +            {
>>>                  domain_pause_for_debugger();
>>> -            break;
>>> +                break;
>>> +            }
>>> +
>>> +            goto exit_and_crash;
>>
>> Putting goto as the last line within a 'case' looks a bit strange. What
>> about putting goto directly under a "if ( rc < 0 )" check earlier?
>>
>>               if ( !rc )
>>                       ...
>>               if ( rc < 0 )
>>                       goto exit_and_crash;
>>       }
>>       else
>>               domain_pause_for_debugger();
>>       break;
>
> Thanks, Kevin - indeed that's exactly what I had asked for already
> on the previous iteration.
>

I'm OK with adding the rc < 0 case, it's just that the fall-through
style is already used for handling the int3 events for example. Should
I fix that too while I'm at it so the code is consistent?

Tamas

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.