Re: [RFC PATCH 1/3] powerpc/mm: update pmdp_invalidate to return old pmd value
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.shute...@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. -- Michal Hocko SUSE Labs
Re: [RFC PATCH 1/3] powerpc/mm: update pmdp_invalidate to return old pmd value
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.shute...@linux.intel.com It is essentially implementing the pmdp_invalidate update for ppc64. His series does it for x86-64. -aneesh
Re: [RFC PATCH 1/3] powerpc/mm: update pmdp_invalidate to return old pmd value
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.shute...@linux.intel.com -- Kirill A. Shutemov
Re: [RFC PATCH 1/3] powerpc/mm: update pmdp_invalidate to return old pmd value
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 > --- > 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 majord...@kvack.org. For more info on Linux MM, > see: http://www.linux-mm.org/ . > Don't email: mailto:"d...@kvack.org";> em...@kvack.org -- Michal Hocko SUSE Labs
[RFC PATCH 1/3] powerpc/mm: update pmdp_invalidate to return old pmd value
Signed-off-by: Aneesh Kumar K.V --- 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