Message ID | 20170727083756.32217-1-aneesh.kumar@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | RFC |
Headers | show |
EMISSING_CHANGELOG besides that no user actually uses the return value. Please fold this into the patch which uses the new functionality. On Thu 27-07-17 14:07:54, Aneesh Kumar K.V wrote: > Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> > --- > arch/powerpc/include/asm/book3s/64/pgtable.h | 4 ++-- > arch/powerpc/mm/pgtable-book3s64.c | 9 ++++++--- > 2 files changed, 8 insertions(+), 5 deletions(-) > > diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h b/arch/powerpc/include/asm/book3s/64/pgtable.h > index 41d484ac0822..ece6912fae8e 100644 > --- a/arch/powerpc/include/asm/book3s/64/pgtable.h > +++ b/arch/powerpc/include/asm/book3s/64/pgtable.h > @@ -1119,8 +1119,8 @@ static inline pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, > } > > #define __HAVE_ARCH_PMDP_INVALIDATE > -extern void pmdp_invalidate(struct vm_area_struct *vma, unsigned long address, > - pmd_t *pmdp); > +extern pmd_t pmdp_invalidate(struct vm_area_struct *vma, unsigned long address, > + pmd_t *pmdp); > > #define __HAVE_ARCH_PMDP_HUGE_SPLIT_PREPARE > static inline void pmdp_huge_split_prepare(struct vm_area_struct *vma, > diff --git a/arch/powerpc/mm/pgtable-book3s64.c b/arch/powerpc/mm/pgtable-book3s64.c > index 3b65917785a5..0bb7f824ecdd 100644 > --- a/arch/powerpc/mm/pgtable-book3s64.c > +++ b/arch/powerpc/mm/pgtable-book3s64.c > @@ -90,16 +90,19 @@ void serialize_against_pte_lookup(struct mm_struct *mm) > * We use this to invalidate a pmdp entry before switching from a > * hugepte to regular pmd entry. > */ > -void pmdp_invalidate(struct vm_area_struct *vma, unsigned long address, > - pmd_t *pmdp) > +pmd_t pmdp_invalidate(struct vm_area_struct *vma, unsigned long address, > + pmd_t *pmdp) > { > - pmd_hugepage_update(vma->vm_mm, address, pmdp, _PAGE_PRESENT, 0); > + unsigned long old_pmd; > + > + old_pmd = pmd_hugepage_update(vma->vm_mm, address, pmdp, _PAGE_PRESENT, 0); > flush_pmd_tlb_range(vma, address, address + HPAGE_PMD_SIZE); > /* > * This ensures that generic code that rely on IRQ disabling > * to prevent a parallel THP split work as expected. > */ > serialize_against_pte_lookup(vma->vm_mm); > + return __pmd(old_pmd); > } > > static pmd_t pmd_set_protbits(pmd_t pmd, pgprot_t pgprot) > -- > 2.13.3 > > -- > To unsubscribe, send a message with 'unsubscribe linux-mm' in > the body to majordomo@kvack.org. For more info on Linux MM, > see: http://www.linux-mm.org/ . > Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
On Thu, Jul 27, 2017 at 02:54:49PM +0200, Michal Hocko wrote: > EMISSING_CHANGELOG > > besides that no user actually uses the return value. Please fold this > into the patch which uses the new functionality. That's for patchset I'm working on[1]. [1] http://lkml.kernel.org/r/20170615145224.66200-1-kirill.shutemov@linux.intel.com
On 07/27/2017 06:24 PM, Michal Hocko wrote: > EMISSING_CHANGELOG > > besides that no user actually uses the return value. Please fold this > into the patch which uses the new functionality. The patch series was suppose to help Kirill to make progress with the his series at https://lkml.kernel.org/r/20170615145224.66200-1-kirill.shutemov@linux.intel.com It is essentially implementing the pmdp_invalidate update for ppc64. His series does it for x86-64. -aneesh
On Thu 27-07-17 21:18:35, Aneesh Kumar K.V wrote: > > > On 07/27/2017 06:24 PM, Michal Hocko wrote: > >EMISSING_CHANGELOG > > > >besides that no user actually uses the return value. Please fold this > >into the patch which uses the new functionality. > > > The patch series was suppose to help Kirill to make progress with the his > series at > > > https://lkml.kernel.org/r/20170615145224.66200-1-kirill.shutemov@linux.intel.com > > It is essentially implementing the pmdp_invalidate update for ppc64. His > series does it for x86-64. OK, that was not clear from the patch, however. You could either reply to the original thread or make it explicitly clear in the cover letter.
diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h b/arch/powerpc/include/asm/book3s/64/pgtable.h index 41d484ac0822..ece6912fae8e 100644 --- a/arch/powerpc/include/asm/book3s/64/pgtable.h +++ b/arch/powerpc/include/asm/book3s/64/pgtable.h @@ -1119,8 +1119,8 @@ static inline pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, } #define __HAVE_ARCH_PMDP_INVALIDATE -extern void pmdp_invalidate(struct vm_area_struct *vma, unsigned long address, - pmd_t *pmdp); +extern pmd_t pmdp_invalidate(struct vm_area_struct *vma, unsigned long address, + pmd_t *pmdp); #define __HAVE_ARCH_PMDP_HUGE_SPLIT_PREPARE static inline void pmdp_huge_split_prepare(struct vm_area_struct *vma, diff --git a/arch/powerpc/mm/pgtable-book3s64.c b/arch/powerpc/mm/pgtable-book3s64.c index 3b65917785a5..0bb7f824ecdd 100644 --- a/arch/powerpc/mm/pgtable-book3s64.c +++ b/arch/powerpc/mm/pgtable-book3s64.c @@ -90,16 +90,19 @@ void serialize_against_pte_lookup(struct mm_struct *mm) * We use this to invalidate a pmdp entry before switching from a * hugepte to regular pmd entry. */ -void pmdp_invalidate(struct vm_area_struct *vma, unsigned long address, - pmd_t *pmdp) +pmd_t pmdp_invalidate(struct vm_area_struct *vma, unsigned long address, + pmd_t *pmdp) { - pmd_hugepage_update(vma->vm_mm, address, pmdp, _PAGE_PRESENT, 0); + unsigned long old_pmd; + + old_pmd = pmd_hugepage_update(vma->vm_mm, address, pmdp, _PAGE_PRESENT, 0); flush_pmd_tlb_range(vma, address, address + HPAGE_PMD_SIZE); /* * This ensures that generic code that rely on IRQ disabling * to prevent a parallel THP split work as expected. */ serialize_against_pte_lookup(vma->vm_mm); + return __pmd(old_pmd); } static pmd_t pmd_set_protbits(pmd_t pmd, pgprot_t pgprot)
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> --- arch/powerpc/include/asm/book3s/64/pgtable.h | 4 ++-- arch/powerpc/mm/pgtable-book3s64.c | 9 ++++++--- 2 files changed, 8 insertions(+), 5 deletions(-)