qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 0/5] target/arm: KVM vs ARMISARegisters


From: Alex Bennée
Subject: Re: [Qemu-devel] [PATCH 0/5] target/arm: KVM vs ARMISARegisters
Date: Thu, 01 Nov 2018 17:26:44 +0000
User-agent: mu4e 1.1.0; emacs 26.1.50

Richard Henderson <address@hidden> writes:

> My previous patch set for replacing feature bits with id registers
> failed to consider that these id registers are beginning to control
> migration, and thus we must fill them in for KVM as well.
>
> Thus, we want to initialize these values within CPU from the host.
>
> Finally, re-send the T32EE conversion patch, fixing the build
> failure on an arm32 host in kvm32.c.
>
> Tested on arm64; cross-build tested for arm32.

I'm still seeing the following assert on qemu-test:

  qemu-system-aarch64: /home/alex/lsrc/qemu.git/target/arm/cpu.c:832: 
arm_cpu_realizefn: Assertion `cpu_isar_feature(arm_div, cpu)' failed.

Which is a regression caused by:

  7e0cf8b: target/arm: Convert division from feature bits to isar0 tests

I think the problem is the we trip over the assert because:

    /* Some features automatically imply others: */
    if (arm_feature(env, ARM_FEATURE_V8)) {
        if (arm_feature(env, ARM_FEATURE_M)) {
            set_feature(env, ARM_FEATURE_V7);
        } else {
            set_feature(env, ARM_FEATURE_V7VE);
        }
    }

Allows:

    if (arm_feature(env, ARM_FEATURE_V7VE)) {
        assert(cpu_isar_feature(arm_div, cpu));

Which isn't strictly true on kvm guests.


>
>
> r~
>
>
> Richard Henderson (5):
>   target/arm: Install ARMISARegisters from kvm host
>   target/arm: Fill in ARMISARegisters for kvm64
>   target/arm: Introduce read_sys_reg32 for kvm32
>   target/arm: Fill in ARMISARegisters for kvm32
>   target/arm: Convert t32ee from feature bit to isar3 test
>
>  target/arm/cpu.h     |  6 +++-
>  target/arm/kvm_arm.h |  1 +
>  linux-user/elfload.c |  2 +-
>  target/arm/cpu.c     |  4 ---
>  target/arm/helper.c  |  2 +-
>  target/arm/kvm.c     |  1 +
>  target/arm/kvm32.c   | 75 +++++++++++++++++++++++++-------------------
>  target/arm/kvm64.c   | 63 +++++++++++++++++++++++++++++++++++--
>  target/arm/machine.c |  3 +-
>  9 files changed, 114 insertions(+), 43 deletions(-)


--
Alex Bennée



reply via email to

[Prev in Thread] Current Thread [Next in Thread]