2022-07-08 07:24:10

by Peter Zijlstra

[permalink] [raw]
Subject: [PATCH 2/4] csky/tlb: Remove tlb_flush() define

The previous patch removed the tlb_flush_end() implementation which
used tlb_flush_range(). This means:

- csky did double invalidates, a range invalidate per vma and a full
invalidate at the end

- csky actually has range invalidates and as such the generic
tlb_flush implementation is more efficient for it.

Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
---
arch/csky/include/asm/tlb.h | 2 --
1 file changed, 2 deletions(-)

--- a/arch/csky/include/asm/tlb.h
+++ b/arch/csky/include/asm/tlb.h
@@ -4,8 +4,6 @@
#define __ASM_CSKY_TLB_H

#include <asm/cacheflush.h>
-#define tlb_flush(tlb) flush_tlb_mm((tlb)->mm)
-
#include <asm-generic/tlb.h>

#endif /* __ASM_CSKY_TLB_H */



2022-07-08 14:21:26

by Will Deacon

[permalink] [raw]
Subject: Re: [PATCH 2/4] csky/tlb: Remove tlb_flush() define

On Fri, Jul 08, 2022 at 09:18:04AM +0200, Peter Zijlstra wrote:
> The previous patch removed the tlb_flush_end() implementation which
> used tlb_flush_range(). This means:
>
> - csky did double invalidates, a range invalidate per vma and a full
> invalidate at the end
>
> - csky actually has range invalidates and as such the generic
> tlb_flush implementation is more efficient for it.
>
> Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
> ---
> arch/csky/include/asm/tlb.h | 2 --
> 1 file changed, 2 deletions(-)
>
> --- a/arch/csky/include/asm/tlb.h
> +++ b/arch/csky/include/asm/tlb.h
> @@ -4,8 +4,6 @@
> #define __ASM_CSKY_TLB_H
>
> #include <asm/cacheflush.h>
> -#define tlb_flush(tlb) flush_tlb_mm((tlb)->mm)

Looks right to me, and the generic code handles the fullmm case when
!CONFIG_MMU_GATHER_NO_RANGE so:

Acked-by: Will Deacon <[email protected]>

Will