* [PATCH V3 0/3] mm/hugetlb: Add some new generic fallbacks
@ 2020-05-08 3:07 Anshuman Khandual
2020-05-08 3:07 ` [PATCH V3 1/3] arm64/mm: Drop __HAVE_ARCH_HUGE_PTEP_GET Anshuman Khandual
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: Anshuman Khandual @ 2020-05-08 3:07 UTC (permalink / raw)
To: linux-mm, akpm
Cc: Rich Felker, linux-ia64, linux-sh, Catalin Marinas,
Heiko Carstens, linux-kernel, James E.J. Bottomley,
Paul Mackerras, H. Peter Anvin, sparclinux, linux-riscv,
Will Deacon, linux-arch, linux-s390, Yoshinori Sato,
Michael Ellerman, Helge Deller, x86, Russell King,
Christian Borntraeger, Ingo Molnar, Benjamin Herrenschmidt,
Fenghua Yu, Vasily Gorbik, Anshuman Khandual, Thomas Bogendoerfer,
Borislav Petkov, Paul Walmsley, Thomas Gleixner, linux-arm-kernel,
Tony Luck, linux-parisc, linux-mips, Palmer Dabbelt, linuxppc-dev,
David S. Miller, Mike Kravetz
This series adds the following new generic fallbacks. Before that it drops
__HAVE_ARCH_HUGE_PTEP_GET from arm64 platform.
1. is_hugepage_only_range()
2. arch_clear_hugepage_flags()
This has been boot tested on arm64 and x86 platforms but built tested on
some more platforms including the changed ones here. This series applies
on v5.7-rc4. After this arm (32 bit) remains the sole platform defining
it's own huge_ptep_get() via __HAVE_ARCH_HUGE_PTEP_GET.
Changes in V3:
- Added READ_ONCE() in generic huge_ptep_get() per Will
Changes in V2: (https://patchwork.kernel.org/project/linux-mm/list/?series=282947)
- Adopted "#ifndef func" method (adding a single symbol to namespace) per Andrew
- Updated the commit messages in [PATCH 2/3] and [PATCH 3/3] as required
Changes in V1: (https://patchwork.kernel.org/project/linux-mm/list/?series=270677)
Cc: Russell King <linux@armlinux.org.uk>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
Cc: Helge Deller <deller@gmx.de>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Paul Walmsley <paul.walmsley@sifive.com>
Cc: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Cc: Christian Borntraeger <borntraeger@de.ibm.com>
Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
Cc: Rich Felker <dalias@libc.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Mike Kravetz <mike.kravetz@oracle.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: x86@kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-ia64@vger.kernel.org
Cc: linux-mips@vger.kernel.org
Cc: linux-parisc@vger.kernel.org
Cc: linuxppc-dev@lists.ozlabs.org
Cc: linux-riscv@lists.infradead.org
Cc: linux-s390@vger.kernel.org
Cc: linux-sh@vger.kernel.org
Cc: sparclinux@vger.kernel.org
Cc: linux-mm@kvack.org
Cc: linux-arch@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Anshuman Khandual (3):
arm64/mm: Drop __HAVE_ARCH_HUGE_PTEP_GET
mm/hugetlb: Define a generic fallback for is_hugepage_only_range()
mm/hugetlb: Define a generic fallback for arch_clear_hugepage_flags()
arch/arm/include/asm/hugetlb.h | 7 +------
arch/arm64/include/asm/hugetlb.h | 13 +------------
arch/ia64/include/asm/hugetlb.h | 5 +----
arch/mips/include/asm/hugetlb.h | 11 -----------
arch/parisc/include/asm/hugetlb.h | 10 ----------
arch/powerpc/include/asm/hugetlb.h | 5 +----
arch/riscv/include/asm/hugetlb.h | 10 ----------
arch/s390/include/asm/hugetlb.h | 8 +-------
arch/sh/include/asm/hugetlb.h | 7 +------
arch/sparc/include/asm/hugetlb.h | 10 ----------
arch/x86/include/asm/hugetlb.h | 10 ----------
include/asm-generic/hugetlb.h | 2 +-
include/linux/hugetlb.h | 14 ++++++++++++++
13 files changed, 21 insertions(+), 91 deletions(-)
--
2.20.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH V3 1/3] arm64/mm: Drop __HAVE_ARCH_HUGE_PTEP_GET 2020-05-08 3:07 [PATCH V3 0/3] mm/hugetlb: Add some new generic fallbacks Anshuman Khandual @ 2020-05-08 3:07 ` Anshuman Khandual 2020-05-08 22:09 ` Mike Kravetz 2020-05-08 3:07 ` [PATCH V3 2/3] mm/hugetlb: Define a generic fallback for is_hugepage_only_range() Anshuman Khandual 2020-05-08 3:07 ` [PATCH V3 3/3] mm/hugetlb: Define a generic fallback for arch_clear_hugepage_flags() Anshuman Khandual 2 siblings, 1 reply; 11+ messages in thread From: Anshuman Khandual @ 2020-05-08 3:07 UTC (permalink / raw) To: linux-mm, akpm Cc: Catalin Marinas, Will Deacon, linux-kernel, linux-arm-kernel, Anshuman Khandual Platform specific huge_ptep_get() is required only when fetching the huge PTE involves more than just dereferencing the page table pointer. This is not the case on arm64 platform. Hence huge_ptep_pte() can be dropped along with it's __HAVE_ARCH_HUGE_PTEP_GET subscription. Before that, it updates the generic huge_ptep_get() with READ_ONCE() which will prevent known page table issues with THP on arm64. https://lore.kernel.org/r/1506527369-19535-1-git-send-email-will.deacon@arm.com/ Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will@kernel.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: linux-arm-kernel@lists.infradead.org Cc: linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com> --- arch/arm64/include/asm/hugetlb.h | 6 ------ include/asm-generic/hugetlb.h | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/arch/arm64/include/asm/hugetlb.h b/arch/arm64/include/asm/hugetlb.h index 2eb6c234d594..b88878ddc88b 100644 --- a/arch/arm64/include/asm/hugetlb.h +++ b/arch/arm64/include/asm/hugetlb.h @@ -17,12 +17,6 @@ extern bool arch_hugetlb_migration_supported(struct hstate *h); #endif -#define __HAVE_ARCH_HUGE_PTEP_GET -static inline pte_t huge_ptep_get(pte_t *ptep) -{ - return READ_ONCE(*ptep); -} - static inline int is_hugepage_only_range(struct mm_struct *mm, unsigned long addr, unsigned long len) { diff --git a/include/asm-generic/hugetlb.h b/include/asm-generic/hugetlb.h index 822f433ac95c..40f85decc2ee 100644 --- a/include/asm-generic/hugetlb.h +++ b/include/asm-generic/hugetlb.h @@ -122,7 +122,7 @@ static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma, #ifndef __HAVE_ARCH_HUGE_PTEP_GET static inline pte_t huge_ptep_get(pte_t *ptep) { - return *ptep; + return READ_ONCE(*ptep); } #endif -- 2.20.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH V3 1/3] arm64/mm: Drop __HAVE_ARCH_HUGE_PTEP_GET 2020-05-08 3:07 ` [PATCH V3 1/3] arm64/mm: Drop __HAVE_ARCH_HUGE_PTEP_GET Anshuman Khandual @ 2020-05-08 22:09 ` Mike Kravetz 2020-05-11 4:02 ` Anshuman Khandual 0 siblings, 1 reply; 11+ messages in thread From: Mike Kravetz @ 2020-05-08 22:09 UTC (permalink / raw) To: Anshuman Khandual, linux-mm, akpm Cc: Catalin Marinas, Will Deacon, linux-kernel, linux-arm-kernel On 5/7/20 8:07 PM, Anshuman Khandual wrote: > Platform specific huge_ptep_get() is required only when fetching the huge > PTE involves more than just dereferencing the page table pointer. This is > not the case on arm64 platform. Hence huge_ptep_pte() can be dropped along > with it's __HAVE_ARCH_HUGE_PTEP_GET subscription. Before that, it updates > the generic huge_ptep_get() with READ_ONCE() which will prevent known page > table issues with THP on arm64. > > https://lore.kernel.org/r/1506527369-19535-1-git-send-email-will.deacon@arm.com/ > > Cc: Catalin Marinas <catalin.marinas@arm.com> > Cc: Will Deacon <will@kernel.org> > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: linux-arm-kernel@lists.infradead.org > Cc: linux-mm@kvack.org > Cc: linux-kernel@vger.kernel.org > Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com> > --- > arch/arm64/include/asm/hugetlb.h | 6 ------ > include/asm-generic/hugetlb.h | 2 +- > 2 files changed, 1 insertion(+), 7 deletions(-) > > diff --git a/arch/arm64/include/asm/hugetlb.h b/arch/arm64/include/asm/hugetlb.h > index 2eb6c234d594..b88878ddc88b 100644 > --- a/arch/arm64/include/asm/hugetlb.h > +++ b/arch/arm64/include/asm/hugetlb.h > @@ -17,12 +17,6 @@ > extern bool arch_hugetlb_migration_supported(struct hstate *h); > #endif > > -#define __HAVE_ARCH_HUGE_PTEP_GET > -static inline pte_t huge_ptep_get(pte_t *ptep) > -{ > - return READ_ONCE(*ptep); > -} > - > static inline int is_hugepage_only_range(struct mm_struct *mm, > unsigned long addr, unsigned long len) > { > diff --git a/include/asm-generic/hugetlb.h b/include/asm-generic/hugetlb.h > index 822f433ac95c..40f85decc2ee 100644 > --- a/include/asm-generic/hugetlb.h > +++ b/include/asm-generic/hugetlb.h > @@ -122,7 +122,7 @@ static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma, > #ifndef __HAVE_ARCH_HUGE_PTEP_GET > static inline pte_t huge_ptep_get(pte_t *ptep) > { > - return *ptep; > + return READ_ONCE(*ptep); > } > #endif I know you made this change in response to Will's comment. And, since changes were made to consistently use READ_ONCE in arm64 code, it makes sense for that architecture. However, with this change to generic code, you introduce READ_ONCE to other architectures where it was not used before. Could this possibly introduce inconsistencies in their use of READ_ONCE? To be honest, I am not very good at identifying any possible issues this could cause. However, it does seem possible. Will was nervous about dropping this from arm64. I'm just a little nervous about adding it to other architectures. -- Mike Kravetz _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH V3 1/3] arm64/mm: Drop __HAVE_ARCH_HUGE_PTEP_GET 2020-05-08 22:09 ` Mike Kravetz @ 2020-05-11 4:02 ` Anshuman Khandual 2020-05-11 18:49 ` Mike Kravetz 0 siblings, 1 reply; 11+ messages in thread From: Anshuman Khandual @ 2020-05-11 4:02 UTC (permalink / raw) To: Mike Kravetz, linux-mm, akpm Cc: Catalin Marinas, Will Deacon, linux-kernel, linux-arm-kernel On 05/09/2020 03:39 AM, Mike Kravetz wrote: > On 5/7/20 8:07 PM, Anshuman Khandual wrote: >> Platform specific huge_ptep_get() is required only when fetching the huge >> PTE involves more than just dereferencing the page table pointer. This is >> not the case on arm64 platform. Hence huge_ptep_pte() can be dropped along >> with it's __HAVE_ARCH_HUGE_PTEP_GET subscription. Before that, it updates >> the generic huge_ptep_get() with READ_ONCE() which will prevent known page >> table issues with THP on arm64. >> >> https://lore.kernel.org/r/1506527369-19535-1-git-send-email-will.deacon@arm.com/ >> >> Cc: Catalin Marinas <catalin.marinas@arm.com> >> Cc: Will Deacon <will@kernel.org> >> Cc: Andrew Morton <akpm@linux-foundation.org> >> Cc: linux-arm-kernel@lists.infradead.org >> Cc: linux-mm@kvack.org >> Cc: linux-kernel@vger.kernel.org >> Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com> >> --- >> arch/arm64/include/asm/hugetlb.h | 6 ------ >> include/asm-generic/hugetlb.h | 2 +- >> 2 files changed, 1 insertion(+), 7 deletions(-) >> >> diff --git a/arch/arm64/include/asm/hugetlb.h b/arch/arm64/include/asm/hugetlb.h >> index 2eb6c234d594..b88878ddc88b 100644 >> --- a/arch/arm64/include/asm/hugetlb.h >> +++ b/arch/arm64/include/asm/hugetlb.h >> @@ -17,12 +17,6 @@ >> extern bool arch_hugetlb_migration_supported(struct hstate *h); >> #endif >> >> -#define __HAVE_ARCH_HUGE_PTEP_GET >> -static inline pte_t huge_ptep_get(pte_t *ptep) >> -{ >> - return READ_ONCE(*ptep); >> -} >> - >> static inline int is_hugepage_only_range(struct mm_struct *mm, >> unsigned long addr, unsigned long len) >> { >> diff --git a/include/asm-generic/hugetlb.h b/include/asm-generic/hugetlb.h >> index 822f433ac95c..40f85decc2ee 100644 >> --- a/include/asm-generic/hugetlb.h >> +++ b/include/asm-generic/hugetlb.h >> @@ -122,7 +122,7 @@ static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma, >> #ifndef __HAVE_ARCH_HUGE_PTEP_GET >> static inline pte_t huge_ptep_get(pte_t *ptep) >> { >> - return *ptep; >> + return READ_ONCE(*ptep); >> } >> #endif > > I know you made this change in response to Will's comment. And, since > changes were made to consistently use READ_ONCE in arm64 code, it makes > sense for that architecture. > > However, with this change to generic code, you introduce READ_ONCE to > other architectures where it was not used before. Could this possibly > introduce inconsistencies in their use of READ_ONCE? To be honest, I > am not very good at identifying any possible issues this could cause. > However, it does seem possible. Could you please give some more details. Is there any particular problem which might be caused by this new READ_ONCE() here, that you you are concerned about. READ_ONCE() is already getting used in multiple places in core MM which can not be configured out (like mm/gup.c). It is getting used in core HugeTLB (mm/hugetlb.c) as well. AFAICS, there is no standard for using READ_ONCE() while walking page tables entries. We have examples in core MM for both ways. > > Will was nervous about dropping this from arm64. I'm just a little nervous > about adding it to other architectures. > AFAICS, __HAVE_ARCH_HUGE_PTEP_GET should be used on a platform only when a HugeTLB entry could not constructed by dereferencing a page table entry as in the case with ARM (32 bit). Using READ_ONCE() while dereferencing is really not a special case that will need __HAVE_ARCH_HUGE_PTEP_GET. Moving READ_ONCE() into generic definition solves the problem while also taking care of a known problem on arm64. IMHO, it seems like the right thing to do unless there is another problem that pops up some where else because of READ_ONCE(). _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH V3 1/3] arm64/mm: Drop __HAVE_ARCH_HUGE_PTEP_GET 2020-05-11 4:02 ` Anshuman Khandual @ 2020-05-11 18:49 ` Mike Kravetz 0 siblings, 0 replies; 11+ messages in thread From: Mike Kravetz @ 2020-05-11 18:49 UTC (permalink / raw) To: Anshuman Khandual, linux-mm, akpm Cc: Catalin Marinas, Will Deacon, linux-kernel, linux-arm-kernel On 5/10/20 9:02 PM, Anshuman Khandual wrote: > On 05/09/2020 03:39 AM, Mike Kravetz wrote: >> On 5/7/20 8:07 PM, Anshuman Khandual wrote: >> I know you made this change in response to Will's comment. And, since >> changes were made to consistently use READ_ONCE in arm64 code, it makes >> sense for that architecture. >> >> However, with this change to generic code, you introduce READ_ONCE to >> other architectures where it was not used before. Could this possibly >> introduce inconsistencies in their use of READ_ONCE? To be honest, I >> am not very good at identifying any possible issues this could cause. >> However, it does seem possible. > > Could you please give some more details. Is there any particular problem > which might be caused by this new READ_ONCE() here, that you you are > concerned about. READ_ONCE() is already getting used in multiple places > in core MM which can not be configured out (like mm/gup.c). It is getting > used in core HugeTLB (mm/hugetlb.c) as well. AFAICS, there is no standard > for using READ_ONCE() while walking page tables entries. We have examples > in core MM for both ways. > >> >> Will was nervous about dropping this from arm64. I'm just a little nervous >> about adding it to other architectures. >> > AFAICS, __HAVE_ARCH_HUGE_PTEP_GET should be used on a platform only when > a HugeTLB entry could not constructed by dereferencing a page table entry > as in the case with ARM (32 bit). Using READ_ONCE() while dereferencing is > really not a special case that will need __HAVE_ARCH_HUGE_PTEP_GET. Moving > READ_ONCE() into generic definition solves the problem while also taking > care of a known problem on arm64. IMHO, it seems like the right thing to > do unless there is another problem that pops up some where else because of > READ_ONCE(). I have no specific concerns or objection. After thinking about it some more, I do not see how adding the READ_ONCE could cause any issues. Acked-by: Mike Kravetz <mike.kravetz@oracle.com> -- Mike Kravetz _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH V3 2/3] mm/hugetlb: Define a generic fallback for is_hugepage_only_range() 2020-05-08 3:07 [PATCH V3 0/3] mm/hugetlb: Add some new generic fallbacks Anshuman Khandual 2020-05-08 3:07 ` [PATCH V3 1/3] arm64/mm: Drop __HAVE_ARCH_HUGE_PTEP_GET Anshuman Khandual @ 2020-05-08 3:07 ` Anshuman Khandual 2020-05-08 22:22 ` Mike Kravetz 2020-05-08 3:07 ` [PATCH V3 3/3] mm/hugetlb: Define a generic fallback for arch_clear_hugepage_flags() Anshuman Khandual 2 siblings, 1 reply; 11+ messages in thread From: Anshuman Khandual @ 2020-05-08 3:07 UTC (permalink / raw) To: linux-mm, akpm Cc: Rich Felker, linux-ia64, linux-sh, Catalin Marinas, Heiko Carstens, linux-kernel, James E.J. Bottomley, Paul Mackerras, H. Peter Anvin, sparclinux, linux-riscv, Will Deacon, linux-arch, linux-s390, Yoshinori Sato, Michael Ellerman, Helge Deller, x86, Russell King, Christian Borntraeger, Ingo Molnar, Benjamin Herrenschmidt, Fenghua Yu, Vasily Gorbik, Anshuman Khandual, Thomas Bogendoerfer, Borislav Petkov, Paul Walmsley, Thomas Gleixner, linux-arm-kernel, Tony Luck, linux-parisc, linux-mips, Palmer Dabbelt, linuxppc-dev, David S. Miller, Mike Kravetz There are multiple similar definitions for is_hugepage_only_range() on various platforms. Lets just add it's generic fallback definition for platforms that do not override. This help reduce code duplication. Cc: Russell King <linux@armlinux.org.uk> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will@kernel.org> Cc: Tony Luck <tony.luck@intel.com> Cc: Fenghua Yu <fenghua.yu@intel.com> Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de> Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com> Cc: Helge Deller <deller@gmx.de> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Paul Walmsley <paul.walmsley@sifive.com> Cc: Palmer Dabbelt <palmer@dabbelt.com> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Vasily Gorbik <gor@linux.ibm.com> Cc: Christian Borntraeger <borntraeger@de.ibm.com> Cc: Yoshinori Sato <ysato@users.sourceforge.jp> Cc: Rich Felker <dalias@libc.org> Cc: "David S. Miller" <davem@davemloft.net> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: Borislav Petkov <bp@alien8.de> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Mike Kravetz <mike.kravetz@oracle.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: x86@kernel.org Cc: linux-arm-kernel@lists.infradead.org Cc: linux-ia64@vger.kernel.org Cc: linux-mips@vger.kernel.org Cc: linux-parisc@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org Cc: linux-riscv@lists.infradead.org Cc: linux-s390@vger.kernel.org Cc: linux-sh@vger.kernel.org Cc: sparclinux@vger.kernel.org Cc: linux-mm@kvack.org Cc: linux-arch@vger.kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com> --- arch/arm/include/asm/hugetlb.h | 6 ------ arch/arm64/include/asm/hugetlb.h | 6 ------ arch/ia64/include/asm/hugetlb.h | 1 + arch/mips/include/asm/hugetlb.h | 7 ------- arch/parisc/include/asm/hugetlb.h | 6 ------ arch/powerpc/include/asm/hugetlb.h | 1 + arch/riscv/include/asm/hugetlb.h | 6 ------ arch/s390/include/asm/hugetlb.h | 7 ------- arch/sh/include/asm/hugetlb.h | 6 ------ arch/sparc/include/asm/hugetlb.h | 6 ------ arch/x86/include/asm/hugetlb.h | 6 ------ include/linux/hugetlb.h | 9 +++++++++ 12 files changed, 11 insertions(+), 56 deletions(-) diff --git a/arch/arm/include/asm/hugetlb.h b/arch/arm/include/asm/hugetlb.h index 318dcf5921ab..9ecd516d1ff7 100644 --- a/arch/arm/include/asm/hugetlb.h +++ b/arch/arm/include/asm/hugetlb.h @@ -14,12 +14,6 @@ #include <asm/hugetlb-3level.h> #include <asm-generic/hugetlb.h> -static inline int is_hugepage_only_range(struct mm_struct *mm, - unsigned long addr, unsigned long len) -{ - return 0; -} - static inline void arch_clear_hugepage_flags(struct page *page) { clear_bit(PG_dcache_clean, &page->flags); diff --git a/arch/arm64/include/asm/hugetlb.h b/arch/arm64/include/asm/hugetlb.h index b88878ddc88b..8f58e052697a 100644 --- a/arch/arm64/include/asm/hugetlb.h +++ b/arch/arm64/include/asm/hugetlb.h @@ -17,12 +17,6 @@ extern bool arch_hugetlb_migration_supported(struct hstate *h); #endif -static inline int is_hugepage_only_range(struct mm_struct *mm, - unsigned long addr, unsigned long len) -{ - return 0; -} - static inline void arch_clear_hugepage_flags(struct page *page) { clear_bit(PG_dcache_clean, &page->flags); diff --git a/arch/ia64/include/asm/hugetlb.h b/arch/ia64/include/asm/hugetlb.h index 36cc0396b214..6ef50b9a4bdf 100644 --- a/arch/ia64/include/asm/hugetlb.h +++ b/arch/ia64/include/asm/hugetlb.h @@ -20,6 +20,7 @@ static inline int is_hugepage_only_range(struct mm_struct *mm, return (REGION_NUMBER(addr) == RGN_HPAGE || REGION_NUMBER((addr)+(len)-1) == RGN_HPAGE); } +#define is_hugepage_only_range is_hugepage_only_range #define __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH static inline void huge_ptep_clear_flush(struct vm_area_struct *vma, diff --git a/arch/mips/include/asm/hugetlb.h b/arch/mips/include/asm/hugetlb.h index 425bb6fc3bda..8b201e281f67 100644 --- a/arch/mips/include/asm/hugetlb.h +++ b/arch/mips/include/asm/hugetlb.h @@ -11,13 +11,6 @@ #include <asm/page.h> -static inline int is_hugepage_only_range(struct mm_struct *mm, - unsigned long addr, - unsigned long len) -{ - return 0; -} - #define __HAVE_ARCH_PREPARE_HUGEPAGE_RANGE static inline int prepare_hugepage_range(struct file *file, unsigned long addr, diff --git a/arch/parisc/include/asm/hugetlb.h b/arch/parisc/include/asm/hugetlb.h index 7cb595dcb7d7..411d9d867baa 100644 --- a/arch/parisc/include/asm/hugetlb.h +++ b/arch/parisc/include/asm/hugetlb.h @@ -12,12 +12,6 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep); -static inline int is_hugepage_only_range(struct mm_struct *mm, - unsigned long addr, - unsigned long len) { - return 0; -} - /* * If the arch doesn't supply something else, assume that hugepage * size aligned regions are ok without further preparation. diff --git a/arch/powerpc/include/asm/hugetlb.h b/arch/powerpc/include/asm/hugetlb.h index bd6504c28c2f..b167c869d72d 100644 --- a/arch/powerpc/include/asm/hugetlb.h +++ b/arch/powerpc/include/asm/hugetlb.h @@ -30,6 +30,7 @@ static inline int is_hugepage_only_range(struct mm_struct *mm, return slice_is_hugepage_only_range(mm, addr, len); return 0; } +#define is_hugepage_only_range is_hugepage_only_range #define __HAVE_ARCH_HUGETLB_FREE_PGD_RANGE void hugetlb_free_pgd_range(struct mmu_gather *tlb, unsigned long addr, diff --git a/arch/riscv/include/asm/hugetlb.h b/arch/riscv/include/asm/hugetlb.h index 728a5db66597..866f6ae6467c 100644 --- a/arch/riscv/include/asm/hugetlb.h +++ b/arch/riscv/include/asm/hugetlb.h @@ -5,12 +5,6 @@ #include <asm-generic/hugetlb.h> #include <asm/page.h> -static inline int is_hugepage_only_range(struct mm_struct *mm, - unsigned long addr, - unsigned long len) { - return 0; -} - static inline void arch_clear_hugepage_flags(struct page *page) { } diff --git a/arch/s390/include/asm/hugetlb.h b/arch/s390/include/asm/hugetlb.h index de8f0bf5f238..7d27ea96ec2f 100644 --- a/arch/s390/include/asm/hugetlb.h +++ b/arch/s390/include/asm/hugetlb.h @@ -21,13 +21,6 @@ pte_t huge_ptep_get(pte_t *ptep); pte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep); -static inline bool is_hugepage_only_range(struct mm_struct *mm, - unsigned long addr, - unsigned long len) -{ - return false; -} - /* * If the arch doesn't supply something else, assume that hugepage * size aligned regions are ok without further preparation. diff --git a/arch/sh/include/asm/hugetlb.h b/arch/sh/include/asm/hugetlb.h index 6f025fe18146..536ad2cb8aa4 100644 --- a/arch/sh/include/asm/hugetlb.h +++ b/arch/sh/include/asm/hugetlb.h @@ -5,12 +5,6 @@ #include <asm/cacheflush.h> #include <asm/page.h> -static inline int is_hugepage_only_range(struct mm_struct *mm, - unsigned long addr, - unsigned long len) { - return 0; -} - /* * If the arch doesn't supply something else, assume that hugepage * size aligned regions are ok without further preparation. diff --git a/arch/sparc/include/asm/hugetlb.h b/arch/sparc/include/asm/hugetlb.h index 3963f80d1cb3..a056fe1119f5 100644 --- a/arch/sparc/include/asm/hugetlb.h +++ b/arch/sparc/include/asm/hugetlb.h @@ -20,12 +20,6 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep); -static inline int is_hugepage_only_range(struct mm_struct *mm, - unsigned long addr, - unsigned long len) { - return 0; -} - #define __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH static inline void huge_ptep_clear_flush(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) diff --git a/arch/x86/include/asm/hugetlb.h b/arch/x86/include/asm/hugetlb.h index f65cfb48cfdd..cc98f79074d0 100644 --- a/arch/x86/include/asm/hugetlb.h +++ b/arch/x86/include/asm/hugetlb.h @@ -7,12 +7,6 @@ #define hugepages_supported() boot_cpu_has(X86_FEATURE_PSE) -static inline int is_hugepage_only_range(struct mm_struct *mm, - unsigned long addr, - unsigned long len) { - return 0; -} - static inline void arch_clear_hugepage_flags(struct page *page) { } diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index 43a1cef8f0f1..c01c0c6f7fd4 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h @@ -591,6 +591,15 @@ static inline unsigned int blocks_per_huge_page(struct hstate *h) #include <asm/hugetlb.h> +#ifndef is_hugepage_only_range +static inline int is_hugepage_only_range(struct mm_struct *mm, + unsigned long addr, unsigned long len) +{ + return 0; +} +#define is_hugepage_only_range is_hugepage_only_range +#endif + #ifndef arch_make_huge_pte static inline pte_t arch_make_huge_pte(pte_t entry, struct vm_area_struct *vma, struct page *page, int writable) -- 2.20.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH V3 2/3] mm/hugetlb: Define a generic fallback for is_hugepage_only_range() 2020-05-08 3:07 ` [PATCH V3 2/3] mm/hugetlb: Define a generic fallback for is_hugepage_only_range() Anshuman Khandual @ 2020-05-08 22:22 ` Mike Kravetz 2020-05-11 3:14 ` Anshuman Khandual 0 siblings, 1 reply; 11+ messages in thread From: Mike Kravetz @ 2020-05-08 22:22 UTC (permalink / raw) To: Anshuman Khandual, linux-mm, akpm Cc: Rich Felker, linux-ia64, linux-sh, Catalin Marinas, Heiko Carstens, linux-kernel, James E.J. Bottomley, Paul Mackerras, H. Peter Anvin, sparclinux, linux-riscv, Will Deacon, linux-arch, linux-s390, Yoshinori Sato, Michael Ellerman, Helge Deller, x86, Russell King, Christian Borntraeger, Ingo Molnar, Benjamin Herrenschmidt, Fenghua Yu, Vasily Gorbik, Thomas Bogendoerfer, Borislav Petkov, Paul Walmsley, Thomas Gleixner, linux-arm-kernel, Tony Luck, linux-parisc, linux-mips, Palmer Dabbelt, linuxppc-dev, David S. Miller On 5/7/20 8:07 PM, Anshuman Khandual wrote: > There are multiple similar definitions for is_hugepage_only_range() on > various platforms. Lets just add it's generic fallback definition for > platforms that do not override. This help reduce code duplication. > > Cc: Russell King <linux@armlinux.org.uk> > Cc: Catalin Marinas <catalin.marinas@arm.com> > Cc: Will Deacon <will@kernel.org> > Cc: Tony Luck <tony.luck@intel.com> > Cc: Fenghua Yu <fenghua.yu@intel.com> > Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de> > Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com> > Cc: Helge Deller <deller@gmx.de> > Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> > Cc: Paul Mackerras <paulus@samba.org> > Cc: Michael Ellerman <mpe@ellerman.id.au> > Cc: Paul Walmsley <paul.walmsley@sifive.com> > Cc: Palmer Dabbelt <palmer@dabbelt.com> > Cc: Heiko Carstens <heiko.carstens@de.ibm.com> > Cc: Vasily Gorbik <gor@linux.ibm.com> > Cc: Christian Borntraeger <borntraeger@de.ibm.com> > Cc: Yoshinori Sato <ysato@users.sourceforge.jp> > Cc: Rich Felker <dalias@libc.org> > Cc: "David S. Miller" <davem@davemloft.net> > Cc: Thomas Gleixner <tglx@linutronix.de> > Cc: Ingo Molnar <mingo@redhat.com> > Cc: Borislav Petkov <bp@alien8.de> > Cc: "H. Peter Anvin" <hpa@zytor.com> > Cc: Mike Kravetz <mike.kravetz@oracle.com> > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: x86@kernel.org > Cc: linux-arm-kernel@lists.infradead.org > Cc: linux-ia64@vger.kernel.org > Cc: linux-mips@vger.kernel.org > Cc: linux-parisc@vger.kernel.org > Cc: linuxppc-dev@lists.ozlabs.org > Cc: linux-riscv@lists.infradead.org > Cc: linux-s390@vger.kernel.org > Cc: linux-sh@vger.kernel.org > Cc: sparclinux@vger.kernel.org > Cc: linux-mm@kvack.org > Cc: linux-arch@vger.kernel.org > Cc: linux-kernel@vger.kernel.org > Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com> > --- > arch/arm/include/asm/hugetlb.h | 6 ------ > arch/arm64/include/asm/hugetlb.h | 6 ------ > arch/ia64/include/asm/hugetlb.h | 1 + > arch/mips/include/asm/hugetlb.h | 7 ------- > arch/parisc/include/asm/hugetlb.h | 6 ------ > arch/powerpc/include/asm/hugetlb.h | 1 + > arch/riscv/include/asm/hugetlb.h | 6 ------ > arch/s390/include/asm/hugetlb.h | 7 ------- > arch/sh/include/asm/hugetlb.h | 6 ------ > arch/sparc/include/asm/hugetlb.h | 6 ------ > arch/x86/include/asm/hugetlb.h | 6 ------ > include/linux/hugetlb.h | 9 +++++++++ > 12 files changed, 11 insertions(+), 56 deletions(-) > <snip> > diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h > index 43a1cef8f0f1..c01c0c6f7fd4 100644 > --- a/include/linux/hugetlb.h > +++ b/include/linux/hugetlb.h > @@ -591,6 +591,15 @@ static inline unsigned int blocks_per_huge_page(struct hstate *h) > > #include <asm/hugetlb.h> > > +#ifndef is_hugepage_only_range > +static inline int is_hugepage_only_range(struct mm_struct *mm, > + unsigned long addr, unsigned long len) > +{ > + return 0; > +} > +#define is_hugepage_only_range is_hugepage_only_range > +#endif > + > #ifndef arch_make_huge_pte > static inline pte_t arch_make_huge_pte(pte_t entry, struct vm_area_struct *vma, > struct page *page, int writable) > Did you try building without CONFIG_HUGETLB_PAGE defined? I'm guessing that you need a stub for is_hugepage_only_range(). Or, perhaps add this to asm-generic/hugetlb.h? -- Mike Kravetz _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH V3 2/3] mm/hugetlb: Define a generic fallback for is_hugepage_only_range() 2020-05-08 22:22 ` Mike Kravetz @ 2020-05-11 3:14 ` Anshuman Khandual 2020-05-11 18:52 ` Mike Kravetz 0 siblings, 1 reply; 11+ messages in thread From: Anshuman Khandual @ 2020-05-11 3:14 UTC (permalink / raw) To: Mike Kravetz, linux-mm, akpm Cc: Rich Felker, linux-ia64, linux-sh, Catalin Marinas, Heiko Carstens, linux-kernel, James E.J. Bottomley, Paul Mackerras, H. Peter Anvin, sparclinux, linux-riscv, Will Deacon, linux-arch, linux-s390, Yoshinori Sato, Michael Ellerman, Helge Deller, x86, Russell King, Christian Borntraeger, Ingo Molnar, Benjamin Herrenschmidt, Fenghua Yu, Vasily Gorbik, Thomas Bogendoerfer, Borislav Petkov, Paul Walmsley, Thomas Gleixner, linux-arm-kernel, Tony Luck, linux-parisc, linux-mips, Palmer Dabbelt, linuxppc-dev, David S. Miller On 05/09/2020 03:52 AM, Mike Kravetz wrote: > On 5/7/20 8:07 PM, Anshuman Khandual wrote: >> There are multiple similar definitions for is_hugepage_only_range() on >> various platforms. Lets just add it's generic fallback definition for >> platforms that do not override. This help reduce code duplication. >> >> Cc: Russell King <linux@armlinux.org.uk> >> Cc: Catalin Marinas <catalin.marinas@arm.com> >> Cc: Will Deacon <will@kernel.org> >> Cc: Tony Luck <tony.luck@intel.com> >> Cc: Fenghua Yu <fenghua.yu@intel.com> >> Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de> >> Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com> >> Cc: Helge Deller <deller@gmx.de> >> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> >> Cc: Paul Mackerras <paulus@samba.org> >> Cc: Michael Ellerman <mpe@ellerman.id.au> >> Cc: Paul Walmsley <paul.walmsley@sifive.com> >> Cc: Palmer Dabbelt <palmer@dabbelt.com> >> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> >> Cc: Vasily Gorbik <gor@linux.ibm.com> >> Cc: Christian Borntraeger <borntraeger@de.ibm.com> >> Cc: Yoshinori Sato <ysato@users.sourceforge.jp> >> Cc: Rich Felker <dalias@libc.org> >> Cc: "David S. Miller" <davem@davemloft.net> >> Cc: Thomas Gleixner <tglx@linutronix.de> >> Cc: Ingo Molnar <mingo@redhat.com> >> Cc: Borislav Petkov <bp@alien8.de> >> Cc: "H. Peter Anvin" <hpa@zytor.com> >> Cc: Mike Kravetz <mike.kravetz@oracle.com> >> Cc: Andrew Morton <akpm@linux-foundation.org> >> Cc: x86@kernel.org >> Cc: linux-arm-kernel@lists.infradead.org >> Cc: linux-ia64@vger.kernel.org >> Cc: linux-mips@vger.kernel.org >> Cc: linux-parisc@vger.kernel.org >> Cc: linuxppc-dev@lists.ozlabs.org >> Cc: linux-riscv@lists.infradead.org >> Cc: linux-s390@vger.kernel.org >> Cc: linux-sh@vger.kernel.org >> Cc: sparclinux@vger.kernel.org >> Cc: linux-mm@kvack.org >> Cc: linux-arch@vger.kernel.org >> Cc: linux-kernel@vger.kernel.org >> Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com> >> --- >> arch/arm/include/asm/hugetlb.h | 6 ------ >> arch/arm64/include/asm/hugetlb.h | 6 ------ >> arch/ia64/include/asm/hugetlb.h | 1 + >> arch/mips/include/asm/hugetlb.h | 7 ------- >> arch/parisc/include/asm/hugetlb.h | 6 ------ >> arch/powerpc/include/asm/hugetlb.h | 1 + >> arch/riscv/include/asm/hugetlb.h | 6 ------ >> arch/s390/include/asm/hugetlb.h | 7 ------- >> arch/sh/include/asm/hugetlb.h | 6 ------ >> arch/sparc/include/asm/hugetlb.h | 6 ------ >> arch/x86/include/asm/hugetlb.h | 6 ------ >> include/linux/hugetlb.h | 9 +++++++++ >> 12 files changed, 11 insertions(+), 56 deletions(-) >> > <snip> >> diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h >> index 43a1cef8f0f1..c01c0c6f7fd4 100644 >> --- a/include/linux/hugetlb.h >> +++ b/include/linux/hugetlb.h >> @@ -591,6 +591,15 @@ static inline unsigned int blocks_per_huge_page(struct hstate *h) >> >> #include <asm/hugetlb.h> >> >> +#ifndef is_hugepage_only_range >> +static inline int is_hugepage_only_range(struct mm_struct *mm, >> + unsigned long addr, unsigned long len) >> +{ >> + return 0; >> +} >> +#define is_hugepage_only_range is_hugepage_only_range >> +#endif >> + >> #ifndef arch_make_huge_pte >> static inline pte_t arch_make_huge_pte(pte_t entry, struct vm_area_struct *vma, >> struct page *page, int writable) >> > > Did you try building without CONFIG_HUGETLB_PAGE defined? I'm guessing Yes I did for multiple platforms (s390, arm64, ia64, x86, powerpc etc). > that you need a stub for is_hugepage_only_range(). Or, perhaps add this > to asm-generic/hugetlb.h? > There is already a stub (include/linux/hugetlb.h) when !CONFIG_HUGETLB_PAGE. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH V3 2/3] mm/hugetlb: Define a generic fallback for is_hugepage_only_range() 2020-05-11 3:14 ` Anshuman Khandual @ 2020-05-11 18:52 ` Mike Kravetz 0 siblings, 0 replies; 11+ messages in thread From: Mike Kravetz @ 2020-05-11 18:52 UTC (permalink / raw) To: Anshuman Khandual, linux-mm, akpm Cc: Rich Felker, linux-ia64, linux-sh, Catalin Marinas, Heiko Carstens, linux-kernel, James E.J. Bottomley, Paul Mackerras, H. Peter Anvin, sparclinux, linux-riscv, Will Deacon, linux-arch, linux-s390, Yoshinori Sato, Michael Ellerman, Helge Deller, x86, Russell King, Christian Borntraeger, Ingo Molnar, Benjamin Herrenschmidt, Fenghua Yu, Vasily Gorbik, Thomas Bogendoerfer, Borislav Petkov, Paul Walmsley, Thomas Gleixner, linux-arm-kernel, Tony Luck, linux-parisc, linux-mips, Palmer Dabbelt, linuxppc-dev, David S. Miller On 5/10/20 8:14 PM, Anshuman Khandual wrote: > On 05/09/2020 03:52 AM, Mike Kravetz wrote: >> On 5/7/20 8:07 PM, Anshuman Khandual wrote: >> >> Did you try building without CONFIG_HUGETLB_PAGE defined? I'm guessing > > Yes I did for multiple platforms (s390, arm64, ia64, x86, powerpc etc). > >> that you need a stub for is_hugepage_only_range(). Or, perhaps add this >> to asm-generic/hugetlb.h? >> > There is already a stub (include/linux/hugetlb.h) when !CONFIG_HUGETLB_PAGE. > Thanks! I missed that stub in the existing code. I like the removal of redundant code. Acked-by: Mike Kravetz <mike.kravetz@oracle.com> -- Mike Kravetz _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH V3 3/3] mm/hugetlb: Define a generic fallback for arch_clear_hugepage_flags() 2020-05-08 3:07 [PATCH V3 0/3] mm/hugetlb: Add some new generic fallbacks Anshuman Khandual 2020-05-08 3:07 ` [PATCH V3 1/3] arm64/mm: Drop __HAVE_ARCH_HUGE_PTEP_GET Anshuman Khandual 2020-05-08 3:07 ` [PATCH V3 2/3] mm/hugetlb: Define a generic fallback for is_hugepage_only_range() Anshuman Khandual @ 2020-05-08 3:07 ` Anshuman Khandual 2020-05-11 20:22 ` Mike Kravetz 2 siblings, 1 reply; 11+ messages in thread From: Anshuman Khandual @ 2020-05-08 3:07 UTC (permalink / raw) To: linux-mm, akpm Cc: Rich Felker, linux-ia64, linux-sh, Catalin Marinas, Heiko Carstens, linux-kernel, James E.J. Bottomley, Paul Mackerras, H. Peter Anvin, sparclinux, linux-riscv, Will Deacon, linux-arch, linux-s390, Yoshinori Sato, Michael Ellerman, Helge Deller, x86, Russell King, Christian Borntraeger, Ingo Molnar, Benjamin Herrenschmidt, Fenghua Yu, Vasily Gorbik, Anshuman Khandual, Thomas Bogendoerfer, Borislav Petkov, Paul Walmsley, Thomas Gleixner, linux-arm-kernel, Tony Luck, linux-parisc, linux-mips, Palmer Dabbelt, linuxppc-dev, David S. Miller, Mike Kravetz There are multiple similar definitions for arch_clear_hugepage_flags() on various platforms. Lets just add it's generic fallback definition for platforms that do not override. This help reduce code duplication. Cc: Russell King <linux@armlinux.org.uk> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will@kernel.org> Cc: Tony Luck <tony.luck@intel.com> Cc: Fenghua Yu <fenghua.yu@intel.com> Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de> Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com> Cc: Helge Deller <deller@gmx.de> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Paul Walmsley <paul.walmsley@sifive.com> Cc: Palmer Dabbelt <palmer@dabbelt.com> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Vasily Gorbik <gor@linux.ibm.com> Cc: Christian Borntraeger <borntraeger@de.ibm.com> Cc: Yoshinori Sato <ysato@users.sourceforge.jp> Cc: Rich Felker <dalias@libc.org> Cc: "David S. Miller" <davem@davemloft.net> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: Borislav Petkov <bp@alien8.de> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Mike Kravetz <mike.kravetz@oracle.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: x86@kernel.org Cc: linux-arm-kernel@lists.infradead.org Cc: linux-ia64@vger.kernel.org Cc: linux-mips@vger.kernel.org Cc: linux-parisc@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org Cc: linux-riscv@lists.infradead.org Cc: linux-s390@vger.kernel.org Cc: linux-sh@vger.kernel.org Cc: sparclinux@vger.kernel.org Cc: linux-mm@kvack.org Cc: linux-arch@vger.kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com> --- arch/arm/include/asm/hugetlb.h | 1 + arch/arm64/include/asm/hugetlb.h | 1 + arch/ia64/include/asm/hugetlb.h | 4 ---- arch/mips/include/asm/hugetlb.h | 4 ---- arch/parisc/include/asm/hugetlb.h | 4 ---- arch/powerpc/include/asm/hugetlb.h | 4 ---- arch/riscv/include/asm/hugetlb.h | 4 ---- arch/s390/include/asm/hugetlb.h | 1 + arch/sh/include/asm/hugetlb.h | 1 + arch/sparc/include/asm/hugetlb.h | 4 ---- arch/x86/include/asm/hugetlb.h | 4 ---- include/linux/hugetlb.h | 5 +++++ 12 files changed, 9 insertions(+), 28 deletions(-) diff --git a/arch/arm/include/asm/hugetlb.h b/arch/arm/include/asm/hugetlb.h index 9ecd516d1ff7..d02d6ca88e92 100644 --- a/arch/arm/include/asm/hugetlb.h +++ b/arch/arm/include/asm/hugetlb.h @@ -18,5 +18,6 @@ static inline void arch_clear_hugepage_flags(struct page *page) { clear_bit(PG_dcache_clean, &page->flags); } +#define arch_clear_hugepage_flags arch_clear_hugepage_flags #endif /* _ASM_ARM_HUGETLB_H */ diff --git a/arch/arm64/include/asm/hugetlb.h b/arch/arm64/include/asm/hugetlb.h index 8f58e052697a..94ba0c5bced2 100644 --- a/arch/arm64/include/asm/hugetlb.h +++ b/arch/arm64/include/asm/hugetlb.h @@ -21,6 +21,7 @@ static inline void arch_clear_hugepage_flags(struct page *page) { clear_bit(PG_dcache_clean, &page->flags); } +#define arch_clear_hugepage_flags arch_clear_hugepage_flags extern pte_t arch_make_huge_pte(pte_t entry, struct vm_area_struct *vma, struct page *page, int writable); diff --git a/arch/ia64/include/asm/hugetlb.h b/arch/ia64/include/asm/hugetlb.h index 6ef50b9a4bdf..7e46ebde8c0c 100644 --- a/arch/ia64/include/asm/hugetlb.h +++ b/arch/ia64/include/asm/hugetlb.h @@ -28,10 +28,6 @@ static inline void huge_ptep_clear_flush(struct vm_area_struct *vma, { } -static inline void arch_clear_hugepage_flags(struct page *page) -{ -} - #include <asm-generic/hugetlb.h> #endif /* _ASM_IA64_HUGETLB_H */ diff --git a/arch/mips/include/asm/hugetlb.h b/arch/mips/include/asm/hugetlb.h index 8b201e281f67..10e3be870df7 100644 --- a/arch/mips/include/asm/hugetlb.h +++ b/arch/mips/include/asm/hugetlb.h @@ -75,10 +75,6 @@ static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma, return changed; } -static inline void arch_clear_hugepage_flags(struct page *page) -{ -} - #include <asm-generic/hugetlb.h> #endif /* __ASM_HUGETLB_H */ diff --git a/arch/parisc/include/asm/hugetlb.h b/arch/parisc/include/asm/hugetlb.h index 411d9d867baa..a69cf9efb0c1 100644 --- a/arch/parisc/include/asm/hugetlb.h +++ b/arch/parisc/include/asm/hugetlb.h @@ -42,10 +42,6 @@ int huge_ptep_set_access_flags(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep, pte_t pte, int dirty); -static inline void arch_clear_hugepage_flags(struct page *page) -{ -} - #include <asm-generic/hugetlb.h> #endif /* _ASM_PARISC64_HUGETLB_H */ diff --git a/arch/powerpc/include/asm/hugetlb.h b/arch/powerpc/include/asm/hugetlb.h index b167c869d72d..e6dfa63da552 100644 --- a/arch/powerpc/include/asm/hugetlb.h +++ b/arch/powerpc/include/asm/hugetlb.h @@ -61,10 +61,6 @@ int huge_ptep_set_access_flags(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep, pte_t pte, int dirty); -static inline void arch_clear_hugepage_flags(struct page *page) -{ -} - #include <asm-generic/hugetlb.h> #else /* ! CONFIG_HUGETLB_PAGE */ diff --git a/arch/riscv/include/asm/hugetlb.h b/arch/riscv/include/asm/hugetlb.h index 866f6ae6467c..a5c2ca1d1cd8 100644 --- a/arch/riscv/include/asm/hugetlb.h +++ b/arch/riscv/include/asm/hugetlb.h @@ -5,8 +5,4 @@ #include <asm-generic/hugetlb.h> #include <asm/page.h> -static inline void arch_clear_hugepage_flags(struct page *page) -{ -} - #endif /* _ASM_RISCV_HUGETLB_H */ diff --git a/arch/s390/include/asm/hugetlb.h b/arch/s390/include/asm/hugetlb.h index 7d27ea96ec2f..9ddf4a43a590 100644 --- a/arch/s390/include/asm/hugetlb.h +++ b/arch/s390/include/asm/hugetlb.h @@ -39,6 +39,7 @@ static inline void arch_clear_hugepage_flags(struct page *page) { clear_bit(PG_arch_1, &page->flags); } +#define arch_clear_hugepage_flags arch_clear_hugepage_flags static inline void huge_pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep, unsigned long sz) diff --git a/arch/sh/include/asm/hugetlb.h b/arch/sh/include/asm/hugetlb.h index 536ad2cb8aa4..ae4de7b89210 100644 --- a/arch/sh/include/asm/hugetlb.h +++ b/arch/sh/include/asm/hugetlb.h @@ -30,6 +30,7 @@ static inline void arch_clear_hugepage_flags(struct page *page) { clear_bit(PG_dcache_clean, &page->flags); } +#define arch_clear_hugepage_flags arch_clear_hugepage_flags #include <asm-generic/hugetlb.h> diff --git a/arch/sparc/include/asm/hugetlb.h b/arch/sparc/include/asm/hugetlb.h index a056fe1119f5..53838a173f62 100644 --- a/arch/sparc/include/asm/hugetlb.h +++ b/arch/sparc/include/asm/hugetlb.h @@ -47,10 +47,6 @@ static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma, return changed; } -static inline void arch_clear_hugepage_flags(struct page *page) -{ -} - #define __HAVE_ARCH_HUGETLB_FREE_PGD_RANGE void hugetlb_free_pgd_range(struct mmu_gather *tlb, unsigned long addr, unsigned long end, unsigned long floor, diff --git a/arch/x86/include/asm/hugetlb.h b/arch/x86/include/asm/hugetlb.h index cc98f79074d0..1721b1aadeb1 100644 --- a/arch/x86/include/asm/hugetlb.h +++ b/arch/x86/include/asm/hugetlb.h @@ -7,8 +7,4 @@ #define hugepages_supported() boot_cpu_has(X86_FEATURE_PSE) -static inline void arch_clear_hugepage_flags(struct page *page) -{ -} - #endif /* _ASM_X86_HUGETLB_H */ diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index c01c0c6f7fd4..04bc794becfc 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h @@ -600,6 +600,11 @@ static inline int is_hugepage_only_range(struct mm_struct *mm, #define is_hugepage_only_range is_hugepage_only_range #endif +#ifndef arch_clear_hugepage_flags +static inline void arch_clear_hugepage_flags(struct page *page) { } +#define arch_clear_hugepage_flags arch_clear_hugepage_flags +#endif + #ifndef arch_make_huge_pte static inline pte_t arch_make_huge_pte(pte_t entry, struct vm_area_struct *vma, struct page *page, int writable) -- 2.20.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH V3 3/3] mm/hugetlb: Define a generic fallback for arch_clear_hugepage_flags() 2020-05-08 3:07 ` [PATCH V3 3/3] mm/hugetlb: Define a generic fallback for arch_clear_hugepage_flags() Anshuman Khandual @ 2020-05-11 20:22 ` Mike Kravetz 0 siblings, 0 replies; 11+ messages in thread From: Mike Kravetz @ 2020-05-11 20:22 UTC (permalink / raw) To: Anshuman Khandual, linux-mm, akpm Cc: Rich Felker, linux-ia64, linux-sh, Catalin Marinas, Heiko Carstens, linux-kernel, James E.J. Bottomley, Paul Mackerras, H. Peter Anvin, sparclinux, linux-riscv, Will Deacon, linux-arch, linux-s390, Yoshinori Sato, Michael Ellerman, Helge Deller, x86, Russell King, Christian Borntraeger, Ingo Molnar, Benjamin Herrenschmidt, Fenghua Yu, Vasily Gorbik, Thomas Bogendoerfer, Borislav Petkov, Paul Walmsley, Thomas Gleixner, linux-arm-kernel, Tony Luck, linux-parisc, linux-mips, Palmer Dabbelt, linuxppc-dev, David S. Miller On 5/7/20 8:07 PM, Anshuman Khandual wrote: > There are multiple similar definitions for arch_clear_hugepage_flags() on > various platforms. Lets just add it's generic fallback definition for > platforms that do not override. This help reduce code duplication. > > Cc: Russell King <linux@armlinux.org.uk> > Cc: Catalin Marinas <catalin.marinas@arm.com> > Cc: Will Deacon <will@kernel.org> > Cc: Tony Luck <tony.luck@intel.com> > Cc: Fenghua Yu <fenghua.yu@intel.com> > Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de> > Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com> > Cc: Helge Deller <deller@gmx.de> > Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> > Cc: Paul Mackerras <paulus@samba.org> > Cc: Michael Ellerman <mpe@ellerman.id.au> > Cc: Paul Walmsley <paul.walmsley@sifive.com> > Cc: Palmer Dabbelt <palmer@dabbelt.com> > Cc: Heiko Carstens <heiko.carstens@de.ibm.com> > Cc: Vasily Gorbik <gor@linux.ibm.com> > Cc: Christian Borntraeger <borntraeger@de.ibm.com> > Cc: Yoshinori Sato <ysato@users.sourceforge.jp> > Cc: Rich Felker <dalias@libc.org> > Cc: "David S. Miller" <davem@davemloft.net> > Cc: Thomas Gleixner <tglx@linutronix.de> > Cc: Ingo Molnar <mingo@redhat.com> > Cc: Borislav Petkov <bp@alien8.de> > Cc: "H. Peter Anvin" <hpa@zytor.com> > Cc: Mike Kravetz <mike.kravetz@oracle.com> > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: x86@kernel.org > Cc: linux-arm-kernel@lists.infradead.org > Cc: linux-ia64@vger.kernel.org > Cc: linux-mips@vger.kernel.org > Cc: linux-parisc@vger.kernel.org > Cc: linuxppc-dev@lists.ozlabs.org > Cc: linux-riscv@lists.infradead.org > Cc: linux-s390@vger.kernel.org > Cc: linux-sh@vger.kernel.org > Cc: sparclinux@vger.kernel.org > Cc: linux-mm@kvack.org > Cc: linux-arch@vger.kernel.org > Cc: linux-kernel@vger.kernel.org > Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com> Thanks! Removing duplicate code is good. Acked-by: Mike Kravetz <mike.kravetz@oracle.com> -- Mike Kravetz _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2020-05-11 20:24 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-05-08 3:07 [PATCH V3 0/3] mm/hugetlb: Add some new generic fallbacks Anshuman Khandual 2020-05-08 3:07 ` [PATCH V3 1/3] arm64/mm: Drop __HAVE_ARCH_HUGE_PTEP_GET Anshuman Khandual 2020-05-08 22:09 ` Mike Kravetz 2020-05-11 4:02 ` Anshuman Khandual 2020-05-11 18:49 ` Mike Kravetz 2020-05-08 3:07 ` [PATCH V3 2/3] mm/hugetlb: Define a generic fallback for is_hugepage_only_range() Anshuman Khandual 2020-05-08 22:22 ` Mike Kravetz 2020-05-11 3:14 ` Anshuman Khandual 2020-05-11 18:52 ` Mike Kravetz 2020-05-08 3:07 ` [PATCH V3 3/3] mm/hugetlb: Define a generic fallback for arch_clear_hugepage_flags() Anshuman Khandual 2020-05-11 20:22 ` Mike Kravetz
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).