On Tue, 2015-03-24 at 17:14 +0530, vijay.kil...@gmail.com wrote:
> From: Vijaya Kumar K <vijaya.ku...@caviumnetworks.com>
> 
> On x86, for the pages mapped with PAGE_HYPERVISOR attribute
> non-leaf page tables are allocated with valid pte entries.
> and with MAP_SMALL_PAGES attribute only non-leaf page tables are
> allocated with invalid (valid bit set to 0) pte entries.
> However on arm this is not the case. On arm for the pages
> mapped with PAGE_HYPERVISOR and MAP_SMALL_PAGES both
> non-leaf and leaf level page table are allocated with valid bit
> in pte entries.
> 
> This behaviour in arm makes common vmap code fail to
> allocate memory beyond 128MB as described below.
> 
> In vm_init, map_pages_to_xen() is called for mapping
> vm_bitmap. Initially one page of vm_bitmap is allocated
> and mapped using PAGE_HYPERVISOR attribute.
> For the rest of vm_bitmap pages, MAP_SMALL_PAGES attribute
> is used to map.
> 
> In ARM for both PAGE_HYPERVISOR and MAP_SMALL_PAGES, valid bit
> is set to 1 in pte entry for these mapping.
> 
> In vm_alloc(), map_pages_to_xen() is failing for >128MB because
> for this next vm_bitmap page the mapping is already set in vm_init()
> with valid bit set in pte entry. So map_pages_to_xen() in
> ARM returns error.
> 
> With this patch, MAP_SMALL_PAGES is dropped and arch specific
> populate_pt_range() api is introduced to populate non-leaf
> page table entries for the requested pages. Added RESERVE option
> to map non-leaf page table entries.
> 
> Signed-off-by: Vijaya Kumar K<vijaya.ku...@caviumnetworks.com>
> Acked-by: Jan Beulich <jbeul...@suse.com>

Acked + applied, thanks.

I changed the title to the more complete/correct: "xen: Add
populate_pt_range interface to reserve non-leaf level table entries". I
hope that is OK.

Ian.


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

Reply via email to