diff options
author | Marc Zyngier <maz@kernel.org> | 2024-06-14 17:45:42 +0300 |
---|---|---|
committer | Oliver Upton <oliver.upton@linux.dev> | 2024-06-19 11:14:37 +0300 |
commit | 67fda56e76da4c4be9a8502d7211dbba024576d2 (patch) | |
tree | 2e070660b6c8933341c4e188a98d7707ba7e96c7 /tools/perf/scripts/python/exported-sql-viewer.py | |
parent | 82e86326ec58e074883bfe27ee098cabe3a9beb1 (diff) | |
download | linux-67fda56e76da4c4be9a8502d7211dbba024576d2.tar.xz |
KVM: arm64: nv: Handle EL2 Stage-1 TLB invalidation
Due to the way FEAT_NV2 suppresses traps when accessing EL2
system registers, we can't track when the guest changes its
HCR_EL2.TGE setting. This means we always trap EL1 TLBIs,
even if they don't affect any L2 guest.
Given that invalidating the EL2 TLBs doesn't require any messing
with the shadow stage-2 page-tables, we can simply emulate the
instructions early and return directly to the guest.
This is conditioned on the instruction being an EL1 one and
the guest's HCR_EL2.{E2H,TGE} being {1,1} (indicating that
the instruction targets the EL2 S1 TLBs), or the instruction
being one of the EL2 ones (which are not ambiguous).
EL1 TLBIs issued with HCR_EL2.{E2H,TGE}={1,0} are not handled
here, and cause a full exit so that they can be handled in
the context of a VMID.
Co-developed-by: Jintack Lim <jintack.lim@linaro.org>
Co-developed-by: Christoffer Dall <christoffer.dall@arm.com>
Signed-off-by: Jintack Lim <jintack.lim@linaro.org>
Signed-off-by: Christoffer Dall <christoffer.dall@arm.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20240614144552.2773592-7-maz@kernel.org
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
Diffstat (limited to 'tools/perf/scripts/python/exported-sql-viewer.py')
0 files changed, 0 insertions, 0 deletions