Messages in this thread | | | Subject | Re: [PATCH] MIPS: Do not flush tlb when setting pmd entry | From | maobibo <> | Date | Tue, 23 Jun 2020 14:27:08 +0800 |
| |
On 06/22/2020 11:48 PM, Thomas Bogendoerfer wrote: > On Sat, Jun 20, 2020 at 11:47:35AM +0800, maobibo wrote: >> >> >> On 06/17/2020 07:14 PM, Thomas Bogendoerfer wrote: >>> On Tue, Jun 16, 2020 at 06:34:21PM +0800, maobibo wrote: >>>> >>>> >>>> On 06/15/2020 06:14 PM, Thomas Bogendoerfer wrote: >>>>> On Wed, Jun 03, 2020 at 05:42:13PM +0800, Bibo Mao wrote: >>>>>> Function set_pmd_at is to set pmd entry, if tlb entry need to >>>>>> be flushed, there exists pmdp_huge_clear_flush alike function >>>>>> before set_pmd_at is called. So it is not necessary to call >>>>>> flush_tlb_all in this function. >>>>> >>>>> have you checked all set_pmd_at() calls ? I found a few case where >>>>> it's not clear to me, if tlb flushing is done... If you think this >>>>> is still the right thing to do, please change arch/mips/mm/pgtable-32.c >>>>> as well. >>>> well, I will double check this and do more testing about thp and hugepage. >>> >>> I was more concerned about >>> >>> fs/dax.c >>> fs/proc/task_mmu.c >>> mm/rmap.c >> >> I think that flush_tlb_all should not be called in function set_pmd_at >> on mips platform. However update_mmu_cache_pmd() should be called __after__ >> set_pmd_at() function to update tlb entry at some places, it is another issue. >> Here is my analysis in the three files where set_pmd_at is called. >> [..] > > thank you for confirming that we are good with removing flush_tlb_all(). Sorry, there is something wrong if remove flush_tlb_all(). If pmd_none is true, pmd points to invalid_pte_table, maybe there exists pte entry with normal page size for fault address. And we need invalidate this pte entry like it is done in function build_huge_handler_tail in file arch/mips/mm/tlbex.c
I will send another patch. > > Thomas. >
| |