[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [Xen-devel] Dom heap virtual address question

  • To: "Daniel Magenheimer" <dan.magenheimer@xxxxxxxxxx>, "Xen-Devel (E-mail)" <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • From: "Tian, Kevin" <kevin.tian@xxxxxxxxx>
  • Date: Wed, 27 Aug 2008 08:34:51 +0800
  • Cc:
  • Delivery-date: Tue, 26 Aug 2008 17:35:18 -0700
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>
  • Thread-index: AckH1mW6rGZN9g8mTD2qPSAVD8EHnAABG94w
  • Thread-topic: [Xen-devel] Dom heap virtual address question

>From: Daniel Magenheimer
>Sent: 2008年8月27日 7:49
>Silly x86-related memory question from someone who has only
>used global virtual address machines for too many years:
>Is it possible to take the result of an alloc_domheap_pages()
>(struct page_info *) and convert this to a virtual address
>that can be used at a later time in the hypervisor (not
>in a domain)?  E.g.
>va = mfn_to_virt(page_to_mfn(alloc_domheap_pages()))
>  :
>(many seconds later, still in hypervisor)
>  :
>a = *(unsigned int *)va;

This only applies to 64bit xen which directly maps all memory 
in a large enough virtual address range. For 32bit xen, mfn_to_virt
only applies to xenheap pages.

>Or is it necessary to do a va = map_domain_page(mfn)
>then unmap_domain_page(va) around each usage?  (And
>if so do I need the _global version of these?)

map/unmap_domain_page is cleaner wrap, suitable for both
32bit and 64bit xen. For 64bit xen, it's actually a macro to
mfn_to_virt and thus map/unmap is light. you can use _global
version if you'd like to access that page from any domain 
context and don't want to local map/unmap frequently.


Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.