Revert "ANDROID: arm64: kvm: Hide asym aarch32 systems from KVM"

This reverts commit b674244dc1.

Bug: 178507149
Signed-off-by: Will Deacon <willdeacon@google.com>
Change-Id: Ia0cdd883546c1ffa0f517910d09c6730ff7b2006
This commit is contained in:
Will Deacon
2021-01-25 15:00:32 +00:00
parent ab579bdfab
commit ed92ca7c78
3 changed files with 3 additions and 21 deletions

View File

@@ -614,15 +614,6 @@ static inline bool system_supports_32bit_el0(void)
return cpus_have_const_cap(ARM64_HAS_32BIT_EL0);
}
static inline bool kvm_system_supports_32bit_el0(void)
{
#ifndef CONFIG_ASYMMETRIC_AARCH32
return system_supports_32bit_el0();
#else
return cpumask_equal(&aarch32_el0_mask, cpu_possible_mask);
#endif
}
static inline bool system_supports_4kb_granule(void)
{
u64 mmfr0;

View File

@@ -225,7 +225,7 @@ static int set_core_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
u64 mode = (*(u64 *)valp) & PSR_AA32_MODE_MASK;
switch (mode) {
case PSR_AA32_MODE_USR:
if (!kvm_system_supports_32bit_el0())
if (!system_supports_32bit_el0())
return -EINVAL;
break;
case PSR_AA32_MODE_FIQ:

View File

@@ -617,7 +617,7 @@ static void reset_pmcr(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r)
*/
val = ((pmcr & ~ARMV8_PMU_PMCR_MASK)
| (ARMV8_PMU_PMCR_MASK & 0xdecafbad)) & (~ARMV8_PMU_PMCR_E);
if (!kvm_system_supports_32bit_el0())
if (!system_supports_32bit_el0())
val |= ARMV8_PMU_PMCR_LC;
__vcpu_sys_reg(vcpu, r->reg) = val;
}
@@ -666,7 +666,7 @@ static bool access_pmcr(struct kvm_vcpu *vcpu, struct sys_reg_params *p,
val = __vcpu_sys_reg(vcpu, PMCR_EL0);
val &= ~ARMV8_PMU_PMCR_MASK;
val |= p->regval & ARMV8_PMU_PMCR_MASK;
if (!kvm_system_supports_32bit_el0())
if (!system_supports_32bit_el0())
val |= ARMV8_PMU_PMCR_LC;
__vcpu_sys_reg(vcpu, PMCR_EL0) = val;
kvm_pmu_handle_pmcr(vcpu, val);
@@ -1036,15 +1036,6 @@ static u64 read_id_reg(const struct kvm_vcpu *vcpu,
val |= ((u64)vcpu->kvm->arch.pfr0_csv2 << ID_AA64PFR0_CSV2_SHIFT);
val &= ~(0xfUL << ID_AA64PFR0_CSV3_SHIFT);
val |= ((u64)vcpu->kvm->arch.pfr0_csv3 << ID_AA64PFR0_CSV3_SHIFT);
if (!kvm_system_supports_32bit_el0()) {
/*
* We could be running on asym aarch32 system.
* Override to present a aarch64 only system.
*/
val &= ~(0xfUL << ID_AA64PFR0_EL0_SHIFT);
val |= (ID_AA64PFR0_EL0_64BIT_ONLY << ID_AA64PFR0_EL0_SHIFT);
}
} else if (id == SYS_ID_AA64PFR1_EL1) {
val &= ~(0xfUL << ID_AA64PFR1_MTE_SHIFT);
} else if (id == SYS_ID_AA64ISAR1_EL1 && !vcpu_has_ptrauth(vcpu)) {