]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commit
arm64: Add missing ISB after invalidating TLB in __primary_switch
authorMarc Zyngier <maz@kernel.org>
Wed, 24 Feb 2021 09:37:37 +0000 (09:37 +0000)
committerKleber Sacilotto de Souza <kleber.souza@canonical.com>
Wed, 14 Apr 2021 16:31:35 +0000 (18:31 +0200)
commit2a31340882c3b0c543414f1802257671a01a7dcf
tree16924fd6de87023825786888491d4b11256e540a
parent141cd70d2f4fbd09fd180999ca04aadcc2840972
arm64: Add missing ISB after invalidating TLB in __primary_switch

BugLink: https://bugs.launchpad.net/bugs/1918974
[ Upstream commit 9d41053e8dc115c92b8002c3db5f545d7602498b ]

Although there has been a bit of back and forth on the subject, it
appears that invalidating TLBs requires an ISB instruction when FEAT_ETS
is not implemented by the CPU.

From the bible:

  | In an implementation that does not implement FEAT_ETS, a TLB
  | maintenance instruction executed by a PE, PEx, can complete at any
  | time after it is issued, but is only guaranteed to be finished for a
  | PE, PEx, after the execution of DSB by the PEx followed by a Context
  | synchronization event

Add the missing ISB in __primary_switch, just in case.

Fixes: 3c5e9f238bc4 ("arm64: head.S: move KASLR processing out of __enable_mmu()")
Suggested-by: Will Deacon <will@kernel.org>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Link: https://lore.kernel.org/r/20210224093738.3629662-3-maz@kernel.org
Signed-off-by: Will Deacon <will@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Kelsey Skunberg <kelsey.skunberg@canonical.com>
arch/arm64/kernel/head.S