• Guo Ren's avatar
    csky: mmu: Prevent spurious page faults · 1f62ed00
    Guo Ren authored
    C-SKY MMU would pre-fetch invalid pte entries, and it could work with
    flush_tlb_fix_spurious_fault, but the additional page fault exceptions
    would reduce performance. So flushing the entry of the TLB would prevent
    the following spurious page faults. Here is the test code:
    
    define DATA_LEN  4096
    define COPY_NUM  (504*100)
    
    unsigned char src[DATA_LEN*COPY_NUM] = {0};
    unsigned char dst[DATA_LEN*COPY_NUM] = {0};
    
    unsigned char func_src[DATA_LEN*COPY_NUM] = {0};
    unsigned char func_dst[DATA_LEN*COPY_NUM] = {0};
    
    void main(void)
    {
    	int j;
    	for (j = 0; j < COPY_NUM; j++)
    		memcpy(&dst[j*DATA_LEN], &src[j*DATA_LEN], 4);
    }
    
    perf stat -e page-faults ./main.elf
    
    The amount of page fault traps would be reduced in half with the patch.
    Signed-off-by: default avatarGuo Ren <guoren@linux.alibaba.com>
    Signed-off-by: default avatarGuo Ren <guoren@kernel.org>
    1f62ed00
cacheflush.c 1.99 KB