WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] Re: [PATCH v3 08/10] xen: use host E820 map for dom0

On Mon, 18 Oct 2010, Konrad Rzeszutek Wilk wrote:
> On Tue, Oct 12, 2010 at 05:42:48PM +0100, Stefano Stabellini wrote:
> > From: Ian Campbell <ian.campbell@xxxxxxxxxx>
> > 
> > When running as initial domain, get the real physical memory map from
> > xen using the XENMEM_machine_memory_map hypercall and use it to setup
> > the e820 regions.
> > 
> > Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
> > Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>
> > Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
> > ---
> >  arch/x86/xen/setup.c           |   43 
> > +++++++++++++++++++++++++++++++++++++--
> >  include/xen/interface/memory.h |   28 ++++++++++++++++++++++++++
> >  2 files changed, 68 insertions(+), 3 deletions(-)
> > 
> > diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c
> > index 62ceb78..b08aac2 100644
> > --- a/arch/x86/xen/setup.c
> > +++ b/arch/x86/xen/setup.c
> > @@ -107,14 +107,51 @@ static unsigned long __init 
> > xen_return_unused_memory(unsigned long max_pfn,
> >  
> >  char * __init xen_memory_setup(void)
> >  {
> > +   static __initdata struct e820entry map[E820MAX];
> > +
> >     unsigned long max_pfn = xen_start_info->nr_pages;
> > +   struct xen_memory_map memmap;
> > +   unsigned long long mem_end;
> > +   int op;
> > +   int rc;
> > +   int i;
> >  
> >     max_pfn = min(MAX_DOMAIN_PAGES, max_pfn);
> > +   mem_end = PFN_PHYS((u64)max_pfn);
> > +
> > +   memmap.nr_entries = E820MAX;
> > +   set_xen_guest_handle(memmap.buffer, map);
> > +
> > +   op = xen_initial_domain() ?
> > +           XENMEM_machine_memory_map :
> > +           XENMEM_memory_map;
> > +   rc = HYPERVISOR_memory_op(op, &memmap);
> > +   if (rc == -ENOSYS) {
> > +           memmap.nr_entries = 1;
> > +           map[0].addr = 0ULL;
> > +           map[0].size = mem_end;
> > +           /* 8MB slack (to balance backend allocations). */
> > +           map[0].size += 8ULL << 20;
> > +           map[0].type = E820_RAM;
> > +           rc = 0;
> > +   }
> > +   BUG_ON(rc);
> >  
> >     e820.nr_map = 0;
> > -
> > -   e820_add_region(0, PFN_PHYS((u64)max_pfn), E820_RAM);
> > -
> > +   for (i = 0; i < memmap.nr_entries; i++) {
> > +           unsigned long long end = map[i].addr + map[i].size;
> > +           if (map[i].type == E820_RAM) {
> > +                   if (map[i].addr > mem_end)
> > +                           continue;
> 
> Would it make sense to print out a message saying something to the
> effect of: "You need to increase the CONFIG_XEN_MAX_DOMAIN_MEMORY value to
> take advantage of the extra %d gobs of memory!\n", map[i].size
> 
> Or will this be unneccessary with the later changes that Jeremy has
> for the balloon work?
> 

I think it still makes a lot of sense to print that message because
ballooning might be disabled.


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>