|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-users] Re: [Xen-devel] Xen - Guest memory allocation
> 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();
The bit widths are not the (main) problem!
I don't think that patching populate_physmap is the right approach.
You do need 'real' memory to be assigned to DomU. You can then allow
DomU to use specific ranges of IO memory using
XEN_DOMCTL_iomem_permission. Have a look how tools do it, when
assigning a PCI device to a DomU:
tools/python/xen/xend/server/pciif.py
Cheers
Gr(z)egor(z)
>
> 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.
>>
>> >
>> > `   ; }
>> > /***************
>> > }
>> > 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
>
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|