The exact wording of the restrictions on branch prediction due to
FEAT_ECBHB in DDI0487L.b is as follows:
When FEAT_ECBHB is implemented, the branch history information created
in a context before an exception to a higher Exception level using
AArch64 cannot be used by code before that exception to exploitatively
control the execution of any indirect branches in code in a different
context after the exception.
While vEL2 and EL1 are multiplexed at EL1, they exist in different
hardware-described contexts as KVM uses different stage-2 MMUs to
represent the corresponding translation regimes. Additionally, exception
entries into vEL2 always imply a hardware exception entry into literal EL2
for the emulated regime change.
Given all of this, and the fact that FEAT_ECBHB places no limitation on
the EL of the protected context after the exception, we can claim
FEAT_ECBHB on supporting hardware.
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
Signed-off-by: Marc Zyngier <maz@kernel.org>
break;
case SYS_ID_AA64MMFR1_EL1:
- val &= ~(ID_AA64MMFR1_EL1_ECBHB |
- ID_AA64MMFR1_EL1_CMOW |
+ val &= ~(ID_AA64MMFR1_EL1_CMOW |
ID_AA64MMFR1_EL1_TIDCP1 |
ID_AA64MMFR1_EL1_nTLBPA |
ID_AA64MMFR1_EL1_AFP |