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