All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ian Campbell <Ian.Campbell@citrix.com>
To: Julien Grall <julien.grall@linaro.org>
Cc: ian.jackson@eu.citrix.com, stefano.stabellini@eu.citrix.com,
	tim@xen.org, xen-devel@lists.xen.org
Subject: Re: [PATCH v2 6/8] tools: arm: refactor code to setup guest p2m and fill it with RAM
Date: Fri, 25 Apr 2014 13:59:46 +0100	[thread overview]
Message-ID: <1398430786.18537.459.camel@kazak.uk.xensource.com> (raw)
In-Reply-To: <535A5A61.1070706@linaro.org>

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.

  reply	other threads:[~2014-04-25 12:59 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-25 11:22 [PATCH v2 0/8] xen: arm: support up to (almost) 1TB of guest RAM Ian Campbell
2014-04-25 11:22 ` [PATCH v2 1/8] tools: libxl: use uint64_t not unsigned long long for addresses Ian Campbell
2014-04-25 11:42   ` Julien Grall
2014-04-30 15:12   ` Ian Jackson
2014-04-30 15:49     ` Ian Campbell
2014-05-02 10:03       ` Ian Campbell
2014-04-25 11:22 ` [PATCH v2 2/8] tools: arm: report an error if the guest RAM is too large Ian Campbell
2014-04-25 11:50   ` Julien Grall
2014-04-25 11:51     ` Ian Campbell
2014-04-25 12:01       ` Julien Grall
2014-04-25 12:04         ` Ian Campbell
2014-04-25 11:22 ` [PATCH v2 3/8] tools: arm: move magic pfns out of guest RAM region Ian Campbell
2014-04-25 12:09   ` Julien Grall
2014-04-25 12:22     ` Ian Campbell
2014-04-25 13:10       ` Ian Campbell
2014-04-25 11:22 ` [PATCH v2 4/8] tools: arm: rearrange guest physical address space to increase max RAM Ian Campbell
2014-04-25 12:14   ` Julien Grall
2014-04-25 11:22 ` [PATCH v2 5/8] tools: arm: prepare for multiple banks of guest RAM Ian Campbell
2014-04-25 12:19   ` Julien Grall
2014-04-25 12:23     ` Ian Campbell
2014-04-25 12:34       ` Julien Grall
2014-04-25 11:22 ` [PATCH v2 6/8] tools: arm: refactor code to setup guest p2m and fill it with RAM Ian Campbell
2014-04-25 12:51   ` Julien Grall
2014-04-25 12:59     ` Ian Campbell [this message]
2014-04-25 13:12       ` Julien Grall
2014-04-25 13:22         ` Ian Campbell
2014-04-25 13:28           ` Julien Grall
2014-04-25 11:22 ` [PATCH v2 7/8] tools: arm: support up to (almost) 1TB of guest RAM Ian Campbell
2014-04-25 13:29   ` Julien Grall
2014-04-25 11:22 ` [PATCH v2 8/8] tools: arm: increase size of region set aside for guest grant table Ian Campbell
2014-04-25 12:59   ` Julien Grall

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1398430786.18537.459.camel@kazak.uk.xensource.com \
    --to=ian.campbell@citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=julien.grall@linaro.org \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=tim@xen.org \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.