Re: [PATCH v3 07/15] KVM: MMU: introduce nulls desc

Marcelo Tosatti
2013-11-25T18:14:26Z

GOn Mon, Nov 25, 2013 at 04:29:28PM +0200, Gleb Natapov wrote:
> On Mon, Nov 25, 2013 at 12:23:51PM -0200, Marcelo Tosatti wrote:
> > On Mon, Nov 25, 2013 at 02:48:37PM +0200, Avi Kivity wrote:
> > > On Mon, Nov 25, 2013 at 8:11 AM, Xiao Guangrong
> > > <xiaoguangrong@linux.vnet.ibm.com> wrote:
> > > >
> > > > On Nov 23, 2013, at 3:14 AM, Marcelo Tosatti <mtosatti@redhat.com> wrote:
> > >
> > > <snip complicated stuff about parent_pte>
> > >
> > > I'm not really following, but note that parent_pte predates EPT (and
> > > the use of rcu in kvm), so all the complexity that is the result of
> > > trying to pack as many list entries into a cache line can be dropped.
> > > Most setups now would have exactly one list entry, which is handled
> > > specially antyway.
> > >
> > > Alternatively, the trick of storing multiple entries in one list entry
> > > can be moved to generic code, it may be useful to others.
> >
> > Yes, can the lockless list walking code be transformed into generic
> > single-linked list walking? So the correctness can be verified
> > independently, and KVM becomes a simple user of that interface.
> >
> The code will become simpler but the problem of never ending walk of
> rculist_nulls will remain.

Yes. Hopefully it can be fixed in some way.

> > The simpler version is to maintain lockless walk on depth-1 rmap entries
> > (and grab the lock once depth-2 entry is found).
> And release it between each rmap walk or at the very end of write
> protect?

Or keep it locked until 10 consecutive sptes with depth 1 are found.