| From 92aa0718c9fa5160ad2f0e7b5bffb52f1ea1e51a Mon Sep 17 00:00:00 2001 |
| From: Huacai Chen <chenhc@lemote.com> |
| Date: Thu, 15 Nov 2018 15:53:54 +0800 |
| Subject: MIPS: Ensure pmd_present() returns false after pmd_mknotpresent() |
| |
| From: Huacai Chen <chenhc@lemote.com> |
| |
| commit 92aa0718c9fa5160ad2f0e7b5bffb52f1ea1e51a upstream. |
| |
| This patch is borrowed from ARM64 to ensure pmd_present() returns false |
| after pmd_mknotpresent(). This is needed for THP. |
| |
| References: 5bb1cc0ff9a6 ("arm64: Ensure pmd_present() returns false after pmd_mknotpresent()") |
| Reviewed-by: James Hogan <jhogan@kernel.org> |
| Signed-off-by: Huacai Chen <chenhc@lemote.com> |
| Signed-off-by: Paul Burton <paul.burton@mips.com> |
| Patchwork: https://patchwork.linux-mips.org/patch/21135/ |
| Cc: Ralf Baechle <ralf@linux-mips.org> |
| Cc: James Hogan <james.hogan@mips.com> |
| Cc: Steven J . Hill <Steven.Hill@cavium.com> |
| Cc: linux-mips@linux-mips.org |
| Cc: Fuxin Zhang <zhangfx@lemote.com> |
| Cc: Zhangjin Wu <wuzhangjin@gmail.com> |
| Cc: <stable@vger.kernel.org> # 3.8+ |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/mips/include/asm/pgtable-64.h | 5 +++++ |
| 1 file changed, 5 insertions(+) |
| |
| --- a/arch/mips/include/asm/pgtable-64.h |
| +++ b/arch/mips/include/asm/pgtable-64.h |
| @@ -193,6 +193,11 @@ static inline int pmd_bad(pmd_t pmd) |
| |
| static inline int pmd_present(pmd_t pmd) |
| { |
| +#ifdef CONFIG_MIPS_HUGE_TLB_SUPPORT |
| + if (unlikely(pmd_val(pmd) & _PAGE_HUGE)) |
| + return pmd_val(pmd) & _PAGE_PRESENT; |
| +#endif |
| + |
| return pmd_val(pmd) != (unsigned long) invalid_pte_table; |
| } |
| |