aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc
diff options
context:
space:
mode:
authorAlexey Kardashevskiy <aik@ozlabs.ru>2017-04-11 03:54:57 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-05-25 09:44:43 -0400
commit3915c566ea9427947ddc1849c68f64c401a3d5c9 (patch)
treea374952ae740e6bf8db7a0fd382509ad85dba75a /arch/powerpc
parent5ba5685a26b1e89e5fccd0373f614fd5d13253a6 (diff)
powerpc/iommu: Do not call PageTransHuge() on tail pages
commit e889e96e98e8da97bd39e46b7253615eabe14397 upstream. The CMA pages migration code does not support compound pages at the moment so it performs few tests before proceeding to actual page migration. One of the tests - PageTransHuge() - has VM_BUG_ON_PAGE(PageTail()) as it is designed to be called on head pages only. Since we also test for PageCompound(), and it contains PageTail() and PageHead(), we can simplify the check by leaving just PageCompound() and therefore avoid possible VM_BUG_ON_PAGE. Fixes: 2e5bbb5461f1 ("KVM: PPC: Book3S HV: Migrate pinned pages out of CMA") Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Acked-by: Balbir Singh <bsingharora@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'arch/powerpc')
-rw-r--r--arch/powerpc/mm/mmu_context_iommu.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/powerpc/mm/mmu_context_iommu.c b/arch/powerpc/mm/mmu_context_iommu.c
index 7de7124ac91b..fd596808ac24 100644
--- a/arch/powerpc/mm/mmu_context_iommu.c
+++ b/arch/powerpc/mm/mmu_context_iommu.c
@@ -81,7 +81,7 @@ struct page *new_iommu_non_cma_page(struct page *page, unsigned long private,
81 gfp_t gfp_mask = GFP_USER; 81 gfp_t gfp_mask = GFP_USER;
82 struct page *new_page; 82 struct page *new_page;
83 83
84 if (PageHuge(page) || PageTransHuge(page) || PageCompound(page)) 84 if (PageCompound(page))
85 return NULL; 85 return NULL;
86 86
87 if (PageHighMem(page)) 87 if (PageHighMem(page))
@@ -100,7 +100,7 @@ static int mm_iommu_move_page_from_cma(struct page *page)
100 LIST_HEAD(cma_migrate_pages); 100 LIST_HEAD(cma_migrate_pages);
101 101
102 /* Ignore huge pages for now */ 102 /* Ignore huge pages for now */
103 if (PageHuge(page) || PageTransHuge(page) || PageCompound(page)) 103 if (PageCompound(page))
104 return -EBUSY; 104 return -EBUSY;
105 105
106 lru_add_drain(); 106 lru_add_drain();