On Sun, Jul 21, 2019 at 03:46:11AM -0700, Matthew Wilcox wrote: > From: "Matthew Wilcox (Oracle)" <willy@xxxxxxxxxxxxx> > > Replace PAGE_SHIFT + compound_order(page) with the new page_shift() > function. Minor improvements in readability. > > Signed-off-by: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> Reviewed-by: Ira Weiny <ira.weiny@xxxxxxxxx> > --- > arch/powerpc/mm/book3s64/iommu_api.c | 7 ++----- > drivers/vfio/vfio_iommu_spapr_tce.c | 2 +- > include/linux/mm.h | 6 ++++++ > 3 files changed, 9 insertions(+), 6 deletions(-) > > diff --git a/arch/powerpc/mm/book3s64/iommu_api.c b/arch/powerpc/mm/book3s64/iommu_api.c > index b056cae3388b..56cc84520577 100644 > --- a/arch/powerpc/mm/book3s64/iommu_api.c > +++ b/arch/powerpc/mm/book3s64/iommu_api.c > @@ -129,11 +129,8 @@ static long mm_iommu_do_alloc(struct mm_struct *mm, unsigned long ua, > * Allow to use larger than 64k IOMMU pages. Only do that > * if we are backed by hugetlb. > */ > - if ((mem->pageshift > PAGE_SHIFT) && PageHuge(page)) { > - struct page *head = compound_head(page); > - > - pageshift = compound_order(head) + PAGE_SHIFT; > - } > + if ((mem->pageshift > PAGE_SHIFT) && PageHuge(page)) > + pageshift = page_shift(compound_head(page)); > mem->pageshift = min(mem->pageshift, pageshift); > /* > * We don't need struct page reference any more, switch > diff --git a/drivers/vfio/vfio_iommu_spapr_tce.c b/drivers/vfio/vfio_iommu_spapr_tce.c > index 8ce9ad21129f..1883fd2901b2 100644 > --- a/drivers/vfio/vfio_iommu_spapr_tce.c > +++ b/drivers/vfio/vfio_iommu_spapr_tce.c > @@ -190,7 +190,7 @@ static bool tce_page_is_contained(struct mm_struct *mm, unsigned long hpa, > * a page we just found. Otherwise the hardware can get access to > * a bigger memory chunk that it should. > */ > - return (PAGE_SHIFT + compound_order(compound_head(page))) >= page_shift; > + return page_shift(compound_head(page)) >= page_shift; > } > > static inline bool tce_groups_attached(struct tce_container *container) > diff --git a/include/linux/mm.h b/include/linux/mm.h > index 899dfcf7c23d..64762559885f 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -811,6 +811,12 @@ static inline unsigned long page_size(struct page *page) > return PAGE_SIZE << compound_order(page); > } > > +/* Returns the number of bits needed for the number of bytes in a page */ > +static inline unsigned int page_shift(struct page *page) > +{ > + return PAGE_SHIFT + compound_order(page); > +} > + > void free_compound_page(struct page *page); > > #ifdef CONFIG_MMU > -- > 2.20.1 >