[PATCH] arm64: dbm: Invalidate local TLB when setting TCR_EL1.HD

Catalin Marinas catalin.marinas at arm.com
Thu Oct 1 05:52:52 EDT 2020


On Thu, Oct 01, 2020 at 10:39:20AM +0100, Will Deacon wrote:
> TCR_EL1.HD is permitted to be cached in a TLB, so invalidate the local
> TLB after setting the bit when detected support for the feature. Although
> this isn't strictly necessary, since we can happily operate with the bit
> effectively clear, the current code uses an ISB in a half-hearted attempt
> to make the change effective, so let's just fix that up.
> 
> Cc: Catalin Marinas <catalin.marinas at arm.com>
> Signed-off-by: Will Deacon <will at kernel.org>
> ---
>  arch/arm64/kernel/cpufeature.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
> index 6424584be01e..29de76046977 100644
> --- a/arch/arm64/kernel/cpufeature.c
> +++ b/arch/arm64/kernel/cpufeature.c
> @@ -1442,7 +1442,7 @@ static inline void __cpu_enable_hw_dbm(void)
>  	u64 tcr = read_sysreg(tcr_el1) | TCR_HD;
>  
>  	write_sysreg(tcr, tcr_el1);
> -	isb();
> +	local_flush_tlb_all();

Is the TLBI ordered with the TCR_EL1 write or we need the ISB as well?

-- 
Catalin



More information about the linux-arm-kernel mailing list