powerpc/mm_iommu: Allow pinning large regions
authorAlexey Kardashevskiy <aik@ozlabs.ru>
Wed, 3 Apr 2019 04:12:33 +0000 (15:12 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 17 Apr 2019 11:36:51 +0000 (21:36 +1000)
commit7a3a4d763837d3aa654cd1059030950410c04d77
tree7aac3da0f61a6d20c362b9dda93bdcb1d0be833f
parenteb9d7a62c38628ab0ba6e59d22d7cb7930e415d1
powerpc/mm_iommu: Allow pinning large regions

When called with vmas_arg==NULL, get_user_pages_longterm() allocates
an array of nr_pages*8 which can easily get greater that the max order,
for example, registering memory for a 256GB guest does this and fails
in __alloc_pages_nodemask().

This adds a loop over chunks of entries to fit the max order limit.

Fixes: 678e174c4c16 ("powerpc/mm/iommu: allow migration of cma allocated pages during mm_iommu_do_alloc", 2019-03-05)
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/mm/mmu_context_iommu.c