[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Sun, 10 Oct 2010 14:40:50 +0200
From: Avi Kivity <avi@...hat.com>
To: Gleb Natapov <gleb@...hat.com>
CC: kvm@...r.kernel.org, linux-mm@...ck.org,
linux-kernel@...r.kernel.org, mingo@...e.hu,
a.p.zijlstra@...llo.nl, tglx@...utronix.de, hpa@...or.com,
riel@...hat.com, cl@...ux-foundation.org, mtosatti@...hat.com
Subject: Re: [PATCH v6 08/12] Handle async PF in a guest.
On 10/10/2010 09:56 AM, Gleb Natapov wrote:
> On Sat, Oct 09, 2010 at 08:48:15PM +0200, Avi Kivity wrote:
> > On 10/07/2010 08:03 PM, Gleb Natapov wrote:
> > >> >>
> > >> >Host side keeps track of outstanding apfs and will not send apf for the
> > >> >same phys address twice. It will halt vcpu instead.
> > >>
> > >> What about different pages, running the scheduler code?
> > >>
> > >We can get couple of nested apfs, just like we can get nested
> > >interrupts. Since scheduler disables preemption second apf will halt.
> >
> > How much is a couple?
> >
> > Consider:
> >
> > SIGSTOP
> > Entire process swapped out
> > SIGCONT
> >
> > We can get APF's on the current code, the scheduler code, the stack,
> > any debugging code in between (e.g. ftrace), and the page tables for
> > all of these.
> >
> Lets count them all. Suppose guest is in a userspace process code and
> guest memory is completely swapped out. Guest starts to run and faults
> in userspace. Apf is queued but can't be delivered due to faults in
> idt and exception stack. All of them will be taken synchronously due
> to event pending check. After apf is delivered any fault in apf code
> will be takes synchronously since interrupt are disabled. Just before
> calling schedule() interrupts are enabled, so next pf that will happen
> during call to schedule() will be taken asynchronously. Which will cause
> another call to schedule() at which point vcpu will be halted since two
> apfs happened at the same address. So I counted two of them.
>
Ok. Feels weird, but I guess this is fine.
--
error compiling committee.c: too many arguments to function
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists