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

Re: [Xen-devel] Confused about Xen memory management.

On Wednesday 16 February 2005 14:08, Nakajima, Jun wrote:
> There are notions like "guest/pseudo physical" and "machine physical" in
> Xen. Guest physical is basically virtualized physical address space, and
> that's the one the bulk of the guest kernel code looks at. That way many
> assumptions in the kernel are met, thus we can minimize changes to the
> kernel when para-virtualizing. Machine physical is real one (i.e. global
> and unique), and the guest needs to use machine physical especially for
> inter-domain communications or MMU-related hypercalls typically.

BTW, there's a virt_to_machine() macro available for convenience.

Cheers,
Mark

> The macro pfn_to_mfn() converts guest physical PFN to machine PFN.
> So what you need to do is to give the machine address to Xen like:
>
> (pfn_to_mfn(__pa(foo) >> PAGE_SHIFT) << PAGE_SHIFT) + (foo & (PAGE_SIZE
> - 1))
>
> Jun
> -----Original Message-----
> From: xen-devel-admin@xxxxxxxxxxxxxxxxxxxxx
> [mailto:xen-devel-admin@xxxxxxxxxxxxxxxxxxxxx] On Behalf Of Rusty
> Russell
> Sent: Tuesday, February 15, 2005 10:22 PM
> To: Xen Mailing List
> Subject: [Xen-devel] Confused about Xen memory management.
>
> OK, so I am implementing a prototype where Linux hands an address into
> Xen, which gets decremented later (ie. when Xen is executing a different
> domain).  It seems that map_domain_mem() is what I want, but how do I
> get the physical address of the variable?  virt_to_phys() in Linux
> doesn't seem to do the trick, nor virt_to_phys() in Xen.
>
> ie, pseudo code:
>
> linux/mydriver.c:
>       static int foo = 1;
>
>       // virt_to_phys(foo) maybe?
>       HYPERVISOR_mytest(&foo);
>
> xen/common/test.c:
>       int mytest(unsigned long addr)
>       {
>               // virt_to_phys(addr) maybe?
>               manip_later->addr = addr;
>               return 0;
>       }
>
>       // Some time later
>       ...
>       int *p = map_domain_mem(manip_later->addr);
>       (*p)++;
>       unmap_domain_mem(p);
>
> Sorry for the stupid question; I hate VM.
> Rusty.


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/xen-devel

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