arm64: hibernate: reduce TLB maintenance scope
authorMark Rutland <mark.rutland@arm.com>
Mon, 8 Aug 2016 10:12:07 +0000 (11:12 +0100)
committerWill Deacon <will.deacon@arm.com>
Mon, 22 Aug 2016 09:00:48 +0000 (10:00 +0100)
commit0a7d87a7776e2616334473c4209e277b6ca300e5
treea12bbd3d31a938b31f35720ee3e9c85f2b301dee
parentfa8410b355251fd30341662a40ac6b22d3e38468
arm64: hibernate: reduce TLB maintenance scope

In break_before_make_ttbr_switch we perform broadcast TLB maintenance
for the inner shareable domain, and use a DSB ISH to complete this.
However, at the point we execute this, secondary CPUs are either
physically offline, or executing code outside of the kernel. Upon
entering the kernel, secondary CPUs will invalidate their TLBs before
enabling their MMUs.

Thus we do not need to invalidate TLBs of other CPUs, and as with
idmap_cpu_replace_ttbr1 we can reduce the scope of maintenance to the
TLBs of the local CPU. This keeps our TLB maintenance code consistent,
and is a minor optimisation.

Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: James Morse <james.morse@arm.com>
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/kernel/hibernate-asm.S