Re: [PATCH v3 07/33] nds32: MMU initialization
From: Guo Ren <hidden>
Date: 2017-12-18 09:09:09
Also in:
linux-devicetree, linux-serial, lkml, netdev
From: Guo Ren <hidden>
Date: 2017-12-18 09:09:09
Also in:
linux-devicetree, linux-serial, lkml, netdev
Hi Greentime, On Fri, Dec 08, 2017 at 05:11:50PM +0800, Greentime Hu wrote: [...]
diff --git a/arch/nds32/mm/highmem.c b/arch/nds32/mm/highmem.c
[...]
+void *kmap(struct page *page)
+{
+ unsigned long vaddr;
+ might_sleep();
+ if (!PageHighMem(page))
+ return page_address(page);
+ vaddr = (unsigned long)kmap_high(page);Here should invalid the cpu_mmu_tlb's entry, Or invalid it in the set_pte(). eg: vaddr0 = kmap(page0) *vaddr0 = val0 //It will cause tlb-miss, and hard-refill to MMU-tlb kunmap(page0) vaddr1 = kmap(page1) // Mostly vaddr1 = vaddr0 val = vaddr1; //No tlb-miss and it will get page0's val not page1, because last expired vaddr0's entry is left in CPU-MMU-tlb. Best Regards Guo Ren