Messages in this thread | | | From | Greentime Hu <> | Date | Wed, 17 Jun 2020 09:05:18 +0800 | Subject | Re: [PATCH 13/25] mm/nds32: Use mm_fault_accounting() |
| |
Peter Xu <peterx@redhat.com> 於 2020年6月16日 週二 上午6:16寫道: > > Use the new mm_fault_accounting() helper for page fault accounting. > > Avoid doing page fault accounting multiple times if the page fault is retried. > Since at it, move the accounting after releasing mmap_sem. > > CC: Nick Hu <nickhu@andestech.com> > CC: Greentime Hu <green.hu@gmail.com> > CC: Vincent Chen <deanbo422@gmail.com> > Signed-off-by: Peter Xu <peterx@redhat.com> > --- > arch/nds32/mm/fault.c | 19 +++---------------- > 1 file changed, 3 insertions(+), 16 deletions(-) > > diff --git a/arch/nds32/mm/fault.c b/arch/nds32/mm/fault.c > index f331e533edc2..11537c03ab1d 100644 > --- a/arch/nds32/mm/fault.c > +++ b/arch/nds32/mm/fault.c > @@ -78,7 +78,7 @@ void do_page_fault(unsigned long entry, unsigned long addr, > struct mm_struct *mm; > struct vm_area_struct *vma; > int si_code; > - vm_fault_t fault; > + vm_fault_t fault, major = 0; > unsigned int mask = VM_ACCESS_FLAGS; > unsigned int flags = FAULT_FLAG_DEFAULT; > > @@ -208,6 +208,7 @@ void do_page_fault(unsigned long entry, unsigned long addr, > */ > > fault = handle_mm_fault(vma, addr, flags); > + major |= fault & VM_FAULT_MAJOR; > > /* > * If we need to retry but a fatal signal is pending, handle the > @@ -229,22 +230,7 @@ void do_page_fault(unsigned long entry, unsigned long addr, > goto bad_area; > } > > - /* > - * 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. > - */ > - perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, addr); > 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; > > @@ -257,6 +243,7 @@ void do_page_fault(unsigned long entry, unsigned long addr, > } > > up_read(&mm->mmap_sem); > + mm_fault_accounting(tsk, regs, addr, major); > return; > > /* > -- Hi Peter,
Thank you. :) Acked-by: Greentime Hu <green.hu@gmail.com>
| |