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

Re: [Xen-devel] [PATCH RESEND v5 4/6] xen/arm: Implement virtual-linear page table for guest p2m mapping in live migration



On Mon, 2013-11-18 at 12:47 +0900, Jaeyong Yoo wrote:
> > > > +
> > > > +    second_lvl_page = alloc_domheap_pages(NULL, 1, 0);
> > >
> > > There'd be no harm in allocating the two pages separately I think, and
> > > avoiding the possiblilty of an order 1 allocation failing.
> > >
> > > But if you do allocate them contiguously then d->arch.dirty.second_lvl
> > > can be a simple lpae_t * and you can just access offsets 0..1023
> > > without worrying about managing the array of two pointers.
> > >
> > > As it stands I think you have the worst of both worlds.
> > >
> > > We could also just consider allocating all firstlevel p2m pages from
> > > the xenheap instead of the domheap.
> > 
> > OK. xenheap allocation sounds good. I was not sure if I can use xenheap
> > for the one that looks like 'domain-specific' purpose. If it's OK, it
> > would be much better code readability.
> > 
> > >
> > > > +    if ( second_lvl_page == NULL )
> > > > +        return -ENOMEM;
> > > > +
> > > > +    /* First level p2m is 2 consecutive pages */
> > > > +    d->arch.dirty.second_lvl[0] = map_domain_page_global(
> > > > +
> page_to_mfn(second_lvl_page) );
> > > > +    d->arch.dirty.second_lvl[1] = map_domain_page_global(
> > > > +
> > > > + page_to_mfn(second_lvl_page+1) );
> > > > +
> > > > +    first[0] = __map_domain_page(p2m->first_level);
> > > > +    first[1] = __map_domain_page(p2m->first_level+1);
> > > > +    for ( i = gp2m_start_index; i < gp2m_end_index; ++i )
> > >
> > > Can't this just be a loop over 0..1023 and avoid all this modular
> > > arithmetic:
> > 
> > Sure.
> 
> CTTOI, since p2m->first_level consists of 2 pages, we can't just loop over
> 0..1023,
> unless we have an improved map_domain_page that can map consecutive pages. 
> One way to avoid the modular arithmetic is to use nested loop; loop over
> first_level
> and then loop inside a first_level page. I think this one (nested loop) is
> better than
> modular arithmetic.

Or if it were a xenheap allocation it would allow consecutive pages.

If the modular arithmetic is needed then that's fine, or if you prefer
the nested loop then that is fine too.

A helper function to get an entry from a specified offset in the first
table which encapsulated the modular arithmetic would likely make that
approach more palatable.

Ian.


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