WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] current not very current (vs curr_vcpu)

On Fri, 19 Feb 2010 08:12:18 +0000
Keir Fraser <keir.fraser@xxxxxxxxxxxxx> wrote:

> On 19/02/2010 04:21, "Mukesh Rathor" <mukesh.rathor@xxxxxxxxxx> wrote:
> 
> > I noticed while debugging something that current is not pointing to
> > the current vcpu upon serial interrupt. The regs->SP clearly shows
> > 64bit dom0 stack, guest_mode(regs) returns 1, but current is
> > pointing to idle vcpu. I'm not able to figure how this is possible.
> > I can come up with scenario where dom0.vcpu yields cpu to idle vcpu
> > in which case curr_vcpu will point to dom0.vcpu and current to idle
> > vcpu. But in that case guest_mode(regs) will be false, and regs.SP
> > will show hyp stack. Correct?
> > 
> > Am I correct that if guest_mode() then current should always point
> > to guest vcpu? If yes, then I will debug this further.
> 
> The behaviour you see is expected. Guest_mode() is meaningless when
> running an idle vcpu. This is because the guest regs at the bottom of
> the stack are junk for an idle vcpu (and also we do lazy state
> synchronisation, so they may be the valid active regs for the last
> scheduled non-idle vcpu).
> 
>  -- Keir
> 

Yes, but my point is it doesn't appear to be running idle vcpu as
indicated by regs->rsp and regs->rip. They both point to dom0 context.
This from printk in ns16550_interrupt().

To rephrase the question, if regs->rip and regs->rsp show guest context
in do_IRQ(), then current must always point to guest vcpu, correct?

thanks,
Mukesh

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