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

Re: [Xen-devel] [PATCH] Fix the mistake for #BP and #OF exception handler



> -----Original Message-----
> From: Keir Fraser [mailto:keir.xen@xxxxxxxxx]
> Sent: Saturday, May 12, 2012 2:50 PM
> To: Hao, Xudong; Jan Beulich (JBeulich@xxxxxxxx)
> Cc: Aravindh Puthiyaparambil; Dong, Eddie; Zhang, Xiantao; Nakajima, Jun;
> xen-devel (xen-devel@xxxxxxxxxxxxx)
> Subject: Re: [Xen-devel] [PATCH] Fix the mistake for #BP and #OF exception
> handler
> 
> On 12/05/2012 07:38, "Hao, Xudong" <xudong.hao@xxxxxxxxx> wrote:
> 
> > Fix the mistake for breakpoint exception(#BP; generated by INT3), overflow
> > exception(#OF; generated by INTO) and int n instruction emulation.
> >
> > #BP and #OF should use software exception, which int n instruction should
> use
> > software interrupt.
> 
> This patch doesn't fix #BP, which is already using SW_EXCEPTION. It does
> however fix #DB, which was using SW_EXCEPTION and you fix to use
> HW_EXCEPTION.
> 
Yes, it fixed #DB, #OF and int n , not for #BP.

> Also your new comment at the top of the function is a bit wishful. It may
> not be suitable to use this function for INT nn, but it *is* making a
> half-arsed attempt at handling it anyway, and it is being called for that
> purpose. Perhaps the comment should admit this, but indicate that this needs
> to go away during 4.3 development?
> 
No, the new comment on the top of function is a little suitable, I'll correct 
it.

> Apart from these gripes, your code changes look correct. If this tests okay
> for others, we can check this in when you provide a fixed changeset
> description and code comment.
> 
I'll supply next version to modify the description and comment.


>  -- Keir
> 
> > Signed-off-by: Eddie Dong<eddie.dong@xxxxxxxxx>
> > Signed-off-by: Xudong Hao <xudong.hao@xxxxxxxxx>
> >
> > diff -r 98fe3b2a572d xen/arch/x86/hvm/vmx/vmx.c
> > --- a/xen/arch/x86/hvm/vmx/vmx.c Tue May 01 14:20:37 2012 +0100
> > +++ b/xen/arch/x86/hvm/vmx/vmx.c Sun May 12 03:14:04 2013 +0800
> > @@ -1350,6 +1350,15 @@ static void __vmx_inject_exception(int t
> >          curr->arch.hvm_vmx.vmx_emulate = 1;
> >  }
> >
> > +/*
> > + * Generate the virtual event to guest.
> > + * NOTE:
> > + *    This is for processor execution generated exceptions,
> > + * and INT 3(CC), INTO (CE) instruction emulation. It is
> > + * not intended for the delivery of event due to emulation
> > + * of INT nn (CD nn) instruction, which should use
> > + * X86_EVENTTYPE_SW_INTERRUPT as interrupt type.
> > + */
> >  void vmx_inject_hw_exception(int trap, int error_code)
> >  {
> >      unsigned long intr_info;
> > @@ -1365,7 +1374,6 @@ void vmx_inject_hw_exception(int trap, i
> >      switch ( trap )
> >      {
> >      case TRAP_debug:
> > -        type = X86_EVENTTYPE_SW_EXCEPTION;
> >          if ( guest_cpu_user_regs()->eflags & X86_EFLAGS_TF )
> >          {
> >              __restore_debug_registers(curr);
> > @@ -1387,10 +1395,15 @@ void vmx_inject_hw_exception(int trap, i
> >          __vmwrite(VM_ENTRY_INSTRUCTION_LEN, 1); /* int3 */
> >          break;
> >
> > +    case TRAP_overflow:
> > +        type = X86_EVENTTYPE_SW_EXCEPTION;
> > +        __vmwrite(VM_ENTRY_INSTRUCTION_LEN, 1); /* into */
> > +        break;
> > +
> >      default:
> >          if ( trap > TRAP_last_reserved )
> >          {
> > -            type = X86_EVENTTYPE_SW_EXCEPTION;
> > +            type = X86_EVENTTYPE_SW_INTERRUPT;
> >              __vmwrite(VM_ENTRY_INSTRUCTION_LEN, 2); /* int imm8
> */
> >          }
> >          break;
> >
> > _______________________________________________
> > Xen-devel mailing list
> > Xen-devel@xxxxxxxxxxxxx
> > http://lists.xen.org/xen-devel
> 


_______________________________________________
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®.