mirror of https://gitee.com/openkylin/linux.git
powerpc: Update gup_pmd_range to handle transparent hugepages
Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
db7cb5b924
commit
c367714ce8
|
@ -66,9 +66,15 @@ static int gup_pmd_range(pud_t pud, unsigned long addr, unsigned long end,
|
|||
pmd_t pmd = *pmdp;
|
||||
|
||||
next = pmd_addr_end(addr, end);
|
||||
if (pmd_none(pmd))
|
||||
/*
|
||||
* If we find a splitting transparent hugepage we
|
||||
* return zero. That will result in taking the slow
|
||||
* path which will call wait_split_huge_page()
|
||||
* if the pmd is still in splitting state
|
||||
*/
|
||||
if (pmd_none(pmd) || pmd_trans_splitting(pmd))
|
||||
return 0;
|
||||
if (pmd_huge(pmd)) {
|
||||
if (pmd_huge(pmd) || pmd_large(pmd)) {
|
||||
if (!gup_hugepte((pte_t *)pmdp, PMD_SIZE, addr, next,
|
||||
write, pages, nr))
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue