Message ID | 20221010153225.506394-1-alex.bennee@linaro.org |
---|---|
State | Accepted |
Commit | 947692e708bc61ca724429b5198f0b0f5f68102d |
Headers | show |
Series | [v2] target/arm: update the cortex-a15 MIDR to latest rev | expand |
On Mon, 10 Oct 2022 at 16:32, Alex Bennée <alex.bennee@linaro.org> wrote: > > QEMU doesn't model micro-architectural details which includes most > chip errata. The ARM_ERRATA_798181 work around in the Linux > kernel (see erratum_a15_798181_init) currently detects QEMU's > cortex-a15 as broken and triggers additional expensive TLB flushes as > a result. > > Change the MIDR to report what the latest silicon would (r4p0). We > explicitly set the IMPDEF revidr bits to 0 because we don't need to > set anything other than the silicon revision to indicate these flushes > are not needed. This cuts about 5s from my Debian kernel boot with the > latest 6.0rc1 kernel (29s->24s). Applied to target-arm.next, thanks. -- PMM
diff --git a/target/arm/cpu_tcg.c b/target/arm/cpu_tcg.c index 98b5ba2160..60ff539fa1 100644 --- a/target/arm/cpu_tcg.c +++ b/target/arm/cpu_tcg.c @@ -592,7 +592,9 @@ static void cortex_a15_initfn(Object *obj) set_feature(&cpu->env, ARM_FEATURE_EL3); set_feature(&cpu->env, ARM_FEATURE_PMU); cpu->kvm_target = QEMU_KVM_ARM_TARGET_CORTEX_A15; - cpu->midr = 0x412fc0f1; + /* r4p0 cpu, not requiring expensive tlb flush errata */ + cpu->midr = 0x414fc0f0; + cpu->revidr = 0x0; cpu->reset_fpsid = 0x410430f0; cpu->isar.mvfr0 = 0x10110222; cpu->isar.mvfr1 = 0x11111111;