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

Re: [Xen-devel] do_iret bug in xen


  • To: "Ian Campbell" <Ian.Campbell@xxxxxxxxxx>
  • From: "Ashish Bijlani" <ashish.bijlani@xxxxxxxxx>
  • Date: Tue, 27 Nov 2007 18:30:55 -0500
  • Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
  • Delivery-date: Tue, 27 Nov 2007 15:31:33 -0800
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=mnkSqATYOJevqmaI3D0ITBzU54DSw3Jkcim6TqQwyuCUPQ3+73DCjD5TpZ5JhU+VvcNJTtHfGEw5G2kCo8OsF0cfHy+tTjenlIBBS2f8WdZ79YIfXNwdwSBt4+rGVB866j7yzdBQrB3EvecD/l8z6IdjX5pKX64XQz2V5gEIUC0=
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

yeah but the do_iret function is done on behalf of a guest, therefore do_iret function forces user cs and user ss

code excerpt
"
    regs->rip    = iret_saved.rip;
    regs->cs     = iret_saved.cs | 3; /* force guest privilege */
    regs->rflags = (iret_saved.rflags & ~(EF_IOPL|EF_VM)) | EF_IE;
    regs->rsp    = iret_saved.rsp;
    regs->ss     = iret_saved.ss | 3; /* force guest privilege */
"
this can cause ret_from_intr go to test_all_events and finally go to __enter_scheduler

-a

On Nov 27, 2007 6:17 PM, Ian Campbell <Ian.Campbell@xxxxxxxxxx> wrote:

On Tue, 2007-11-27 at 17:41 -0500, Ashish Bijlani wrote:
> "cpumask_raise_softirq(mask, SCHEDULE_SOFTIRQ)" sends an IPI to the
> target processor, this can cause current to change.

No it can't.

The IPI causes smp_event_check_interrupt() to be called which just ACKs
the IPI and returns via ret_from_intr (in entry.S). It is only if a
guest was interrupted that we go down the test_all_events path which
processes softirqs. If it was Xen which was interrupted then we go to
restore_all_xen which just returns to Xen. In this case Xen will
eventually return to the guest and take the test_all_events path and
process the softirq.

Ian.


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

 


Rackspace

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