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-users] Re: [Xen-devel] Xen - Guest memory allocation

To: xen developers community <xen-devel@xxxxxxxxxxxxxxxxxxx>, xen users community <xen-users@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-users] Re: [Xen-devel] Xen - Guest memory allocation
From: dinesh chandrasekaran <dinesh_chan8@xxxxxxxxxxx>
Date: Sun, 29 Jun 2008 20:38:12 +0530
Cc:
Delivery-date: Sun, 29 Jun 2008 08:08:34 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
Importance: Normal
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx

yeah by maddr_pci, I mean the machine address of the memory behind PCI device
found by using pci_conf_read(my_pci, PCI_SIZE, PCI-BASE_ADDRESS_0) where
PCI_SIZE = 256MB.

unsigned long maddr = 0xdf000000;

> > maddr_pci = ((maddr + PAGE_SIZE-1) &PAGE_MASK); //// THIS IS WRONG

Im sorry.
it is,

maddr = ((maddr + PAGE_SIZE-1) &PAGE_MASK);

Yes, about the I/O pages,
my machine uses 36-bit physical addresses,
since PCI address are all 32-bit, Im facing difficulties in converting these addresses into pages using maddr_to_page();

So, I have to use a 64-bit PCI device.

Thanks Milos,
Dinesh C


> Date: Sat, 28 Jun 2008 16:50:48 +0100
> From: gm281@xxxxxxxxx
> To: dinesh_chan8@xxxxxxxxxxx
> Subject: Re: [Xen-users] Re: [Xen-devel] Xen - Guest memory allocation
> CC: xen-devel@xxxxxxxxxxxxxxxxxxx; xen-users@xxxxxxxxxxxxxxxxxxx; derek.murray@xxxxxxxxxxxx
>
> > Hi,
> >
> > if I use the following inside the populate_physmap() inside
> > xen/common/memory.c,
> >
> > unsigned long maddr_pci = 0xdf000000; //since I know the machine
> > address of the mememory behind my pci device <xm dmesg>
> >
> > static void populate_physmap(struct memop_args *a)
> > {
> > /******
> >
> > for(i=a->nr_done; i<a->nr_extents; i++)
> > {
> > /*************
> > &nb sp; if(d->is_privilaged)
> >
> > page = alloc_domheap_pages(d, a->extent_order, a->memflags |
> > MEMF_node(node));
> > else
> > {
> > page = maddr_to_page(maddr_pci);
>
> This is going to assign DomU IO pages _only_.
>
> > maddr_pci = ((maddr + PAGE_SIZE-1) &PAGE_MASK);
>
> What is maddr here? Did you mean maddr_pci? Also, (page_aligned_x +
> PAGE_SIZE - 1) & PAGE_MASK = page_aligned_x, in other words you are
> stuck on the same page.
>
> >
> > ` &nbsp ; }
> > /***************
> > }
> > printk('a->nr_done: %lx', a->nr_done);
> > }
> >
> > The printk says 'a->nr_done: 2000' when 'xm dmesg' is used (which is correct
> > since I allocated 32MB for DomU = 8192 pages = 0x2000)
> >
> > but exits with the following error:
> >
> > & n bsp; 'dmesg' says : Using config file
> > '/home/guest/Guest.conf'.
> > Error: (1, 'Internal error', 'xc_dom_boot_domU_map:
> > failed to mmap domU pages 0x200+0x2e3 [xenctl, rc=-1]\n'
> >
> > 'xm dmesg' says: <G><1>mm.c:671:d0 Non-privileged (1) attempt
> > to map I/O space 000df1ff
>
> Dom0 tried map DomU memory in order to load the kernel + other boot
> info. This fails because you've only allocated IO pages to DomU.
>
> Cheers
> Gr(z)egor(z)


Live.in : Get your yourname@xxxxxxx email id today. Powered by Windows Live Hotmail. Check it out!


WL Messenger : Stay connected to friends and family with the New Windows Live Messenger. Get it now. Try it now!
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel