Xinxin Jin
2013-Jun-26 22:41 UTC
Difference between alloc_domheap_pages vs. alloc_xenheap_pages?
Hi, I noticed the only difference between the two is to add PGC_xen_heap flag in allocated xenheap pages. So does it matter to exchange these two functions when allocating a heap page? Thanks, Xinxin _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel
Ian Campbell
2013-Jun-27 08:11 UTC
Re: Difference between alloc_domheap_pages vs. alloc_xenheap_pages?
On Wed, 2013-06-26 at 15:41 -0700, Xinxin Jin wrote:> I noticed the only difference between the two is to add PGC_xen_heap > flag in allocated xenheap pages. So does it matter to exchange these > two functions when allocating a heap page?xenheap pages are always mapped, domheap pages are only mapped on demand with (un)map_domain_page. The big clue is that alloc_xenheap_pages returns a void* while alloc_domheap_pages returns a struct page_info*. On some architectures with a large virtual address space (i.e. 64-bit ones) the two can be combined and the distinction becomes a bit moot, but it remains for the benefit of common code and also because even on 64-bit architectures when you have large amounts of RAM you may still end up with RAM which is not permanently mapped -- e.g. on x86_64 if you have >5TB of RAM then you end up with a split again. Ian.
Keir Fraser
2013-Jun-27 08:19 UTC
Re: Difference between alloc_domheap_pages vs. alloc_xenheap_pages?
On 27/06/2013 09:11, "Ian Campbell" <Ian.Campbell@citrix.com> wrote:> On Wed, 2013-06-26 at 15:41 -0700, Xinxin Jin wrote: > > >> I noticed the only difference between the two is to add PGC_xen_heap >> flag in allocated xenheap pages. So does it matter to exchange these >> two functions when allocating a heap page? > > xenheap pages are always mapped, domheap pages are only mapped on demand > with (un)map_domain_page. The big clue is that alloc_xenheap_pages > returns a void* while alloc_domheap_pages returns a struct page_info*. > > On some architectures with a large virtual address space (i.e. 64-bit > ones) the two can be combined and the distinction becomes a bit moot, > but it remains for the benefit of common code and also because even on > 64-bit architectures when you have large amounts of RAM you may still > end up with RAM which is not permanently mapped -- e.g. on x86_64 if you > have >5TB of RAM then you end up with a split again.Also xenheap-allocated pages must be explicitly freed by Xen, usually during domain destruction.> Ian. > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel