|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 6/8] tools: arm: refactor code to setup guest p2m and fill it with RAM
On Fri, 2014-04-25 at 13:51 +0100, Julien Grall wrote:
> Hi Ian,
>
> On 25/04/14 12:22, Ian Campbell wrote:
> > +static int populate_guest_memory(struct xc_dom_image *dom,
> > + xen_pfn_t base_pfn, xen_pfn_t nr_pfns)
> > +{
> > + int rc;
> > + xen_pfn_t allocsz, pfn;
> > +
> > + if (!nr_pfns)
> > + return 0;
> > +
> > + DOMPRINTF("%s: populating RAM @ %016"PRIx64"-%016"PRIx64"
> > (%"PRId64"MB)",
> > + __FUNCTION__,
> > + (uint64_t)base_pfn << XC_PAGE_SHIFT,
> > + (uint64_t)(base_pfn + nr_pfns) << XC_PAGE_SHIFT,
> > + (uint64_t)nr_pfns >> (20-XC_PAGE_SHIFT));
> > +
> > + for ( pfn = 0; pfn < nr_pfns; pfn++ )
> > + dom->p2m_host[pfn] = base_pfn + pfn;
> > +
> > + for ( pfn = rc = allocsz = 0; (pfn < nr_pfns) && !rc; pfn += allocsz )
>
> May I ask for a bit of clean up here?
This is code motion. I deliberately don't want to change it for that
reason.
> > @@ -292,27 +326,17 @@ int arch_setup_meminit(struct xc_dom_image *dom)
> >
> > dom->shadow_enabled = 1;
> >
> > - dom->p2m_host = xc_dom_malloc(dom, sizeof(xen_pfn_t) *
> > dom->total_pages);
> > + dom->p2m_host = xc_dom_malloc(dom, sizeof(xen_pfn_t) * p2m_size);
> > if ( dom->p2m_host == NULL )
> > return -EINVAL;
> > + for ( pfn = 0; pfn < p2m_size; pfn++ )
> > + dom->p2m_host[pfn] = INVALID_MFN;
>
> With this solution, you will loop 262244 times for nothing (the hole
> between the 2 banks).
Yes, this is the simplest way to ensure that p2m_host is definitely
completely initialised, irrespective of the presence of any holes in the
address space.
> Also when the guess will have lots of RAM, it will be slow because we
> loop nearly twice the array (one here, the other in populate_guest_memory).
This is dwarfed by all the other overheads of course, like actually
filling in the RAM on the second pass.
> It think we can avoid looping twice by making the two banks contiguous
> in the memory (i.e starting the second bank at 4GB instead of 8GB).
As explained in the commit message I have deliberately left a hole so
that we can see that such configurations actually work.
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |