* [PATCH] arm64: Do not mask out PTE_RDONLY in pte_same()
@ 2019-11-06 15:41 Catalin Marinas
2019-11-06 16:12 ` Will Deacon
2019-11-07 11:48 ` Will Deacon
0 siblings, 2 replies; 6+ messages in thread
From: Catalin Marinas @ 2019-11-06 15:41 UTC (permalink / raw)
To: linux-arm-kernel; +Cc: John Stultz, Will Deacon, Steve Capper
Following commit 73e86cb03cf2 ("arm64: Move PTE_RDONLY bit handling out
of set_pte_at()"), the PTE_RDONLY bit is no longer managed by
set_pte_at() but built into the PAGE_* attribute definitions.
Consequently, pte_same() must include this bit when checking two PTEs
for equality.
Remove the arm64-specific pte_same() function, practically reverting
commit 747a70e60b72 ("arm64: Fix copy-on-write referencing in HugeTLB")
Fixes: 73e86cb03cf2 ("arm64: Move PTE_RDONLY bit handling out of set_pte_at()")
Cc: <stable@vger.kernel.org> # 4.14.x-
Cc: Will Deacon <will@kernel.org>
Cc: Steve Capper <steve.capper@arm.com>
Reported-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
---
Steve,
Could you please check that the original problem fixed by commit
747a70e60b72 no longer exists after reverting it in 4.14 onwards?
Thanks.
arch/arm64/include/asm/pgtable.h | 17 -----------------
1 file changed, 17 deletions(-)
diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
index 5716fe86e7b9..5d15b4735a0e 100644
--- a/arch/arm64/include/asm/pgtable.h
+++ b/arch/arm64/include/asm/pgtable.h
@@ -283,23 +283,6 @@ static inline void set_pte_at(struct mm_struct *mm, unsigned long addr,
set_pte(ptep, pte);
}
-#define __HAVE_ARCH_PTE_SAME
-static inline int pte_same(pte_t pte_a, pte_t pte_b)
-{
- pteval_t lhs, rhs;
-
- lhs = pte_val(pte_a);
- rhs = pte_val(pte_b);
-
- if (pte_present(pte_a))
- lhs &= ~PTE_RDONLY;
-
- if (pte_present(pte_b))
- rhs &= ~PTE_RDONLY;
-
- return (lhs == rhs);
-}
-
/*
* Huge pte definitions.
*/
_______________________________________________
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] 6+ messages in thread* Re: [PATCH] arm64: Do not mask out PTE_RDONLY in pte_same() 2019-11-06 15:41 [PATCH] arm64: Do not mask out PTE_RDONLY in pte_same() Catalin Marinas @ 2019-11-06 16:12 ` Will Deacon 2019-11-07 11:48 ` Will Deacon 1 sibling, 0 replies; 6+ messages in thread From: Will Deacon @ 2019-11-06 16:12 UTC (permalink / raw) To: Catalin Marinas; +Cc: John Stultz, linux-arm-kernel, Steve Capper On Wed, Nov 06, 2019 at 03:41:05PM +0000, Catalin Marinas wrote: > Following commit 73e86cb03cf2 ("arm64: Move PTE_RDONLY bit handling out > of set_pte_at()"), the PTE_RDONLY bit is no longer managed by > set_pte_at() but built into the PAGE_* attribute definitions. > Consequently, pte_same() must include this bit when checking two PTEs > for equality. > > Remove the arm64-specific pte_same() function, practically reverting > commit 747a70e60b72 ("arm64: Fix copy-on-write referencing in HugeTLB") > > Fixes: 73e86cb03cf2 ("arm64: Move PTE_RDONLY bit handling out of set_pte_at()") > Cc: <stable@vger.kernel.org> # 4.14.x- > Cc: Will Deacon <will@kernel.org> > Cc: Steve Capper <steve.capper@arm.com> > Reported-by: John Stultz <john.stultz@linaro.org> > Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> > --- > > Steve, > > Could you please check that the original problem fixed by commit > 747a70e60b72 no longer exists after reverting it in 4.14 onwards? In the meantime, I've thrown this at the CI to check that they come back clean. Will _______________________________________________ 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] 6+ messages in thread
* Re: [PATCH] arm64: Do not mask out PTE_RDONLY in pte_same() 2019-11-06 15:41 [PATCH] arm64: Do not mask out PTE_RDONLY in pte_same() Catalin Marinas 2019-11-06 16:12 ` Will Deacon @ 2019-11-07 11:48 ` Will Deacon 2019-11-08 2:08 ` Steve Capper 1 sibling, 1 reply; 6+ messages in thread From: Will Deacon @ 2019-11-07 11:48 UTC (permalink / raw) To: Catalin Marinas, steve.capper; +Cc: John Stultz, linux-arm-kernel On Wed, Nov 06, 2019 at 03:41:05PM +0000, Catalin Marinas wrote: > Following commit 73e86cb03cf2 ("arm64: Move PTE_RDONLY bit handling out > of set_pte_at()"), the PTE_RDONLY bit is no longer managed by > set_pte_at() but built into the PAGE_* attribute definitions. > Consequently, pte_same() must include this bit when checking two PTEs > for equality. > > Remove the arm64-specific pte_same() function, practically reverting > commit 747a70e60b72 ("arm64: Fix copy-on-write referencing in HugeTLB") > > Fixes: 73e86cb03cf2 ("arm64: Move PTE_RDONLY bit handling out of set_pte_at()") > Cc: <stable@vger.kernel.org> # 4.14.x- > Cc: Will Deacon <will@kernel.org> > Cc: Steve Capper <steve.capper@arm.com> > Reported-by: John Stultz <john.stultz@linaro.org> > Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> > --- > > Steve, > > Could you please check that the original problem fixed by commit > 747a70e60b72 no longer exists after reverting it in 4.14 onwards? In the meantime, I've pushed this out to for-next/fixes since the CI came back clean and it fixes John's issue (which I've confirmed locally too). Interestingly, I'm not at all sure the problem is related to the Mali driver. Some tracing suggests that the ART JIT thread is stuck on a write fault, which could be explained by a broken pte_same(). Steve -- if you could please run the libhugetlbfs test suite as described in 747a70e60b72 before tomorrow, that would be really great. Thanks, Will _______________________________________________ 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] 6+ messages in thread
* Re: [PATCH] arm64: Do not mask out PTE_RDONLY in pte_same() 2019-11-07 11:48 ` Will Deacon @ 2019-11-08 2:08 ` Steve Capper 2019-11-08 2:37 ` Steve Capper 0 siblings, 1 reply; 6+ messages in thread From: Steve Capper @ 2019-11-08 2:08 UTC (permalink / raw) To: Will Deacon Cc: Catalin Marinas, John Stultz, linux-arm-kernel@lists.infradead.org On Thu, Nov 07, 2019 at 11:48:26AM +0000, Will Deacon wrote: > On Wed, Nov 06, 2019 at 03:41:05PM +0000, Catalin Marinas wrote: > > Following commit 73e86cb03cf2 ("arm64: Move PTE_RDONLY bit handling out > > of set_pte_at()"), the PTE_RDONLY bit is no longer managed by > > set_pte_at() but built into the PAGE_* attribute definitions. > > Consequently, pte_same() must include this bit when checking two PTEs > > for equality. > > > > Remove the arm64-specific pte_same() function, practically reverting > > commit 747a70e60b72 ("arm64: Fix copy-on-write referencing in HugeTLB") > > > > Fixes: 73e86cb03cf2 ("arm64: Move PTE_RDONLY bit handling out of set_pte_at()") > > Cc: <stable@vger.kernel.org> # 4.14.x- > > Cc: Will Deacon <will@kernel.org> > > Cc: Steve Capper <steve.capper@arm.com> > > Reported-by: John Stultz <john.stultz@linaro.org> > > Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> > > --- > > > > Steve, > > > > Could you please check that the original problem fixed by commit > > 747a70e60b72 no longer exists after reverting it in 4.14 onwards? > > In the meantime, I've pushed this out to for-next/fixes since the CI came > back clean and it fixes John's issue (which I've confirmed locally too). > Interestingly, I'm not at all sure the problem is related to the Mali > driver. Some tracing suggests that the ART JIT thread is stuck on a write > fault, which could be explained by a broken pte_same(). > > Steve -- if you could please run the libhugetlbfs test suite as described > in 747a70e60b72 before tomorrow, that would be really great. > Hey Will, Catalin, Apologies for my late reply, I've been travelling longer than originally planned. I have tested for-next/fixes (with the pte_same removed), under libhugetlbfs and I have been unable to reproduce the original memory leak that prompted the pte_same logic in the first place. So this patch looks good to me. Will check this out for 4.14 too now. Cheers, -- Steve IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you. _______________________________________________ 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] 6+ messages in thread
* Re: [PATCH] arm64: Do not mask out PTE_RDONLY in pte_same() 2019-11-08 2:08 ` Steve Capper @ 2019-11-08 2:37 ` Steve Capper 2019-11-08 9:40 ` Catalin Marinas 0 siblings, 1 reply; 6+ messages in thread From: Steve Capper @ 2019-11-08 2:37 UTC (permalink / raw) To: Will Deacon Cc: Catalin Marinas, nd, John Stultz, linux-arm-kernel@lists.infradead.org On Fri, Nov 08, 2019 at 02:08:56AM +0000, Steve Capper wrote: > On Thu, Nov 07, 2019 at 11:48:26AM +0000, Will Deacon wrote: > > On Wed, Nov 06, 2019 at 03:41:05PM +0000, Catalin Marinas wrote: > > > Following commit 73e86cb03cf2 ("arm64: Move PTE_RDONLY bit handling out > > > of set_pte_at()"), the PTE_RDONLY bit is no longer managed by > > > set_pte_at() but built into the PAGE_* attribute definitions. > > > Consequently, pte_same() must include this bit when checking two PTEs > > > for equality. > > > > > > Remove the arm64-specific pte_same() function, practically reverting > > > commit 747a70e60b72 ("arm64: Fix copy-on-write referencing in HugeTLB") > > > > > > Fixes: 73e86cb03cf2 ("arm64: Move PTE_RDONLY bit handling out of set_pte_at()") > > > Cc: <stable@vger.kernel.org> # 4.14.x- > > > Cc: Will Deacon <will@kernel.org> > > > Cc: Steve Capper <steve.capper@arm.com> > > > Reported-by: John Stultz <john.stultz@linaro.org> > > > Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> > > > --- > > > > > > Steve, > > > > > > Could you please check that the original problem fixed by commit > > > 747a70e60b72 no longer exists after reverting it in 4.14 onwards? > > > > In the meantime, I've pushed this out to for-next/fixes since the CI came > > back clean and it fixes John's issue (which I've confirmed locally too). > > Interestingly, I'm not at all sure the problem is related to the Mali > > driver. Some tracing suggests that the ART JIT thread is stuck on a write > > fault, which could be explained by a broken pte_same(). > > > > Steve -- if you could please run the libhugetlbfs test suite as described > > in 747a70e60b72 before tomorrow, that would be really great. > > > > Hey Will, Catalin, > Apologies for my late reply, I've been travelling longer than originally > planned. > > I have tested for-next/fixes (with the pte_same removed), under > libhugetlbfs and I have been unable to reproduce the original memory > leak that prompted the pte_same logic in the first place. So this patch > looks good to me. > > Will check this out for 4.14 too now. > I can confirm that 4.14 with Catalin's patch cherry-picked also passes the hugetlbfs cow tests. Cheers, -- Steve _______________________________________________ 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] 6+ messages in thread
* Re: [PATCH] arm64: Do not mask out PTE_RDONLY in pte_same() 2019-11-08 2:37 ` Steve Capper @ 2019-11-08 9:40 ` Catalin Marinas 0 siblings, 0 replies; 6+ messages in thread From: Catalin Marinas @ 2019-11-08 9:40 UTC (permalink / raw) To: Steve Capper Cc: John Stultz, nd, Will Deacon, linux-arm-kernel@lists.infradead.org On Fri, Nov 08, 2019 at 02:37:04AM +0000, Steve Capper wrote: > On Fri, Nov 08, 2019 at 02:08:56AM +0000, Steve Capper wrote: > > On Thu, Nov 07, 2019 at 11:48:26AM +0000, Will Deacon wrote: > > > On Wed, Nov 06, 2019 at 03:41:05PM +0000, Catalin Marinas wrote: > > > > Following commit 73e86cb03cf2 ("arm64: Move PTE_RDONLY bit handling out > > > > of set_pte_at()"), the PTE_RDONLY bit is no longer managed by > > > > set_pte_at() but built into the PAGE_* attribute definitions. > > > > Consequently, pte_same() must include this bit when checking two PTEs > > > > for equality. > > > > > > > > Remove the arm64-specific pte_same() function, practically reverting > > > > commit 747a70e60b72 ("arm64: Fix copy-on-write referencing in HugeTLB") > > > > > > > > Fixes: 73e86cb03cf2 ("arm64: Move PTE_RDONLY bit handling out of set_pte_at()") > > > > Cc: <stable@vger.kernel.org> # 4.14.x- > > > > Cc: Will Deacon <will@kernel.org> > > > > Cc: Steve Capper <steve.capper@arm.com> > > > > Reported-by: John Stultz <john.stultz@linaro.org> > > > > Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> > > > > --- > > > > > > > > Steve, > > > > > > > > Could you please check that the original problem fixed by commit > > > > 747a70e60b72 no longer exists after reverting it in 4.14 onwards? > > > > > > In the meantime, I've pushed this out to for-next/fixes since the CI came > > > back clean and it fixes John's issue (which I've confirmed locally too). > > > Interestingly, I'm not at all sure the problem is related to the Mali > > > driver. Some tracing suggests that the ART JIT thread is stuck on a write > > > fault, which could be explained by a broken pte_same(). > > > > > > Steve -- if you could please run the libhugetlbfs test suite as described > > > in 747a70e60b72 before tomorrow, that would be really great. > > > > > > > Hey Will, Catalin, > > Apologies for my late reply, I've been travelling longer than originally > > planned. > > > > I have tested for-next/fixes (with the pte_same removed), under > > libhugetlbfs and I have been unable to reproduce the original memory > > leak that prompted the pte_same logic in the first place. So this patch > > looks good to me. > > > > Will check this out for 4.14 too now. > > I can confirm that 4.14 with Catalin's patch cherry-picked also passes > the hugetlbfs cow tests. Great. Thanks for testing Steve. The next thing is improving pte_modify() to avoid an unnecessary fault as we can end up with dirty|write|rdonly pte (and subsequently ptep_set_access_flags() bailed out earlier due to broken pte_same()). Anyway, that's not critical now, just minor perf improvement. I'll post a patch along the lines of https://paste.debian.net/hidden/66246019/. -- Catalin _______________________________________________ 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] 6+ messages in thread
end of thread, other threads:[~2019-11-08 9:41 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-11-06 15:41 [PATCH] arm64: Do not mask out PTE_RDONLY in pte_same() Catalin Marinas 2019-11-06 16:12 ` Will Deacon 2019-11-07 11:48 ` Will Deacon 2019-11-08 2:08 ` Steve Capper 2019-11-08 2:37 ` Steve Capper 2019-11-08 9:40 ` Catalin Marinas
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).