* [PATCH 17/26] mm/riscv: Use general page fault accounting [not found] <20200626223130.199227-1-peterx@redhat.com> @ 2020-06-26 22:36 ` Peter Xu 2020-07-01 11:46 ` Pekka Enberg 2020-07-11 19:43 ` Palmer Dabbelt 0 siblings, 2 replies; 6+ messages in thread From: Peter Xu @ 2020-06-26 22:36 UTC (permalink / raw) To: linux-mm, linux-kernel Cc: Andrea Arcangeli, Albert Ou, Linus Torvalds, Paul Walmsley, Peter Xu, Palmer Dabbelt, Michael Ellerman, Andrew Morton, Will Deacon, linux-riscv, Gerald Schaefer Use the general page fault accounting by passing regs into handle_mm_fault(). It naturally solve the issue of multiple page fault accounting when page fault retry happened. CC: Paul Walmsley <paul.walmsley@sifive.com> CC: Palmer Dabbelt <palmer@dabbelt.com> CC: Albert Ou <aou@eecs.berkeley.edu> CC: linux-riscv@lists.infradead.org Signed-off-by: Peter Xu <peterx@redhat.com> --- arch/riscv/mm/fault.c | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/arch/riscv/mm/fault.c b/arch/riscv/mm/fault.c index 677ee1bb11ac..e796ba02b572 100644 --- a/arch/riscv/mm/fault.c +++ b/arch/riscv/mm/fault.c @@ -110,7 +110,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs) * make sure we exit gracefully rather than endlessly redo * the fault. */ - fault = handle_mm_fault(vma, addr, flags, NULL); + fault = handle_mm_fault(vma, addr, flags, regs); /* * If we need to retry but a fatal signal is pending, handle the @@ -128,21 +128,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs) BUG(); } - /* - * Major/minor page fault accounting is only done on the - * initial attempt. If we go through a retry, it is extremely - * likely that the page will be found in page cache at that point. - */ if (flags & FAULT_FLAG_ALLOW_RETRY) { - if (fault & VM_FAULT_MAJOR) { - tsk->maj_flt++; - perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, - 1, regs, addr); - } else { - tsk->min_flt++; - perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, - 1, regs, addr); - } if (fault & VM_FAULT_RETRY) { flags |= FAULT_FLAG_TRIED; -- 2.26.2 _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 17/26] mm/riscv: Use general page fault accounting 2020-06-26 22:36 ` [PATCH 17/26] mm/riscv: Use general page fault accounting Peter Xu @ 2020-07-01 11:46 ` Pekka Enberg 2020-07-02 15:51 ` Peter Xu 2020-07-11 19:43 ` Palmer Dabbelt 1 sibling, 1 reply; 6+ messages in thread From: Pekka Enberg @ 2020-07-01 11:46 UTC (permalink / raw) To: Peter Xu Cc: Andrea Arcangeli, Albert Ou, Will Deacon, Paul Walmsley, LKML, linux-mm@kvack.org, Palmer Dabbelt, Michael Ellerman, Andrew Morton, Linus Torvalds, linux-riscv, Gerald Schaefer Hi Peter, On Sat, Jun 27, 2020 at 1:36 AM Peter Xu <peterx@redhat.com> wrote: > Use the general page fault accounting by passing regs into handle_mm_fault(). > It naturally solve the issue of multiple page fault accounting when page fault > retry happened. I sent a patch to fix up riscv page fault accounting some days ago: http://lists.infradead.org/pipermail/linux-riscv/2020-June/000775.html However, your fix is obviously even better. For the generic and riscv parts: Reviewed-by: Pekka Enberg <penberg@kernel.org> - Pekka _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 17/26] mm/riscv: Use general page fault accounting 2020-07-01 11:46 ` Pekka Enberg @ 2020-07-02 15:51 ` Peter Xu 0 siblings, 0 replies; 6+ messages in thread From: Peter Xu @ 2020-07-02 15:51 UTC (permalink / raw) To: Pekka Enberg Cc: Andrea Arcangeli, Albert Ou, Will Deacon, Paul Walmsley, LKML, linux-mm@kvack.org, Palmer Dabbelt, Michael Ellerman, Andrew Morton, Linus Torvalds, linux-riscv, Gerald Schaefer On Wed, Jul 01, 2020 at 02:46:24PM +0300, Pekka Enberg wrote: > Hi Peter, Hi, Pekka, > > On Sat, Jun 27, 2020 at 1:36 AM Peter Xu <peterx@redhat.com> wrote: > > Use the general page fault accounting by passing regs into handle_mm_fault(). > > It naturally solve the issue of multiple page fault accounting when page fault > > retry happened. > > I sent a patch to fix up riscv page fault accounting some days ago: > > http://lists.infradead.org/pipermail/linux-riscv/2020-June/000775.html Yes, this is a valid fix too. > > However, your fix is obviously even better. For the generic and riscv parts: > > Reviewed-by: Pekka Enberg <penberg@kernel.org> Thanks! -- Peter Xu _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 17/26] mm/riscv: Use general page fault accounting 2020-06-26 22:36 ` [PATCH 17/26] mm/riscv: Use general page fault accounting Peter Xu 2020-07-01 11:46 ` Pekka Enberg @ 2020-07-11 19:43 ` Palmer Dabbelt 2020-07-14 15:12 ` Pekka Enberg 1 sibling, 1 reply; 6+ messages in thread From: Palmer Dabbelt @ 2020-07-11 19:43 UTC (permalink / raw) To: peterx Cc: aarcange, aou, will, Paul Walmsley, linux-kernel, peterx, linux-mm, mpe, akpm, Linus Torvalds, linux-riscv, gerald.schaefer On Fri, 26 Jun 2020 15:36:25 PDT (-0700), peterx@redhat.com wrote: > Use the general page fault accounting by passing regs into handle_mm_fault(). > It naturally solve the issue of multiple page fault accounting when page fault > retry happened. > > CC: Paul Walmsley <paul.walmsley@sifive.com> > CC: Palmer Dabbelt <palmer@dabbelt.com> > CC: Albert Ou <aou@eecs.berkeley.edu> > CC: linux-riscv@lists.infradead.org > Signed-off-by: Peter Xu <peterx@redhat.com> > --- > arch/riscv/mm/fault.c | 16 +--------------- > 1 file changed, 1 insertion(+), 15 deletions(-) > > diff --git a/arch/riscv/mm/fault.c b/arch/riscv/mm/fault.c > index 677ee1bb11ac..e796ba02b572 100644 > --- a/arch/riscv/mm/fault.c > +++ b/arch/riscv/mm/fault.c > @@ -110,7 +110,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs) > * make sure we exit gracefully rather than endlessly redo > * the fault. > */ > - fault = handle_mm_fault(vma, addr, flags, NULL); > + fault = handle_mm_fault(vma, addr, flags, regs); > > /* > * If we need to retry but a fatal signal is pending, handle the > @@ -128,21 +128,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs) > BUG(); > } > > - /* > - * Major/minor page fault accounting is only done on the > - * initial attempt. If we go through a retry, it is extremely > - * likely that the page will be found in page cache at that point. > - */ > if (flags & FAULT_FLAG_ALLOW_RETRY) { > - if (fault & VM_FAULT_MAJOR) { > - tsk->maj_flt++; > - perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, > - 1, regs, addr); > - } else { > - tsk->min_flt++; > - perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, > - 1, regs, addr); > - } > if (fault & VM_FAULT_RETRY) { > flags |= FAULT_FLAG_TRIED; This still slightly changes the accounting numbers, but I don't think it does so in a way that's meaningful enough to care about. SIGBUS is the only one that might happen frequently enough to notice, I doubt anyone cares about whether faults are accounted for during OOM. Acked-by: Palmer Dabbelt <palmerdabbelt@google.com> Thanks! _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 17/26] mm/riscv: Use general page fault accounting 2020-07-11 19:43 ` Palmer Dabbelt @ 2020-07-14 15:12 ` Pekka Enberg 0 siblings, 0 replies; 6+ messages in thread From: Pekka Enberg @ 2020-07-14 15:12 UTC (permalink / raw) To: Palmer Dabbelt Cc: Andrea Arcangeli, Albert Ou, Will Deacon, Paul Walmsley, LKML, Peter Xu, linux-mm@kvack.org, Michael Ellerman, Andrew Morton, Linus Torvalds, linux-riscv, Gerald Schaefer Hi Palmer, On Sat, Jul 11, 2020 at 10:43 PM Palmer Dabbelt <palmer@dabbelt.com> wrote: > This still slightly changes the accounting numbers, but I don't think it does > so in a way that's meaningful enough to care about. SIGBUS is the only one > that might happen frequently enough to notice, I doubt anyone cares about > whether faults are accounted for during OOM. What do you mean? AFAICT, this patch _fixes_ the accounting to be correct on page fault restarts. I sent a patch to fix this up some time ago, but of course this generic solutions is better: http://lists.infradead.org/pipermail/linux-riscv/2020-June/000775.html - Pekka _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply [flat|nested] 6+ messages in thread
[parent not found: <20200619160538.8641-1-peterx@redhat.com>]
* [PATCH 17/26] mm/riscv: Use general page fault accounting [not found] <20200619160538.8641-1-peterx@redhat.com> @ 2020-06-19 16:13 ` Peter Xu 0 siblings, 0 replies; 6+ messages in thread From: Peter Xu @ 2020-06-19 16:13 UTC (permalink / raw) To: linux-kernel, linux-mm Cc: Andrea Arcangeli, Albert Ou, Michael Ellerman, Peter Xu, Linus Torvalds, Palmer Dabbelt, Paul Walmsley, Andrew Morton, Will Deacon, linux-riscv, Gerald Schaefer Use the general page fault accounting by passing regs into handle_mm_fault(). It naturally solve the issue of multiple page fault accounting when page fault retry happened. CC: Paul Walmsley <paul.walmsley@sifive.com> CC: Palmer Dabbelt <palmer@dabbelt.com> CC: Albert Ou <aou@eecs.berkeley.edu> CC: linux-riscv@lists.infradead.org Signed-off-by: Peter Xu <peterx@redhat.com> --- arch/riscv/mm/fault.c | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/arch/riscv/mm/fault.c b/arch/riscv/mm/fault.c index 677ee1bb11ac..e796ba02b572 100644 --- a/arch/riscv/mm/fault.c +++ b/arch/riscv/mm/fault.c @@ -110,7 +110,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs) * make sure we exit gracefully rather than endlessly redo * the fault. */ - fault = handle_mm_fault(vma, addr, flags, NULL); + fault = handle_mm_fault(vma, addr, flags, regs); /* * If we need to retry but a fatal signal is pending, handle the @@ -128,21 +128,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs) BUG(); } - /* - * Major/minor page fault accounting is only done on the - * initial attempt. If we go through a retry, it is extremely - * likely that the page will be found in page cache at that point. - */ if (flags & FAULT_FLAG_ALLOW_RETRY) { - if (fault & VM_FAULT_MAJOR) { - tsk->maj_flt++; - perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, - 1, regs, addr); - } else { - tsk->min_flt++; - perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, - 1, regs, addr); - } if (fault & VM_FAULT_RETRY) { flags |= FAULT_FLAG_TRIED; -- 2.26.2 ^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-07-14 15:12 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20200626223130.199227-1-peterx@redhat.com>
2020-06-26 22:36 ` [PATCH 17/26] mm/riscv: Use general page fault accounting Peter Xu
2020-07-01 11:46 ` Pekka Enberg
2020-07-02 15:51 ` Peter Xu
2020-07-11 19:43 ` Palmer Dabbelt
2020-07-14 15:12 ` Pekka Enberg
[not found] <20200619160538.8641-1-peterx@redhat.com>
2020-06-19 16:13 ` Peter Xu
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox