[PATCH v2] arm64: dbm: Invalidate local TLB when setting TCR_EL1.HD
Mark Rutland
mark.rutland at arm.com
Thu Oct 1 07:22:05 EDT 2020
On Thu, Oct 01, 2020 at 12:04:05PM +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>
Reviewed-by: Mark Rutland <mark.rutladn at arm.com>
Mark.
> ---
>
> v1 -> v2: Retain isb() prior to TLB invalidation.
>
> arch/arm64/kernel/cpufeature.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
> index 6424584be01e..a474a4f39c95 100644
> --- a/arch/arm64/kernel/cpufeature.c
> +++ b/arch/arm64/kernel/cpufeature.c
> @@ -1443,6 +1443,7 @@ static inline void __cpu_enable_hw_dbm(void)
>
> write_sysreg(tcr, tcr_el1);
> isb();
> + local_flush_tlb_all();
> }
>
> static bool cpu_has_broken_dbm(void)
> --
> 2.28.0.709.gb0816b6eb0-goog
>
More information about the linux-arm-kernel
mailing list