33ae8f801a
hugetlb: clear huge pte during flush function on mips platform
...
If multiple threads are accessing the same huge page at the same
time, hugetlb_cow will be called if one thread write the COW huge
page. And function huge_ptep_clear_flush is called to notify other
threads to clear the huge pte tlb entry. The other threads clear
the huge pte tlb entry and reload it from page table, the reload
huge pte entry may be old.
This patch fixes this issue on mips platform, and it clears huge
pte entry before notifying other threads to flush current huge
page entry, it is similar with other architectures.
Signed-off-by: Bibo Mao <maobibo@loongson.cn >
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de >
2021-05-11 22:34:53 +02:00
5be9934328
mm/hugetlb: define a generic fallback for arch_clear_hugepage_flags()
...
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.
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Acked-by: Mike Kravetz <mike.kravetz@oracle.com >
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 >
Link: http://lkml.kernel.org/r/1588907271-11920-4-git-send-email-anshuman.khandual@arm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2020-06-03 20:09:46 -07:00
b0eae98c66
mm/hugetlb: define a generic fallback for is_hugepage_only_range()
...
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.
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Acked-by: Mike Kravetz <mike.kravetz@oracle.com >
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 >
Link: http://lkml.kernel.org/r/1588907271-11920-3-git-send-email-anshuman.khandual@arm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2020-06-03 20:09:46 -07:00
544db7597a
hugetlb: introduce generic version of huge_ptep_get
...
ia64, mips, parisc, powerpc, sh, sparc, x86 architectures use the same
version of huge_ptep_get, so move this generic implementation into
asm-generic/hugetlb.h.
[arnd@arndb.de: fix ARM 3level page tables]
Link: http://lkml.kernel.org/r/20181005161722.904274-1-arnd@arndb.de
Link: http://lkml.kernel.org/r/20180920060358.16606-12-alex@ghiti.fr
Signed-off-by: Alexandre Ghiti <alex@ghiti.fr >
Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com >
Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com >
Tested-by: Helge Deller <deller@gmx.de > [parisc]
Acked-by: Catalin Marinas <catalin.marinas@arm.com > [arm64]
Acked-by: Paul Burton <paul.burton@mips.com > [MIPS]
Acked-by: Ingo Molnar <mingo@kernel.org > [x86]
Cc: Arnd Bergmann <arnd@arndb.de >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: David S. Miller <davem@davemloft.net >
Cc: Fenghua Yu <fenghua.yu@intel.com >
Cc: Heiko Carstens <heiko.carstens@de.ibm.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James E.J. Bottomley <jejb@parisc-linux.org >
Cc: James Hogan <jhogan@kernel.org >
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ralf Baechle <ralf@linux-mips.org >
Cc: Rich Felker <dalias@libc.org >
Cc: Russell King <linux@armlinux.org.uk >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Will Deacon <will.deacon@arm.com >
Cc: Yoshinori Sato <ysato@users.sourceforge.jp >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2018-10-26 16:26:34 -07:00
facf6d5b8b
hugetlb: introduce generic version of huge_ptep_set_access_flags()
...
arm, ia64, sh, x86 architectures use the same version
of huge_ptep_set_access_flags, so move this generic implementation
into asm-generic/hugetlb.h.
Link: http://lkml.kernel.org/r/20180920060358.16606-11-alex@ghiti.fr
Signed-off-by: Alexandre Ghiti <alex@ghiti.fr >
Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com >
Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com >
Tested-by: Helge Deller <deller@gmx.de > [parisc]
Acked-by: Catalin Marinas <catalin.marinas@arm.com > [arm64]
Acked-by: Paul Burton <paul.burton@mips.com > [MIPS]
Acked-by: Ingo Molnar <mingo@kernel.org > [x86]
Cc: Arnd Bergmann <arnd@arndb.de >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: David S. Miller <davem@davemloft.net >
Cc: Fenghua Yu <fenghua.yu@intel.com >
Cc: Heiko Carstens <heiko.carstens@de.ibm.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James E.J. Bottomley <jejb@parisc-linux.org >
Cc: James Hogan <jhogan@kernel.org >
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ralf Baechle <ralf@linux-mips.org >
Cc: Rich Felker <dalias@libc.org >
Cc: Russell King <linux@armlinux.org.uk >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Will Deacon <will.deacon@arm.com >
Cc: Yoshinori Sato <ysato@users.sourceforge.jp >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2018-10-26 16:26:34 -07:00
8e581d433b
hugetlb: introduce generic version of huge_ptep_set_wrprotect()
...
arm, ia64, mips, powerpc, sh, x86 architectures use the same version of
huge_ptep_set_wrprotect, so move this generic implementation into
asm-generic/hugetlb.h.
Link: http://lkml.kernel.org/r/20180920060358.16606-10-alex@ghiti.fr
Signed-off-by: Alexandre Ghiti <alex@ghiti.fr >
Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com >
Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com >
Tested-by: Helge Deller <deller@gmx.de > [parisc]
Acked-by: Catalin Marinas <catalin.marinas@arm.com > [arm64]
Acked-by: Paul Burton <paul.burton@mips.com > [MIPS]
Acked-by: Ingo Molnar <mingo@kernel.org > [x86]
Cc: Arnd Bergmann <arnd@arndb.de >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: David S. Miller <davem@davemloft.net >
Cc: Fenghua Yu <fenghua.yu@intel.com >
Cc: Heiko Carstens <heiko.carstens@de.ibm.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James E.J. Bottomley <jejb@parisc-linux.org >
Cc: James Hogan <jhogan@kernel.org >
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ralf Baechle <ralf@linux-mips.org >
Cc: Rich Felker <dalias@libc.org >
Cc: Russell King <linux@armlinux.org.uk >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Will Deacon <will.deacon@arm.com >
Cc: Yoshinori Sato <ysato@users.sourceforge.jp >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2018-10-26 16:26:34 -07:00
78d6e4e8ea
hugetlb: introduce generic version of prepare_hugepage_range
...
arm, arm64, powerpc, sparc, x86 architectures use the same version of
prepare_hugepage_range, so move this generic implementation into
asm-generic/hugetlb.h.
Link: http://lkml.kernel.org/r/20180920060358.16606-9-alex@ghiti.fr
Signed-off-by: Alexandre Ghiti <alex@ghiti.fr >
Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com >
Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com >
Tested-by: Helge Deller <deller@gmx.de > [parisc]
Acked-by: Catalin Marinas <catalin.marinas@arm.com > [arm64]
Acked-by: Paul Burton <paul.burton@mips.com > [MIPS]
Acked-by: Ingo Molnar <mingo@kernel.org > [x86]
Cc: Arnd Bergmann <arnd@arndb.de >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: David S. Miller <davem@davemloft.net >
Cc: Fenghua Yu <fenghua.yu@intel.com >
Cc: Heiko Carstens <heiko.carstens@de.ibm.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James E.J. Bottomley <jejb@parisc-linux.org >
Cc: James Hogan <jhogan@kernel.org >
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ralf Baechle <ralf@linux-mips.org >
Cc: Rich Felker <dalias@libc.org >
Cc: Russell King <linux@armlinux.org.uk >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Will Deacon <will.deacon@arm.com >
Cc: Yoshinori Sato <ysato@users.sourceforge.jp >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2018-10-26 16:26:34 -07:00
c4916a0086
hugetlb: introduce generic version of huge_pte_wrprotect
...
arm, arm64, ia64, mips, parisc, powerpc, sh, sparc, x86 architectures use
the same version of huge_pte_wrprotect, so move this generic
implementation into asm-generic/hugetlb.h.
Link: http://lkml.kernel.org/r/20180920060358.16606-8-alex@ghiti.fr
Signed-off-by: Alexandre Ghiti <alex@ghiti.fr >
Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com >
Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com >
Tested-by: Helge Deller <deller@gmx.de > [parisc]
Acked-by: Catalin Marinas <catalin.marinas@arm.com > [arm64]
Acked-by: Paul Burton <paul.burton@mips.com > [MIPS]
Acked-by: Ingo Molnar <mingo@kernel.org > [x86]
Cc: Arnd Bergmann <arnd@arndb.de >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: David S. Miller <davem@davemloft.net >
Cc: Fenghua Yu <fenghua.yu@intel.com >
Cc: Heiko Carstens <heiko.carstens@de.ibm.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James E.J. Bottomley <jejb@parisc-linux.org >
Cc: James Hogan <jhogan@kernel.org >
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ralf Baechle <ralf@linux-mips.org >
Cc: Rich Felker <dalias@libc.org >
Cc: Russell King <linux@armlinux.org.uk >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Will Deacon <will.deacon@arm.com >
Cc: Yoshinori Sato <ysato@users.sourceforge.jp >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2018-10-26 16:26:34 -07:00
cae72abc1a
hugetlb: introduce generic version of huge_pte_none()
...
arm, arm64, ia64, mips, parisc, powerpc, sh, sparc, x86 architectures use
the same version of huge_pte_none, so move this generic implementation
into asm-generic/hugetlb.h.
Link: http://lkml.kernel.org/r/20180920060358.16606-7-alex@ghiti.fr
Signed-off-by: Alexandre Ghiti <alex@ghiti.fr >
Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com >
Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com >
Tested-by: Helge Deller <deller@gmx.de > [parisc]
Acked-by: Catalin Marinas <catalin.marinas@arm.com > [arm64]
Acked-by: Paul Burton <paul.burton@mips.com > [MIPS]
Acked-by: Ingo Molnar <mingo@kernel.org > [x86]
Cc: Arnd Bergmann <arnd@arndb.de >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: David S. Miller <davem@davemloft.net >
Cc: Fenghua Yu <fenghua.yu@intel.com >
Cc: Heiko Carstens <heiko.carstens@de.ibm.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James E.J. Bottomley <jejb@parisc-linux.org >
Cc: James Hogan <jhogan@kernel.org >
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ralf Baechle <ralf@linux-mips.org >
Cc: Rich Felker <dalias@libc.org >
Cc: Russell King <linux@armlinux.org.uk >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Will Deacon <will.deacon@arm.com >
Cc: Yoshinori Sato <ysato@users.sourceforge.jp >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2018-10-26 16:26:34 -07:00
fe632225bd
hugetlb: introduce generic version of huge_ptep_clear_flush
...
arm, x86 architectures use the same version of huge_ptep_clear_flush, so
move this generic implementation into asm-generic/hugetlb.h.
Link: http://lkml.kernel.org/r/20180920060358.16606-6-alex@ghiti.fr
Signed-off-by: Alexandre Ghiti <alex@ghiti.fr >
Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com >
Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com >
Tested-by: Helge Deller <deller@gmx.de > [parisc]
Acked-by: Catalin Marinas <catalin.marinas@arm.com > [arm64]
Acked-by: Paul Burton <paul.burton@mips.com > [MIPS]
Acked-by: Ingo Molnar <mingo@kernel.org > [x86]
Cc: Arnd Bergmann <arnd@arndb.de >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: David S. Miller <davem@davemloft.net >
Cc: Fenghua Yu <fenghua.yu@intel.com >
Cc: Heiko Carstens <heiko.carstens@de.ibm.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James E.J. Bottomley <jejb@parisc-linux.org >
Cc: James Hogan <jhogan@kernel.org >
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ralf Baechle <ralf@linux-mips.org >
Cc: Rich Felker <dalias@libc.org >
Cc: Russell King <linux@armlinux.org.uk >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Will Deacon <will.deacon@arm.com >
Cc: Yoshinori Sato <ysato@users.sourceforge.jp >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2018-10-26 16:26:34 -07:00
a4d838536c
hugetlb: introduce generic version of huge_ptep_get_and_clear()
...
arm, ia64, sh, x86 architectures use the same version of
huge_ptep_get_and_clear, so move this generic implementation into
asm-generic/hugetlb.h.
Link: http://lkml.kernel.org/r/20180920060358.16606-5-alex@ghiti.fr
Signed-off-by: Alexandre Ghiti <alex@ghiti.fr >
Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com >
Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com >
Tested-by: Helge Deller <deller@gmx.de > [parisc]
Acked-by: Catalin Marinas <catalin.marinas@arm.com > [arm64]
Acked-by: Paul Burton <paul.burton@mips.com > [MIPS]
Acked-by: Ingo Molnar <mingo@kernel.org > [x86]
Cc: Arnd Bergmann <arnd@arndb.de >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: David S. Miller <davem@davemloft.net >
Cc: Fenghua Yu <fenghua.yu@intel.com >
Cc: Heiko Carstens <heiko.carstens@de.ibm.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James E.J. Bottomley <jejb@parisc-linux.org >
Cc: James Hogan <jhogan@kernel.org >
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ralf Baechle <ralf@linux-mips.org >
Cc: Rich Felker <dalias@libc.org >
Cc: Russell King <linux@armlinux.org.uk >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Will Deacon <will.deacon@arm.com >
Cc: Yoshinori Sato <ysato@users.sourceforge.jp >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2018-10-26 16:26:34 -07:00
cea685d556
hugetlb: introduce generic version of set_huge_pte_at()
...
arm, ia64, mips, powerpc, sh, x86 architectures use the same version of
set_huge_pte_at, so move this generic implementation into
asm-generic/hugetlb.h.
Link: http://lkml.kernel.org/r/20180920060358.16606-4-alex@ghiti.fr
Signed-off-by: Alexandre Ghiti <alex@ghiti.fr >
Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com >
Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com >
Tested-by: Helge Deller <deller@gmx.de > [parisc]
Acked-by: Catalin Marinas <catalin.marinas@arm.com > [arm64]
Acked-by: Paul Burton <paul.burton@mips.com > [MIPS]
Acked-by: Ingo Molnar <mingo@kernel.org > [x86]
Cc: Arnd Bergmann <arnd@arndb.de >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: David S. Miller <davem@davemloft.net >
Cc: Fenghua Yu <fenghua.yu@intel.com >
Cc: Heiko Carstens <heiko.carstens@de.ibm.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James E.J. Bottomley <jejb@parisc-linux.org >
Cc: James Hogan <jhogan@kernel.org >
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ralf Baechle <ralf@linux-mips.org >
Cc: Rich Felker <dalias@libc.org >
Cc: Russell King <linux@armlinux.org.uk >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Will Deacon <will.deacon@arm.com >
Cc: Yoshinori Sato <ysato@users.sourceforge.jp >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2018-10-26 16:26:34 -07:00
1e5f50fc9d
hugetlb: introduce generic version of hugetlb_free_pgd_range
...
arm, arm64, mips, parisc, sh, x86 architectures use the same version of
hugetlb_free_pgd_range, so move this generic implementation into
asm-generic/hugetlb.h.
Link: http://lkml.kernel.org/r/20180920060358.16606-3-alex@ghiti.fr
Signed-off-by: Alexandre Ghiti <alex@ghiti.fr >
Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com >
Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com >
Tested-by: Helge Deller <deller@gmx.de > [parisc]
Acked-by: Catalin Marinas <catalin.marinas@arm.com > [arm64]
Acked-by: Paul Burton <paul.burton@mips.com > [MIPS]
Acked-by: Ingo Molnar <mingo@kernel.org > [x86]
Cc: Arnd Bergmann <arnd@arndb.de >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: David S. Miller <davem@davemloft.net >
Cc: Fenghua Yu <fenghua.yu@intel.com >
Cc: Heiko Carstens <heiko.carstens@de.ibm.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James E.J. Bottomley <jejb@parisc-linux.org >
Cc: James Hogan <jhogan@kernel.org >
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ralf Baechle <ralf@linux-mips.org >
Cc: Rich Felker <dalias@libc.org >
Cc: Russell King <linux@armlinux.org.uk >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Will Deacon <will.deacon@arm.com >
Cc: Yoshinori Sato <ysato@users.sourceforge.jp >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2018-10-26 16:26:34 -07:00
08bd4fc156
mm/hugetlb: remove arch_prepare/release_hugepage from arch headers
...
Nobody used these hooks so they were removed from common code, and can now
be removed from the architectures.
Signed-off-by: Dominik Dingel <dingel@linux.vnet.ibm.com >
Acked-by: Martin Schwidefsky <schwidefsky@de.ibm.com >
Acked-by: Ralf Baechle <ralf@linux-mips.org >
Cc: Heiko Carstens <heiko.carstens@de.ibm.com >
Cc: Christian Borntraeger <borntraeger@de.ibm.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2015-06-25 17:00:35 -07:00
a67a31fa30
mm/hugetlb: reduce arch dependent code about hugetlb_prefault_arch_hook
...
Currently we have many duplicates in definitions of
hugetlb_prefault_arch_hook. In all architectures this function is empty.
Signed-off-by: Zhang Zhen <zhenzhang.zhang@huawei.com >
Acked-by: David Rientjes <rientjes@google.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2015-06-24 17:49:41 -07:00
106c992a5e
mm/hugetlb: add more arch-defined huge_pte functions
...
Commit abf09bed3c
("s390/mm: implement software dirty bits")
introduced another difference in the pte layout vs. the pmd layout on
s390, thoroughly breaking the s390 support for hugetlbfs. This requires
replacing some more pte_xxx functions in mm/hugetlbfs.c with a
huge_pte_xxx version.
This patch introduces those huge_pte_xxx functions and their generic
implementation in asm-generic/hugetlb.h, which will now be included on
all architectures supporting hugetlbfs apart from s390. This change
will be a no-op for those architectures.
[akpm@linux-foundation.org: fix warning]
Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Cc: Mel Gorman <mgorman@suse.de>
Cc: Hugh Dickins <hughd@google.com>
Cc: Hillf Danton <dhillf@gmail.com>
Acked-by: Michal Hocko <mhocko@suse.cz> [for !s390 parts]
Cc: Tony Luck <tony.luck@intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Paul Mundt <lethal@linux-sh.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Chris Metcalf <cmetcalf@tilera.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2013-04-29 15:54:33 -07:00
ac53c4fca4
MIPS: Avoid mcheck by flushing page range in huge_ptep_set_access_flags()
...
Problem:
1) Huge page mapping of anonymous memory is initially invalid. Will be
faulted in by copy-on-write mechanism.
2) Userspace attempts store at the end of the huge mapping.
3) TLB Refill exception handler fill TLB with a normal (4K sized)
invalid page at the end of the huge mapping virtual address range.
4) Userspace restarted, and re-attempts the store at the end of the
huge mapping.
5) Page from #3 is invalid, we get a fault and go to the hugepage
fault handler. This tries to map a huge page and calls
huge_ptep_set_access_flags() to install the mapping.
6) We just call the generic ptep_set_access_flags() to set up the page
tables, but the flush there assumes a normal (4K sized) page and
only tries to flush the first part of the huge page virtual address
out of the TLB, since the existing entry from step #3 doesn't
conflict, nothing is flushed.
7) We attempt to load the mapping into the TLB, but because it
conflicts with the entry from step #3 , we get a Machine Check
exception.
The fix: Flush the entire rage covered by the huge page in
huge_ptep_set_access_flags(), and remove the optimization in
local_flush_tlb_range() so that the flush actually does the correct
thing.
Signed-off-by: David Daney <david.daney@cavium.com >
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Cc: Hillf Danton <dhillf@gmail.com >
Patchwork: https://patchwork.linux-mips.org/patch/4661/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org >
(cherry picked from commit dd617f258cc39d36be26afee9912624a2d23112c)
2012-12-04 16:57:54 +01:00
5d3a551c28
mm: hugetlb: add arch hook for clearing page flags before entering pool
...
The core page allocator ensures that page flags are zeroed when freeing
pages via free_pages_check. A number of architectures (ARM, PPC, MIPS)
rely on this property to treat new pages as dirty with respect to the data
cache and perform the appropriate flushing before mapping the pages into
userspace.
This can lead to cache synchronisation problems when using hugepages,
since the allocator keeps its own pool of pages above the usual page
allocator and does not reset the page flags when freeing a page into the
pool.
This patch adds a new architecture hook, arch_clear_hugepage_flags, so
that architectures which rely on the page flags being in a particular
state for fresh allocations can adjust the flags accordingly when a page
is freed into the pool.
Signed-off-by: Will Deacon <will.deacon@arm.com >
Cc: Michal Hocko <mhocko@suse.cz >
Reviewed-by: Michal Hocko <mhocko@suse.cz >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2012-10-09 16:22:24 +09:00
5639bc4a64
MIPS: Hugetlb: Keep TLB cache hot while flushing
...
If we only flush the TLB of the given huge page, the TLB cache remains hot
for the relevant mm as it is, and less will be refilled after flush, huge
or not.
Signed-off-by: Hillf Danton <dhillf@gmail.com >
Cc: linux-mips@linux-mips.org
Acked-by: David Daney <david.daney@cavium.com >
Patchwork: https://patchwork.linux-mips.org/patch/2860/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org >
2011-12-07 22:03:45 +00:00
310f130339
MIPS: Invalidate old TLB mappings when updating huge page PTEs.
...
Without this, stale Icache or TLB entries may be used.
Signed-off-by: David Daney <ddaney@caviumnetworks.com >
To: linux-mips@linux-mips.org
https://patchwork.linux-mips.org/patch/2318/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org >
2011-05-10 18:15:26 +01:00
50a41ff292
MIPS: Add support files for hugetlbfs.
...
Signed-off-by: David Daney <ddaney@caviumnetworks.com >
Signed-off-by: Ralf Baechle <ralf@linux-mips.org >
2009-06-17 11:06:30 +01:00