[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 2/5] target/arm: Fill in ARMISARegisters for
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [PATCH v3 2/5] target/arm: Fill in ARMISARegisters for kvm64 |
Date: |
Mon, 12 Nov 2018 11:37:50 +0000 |
On 8 November 2018 at 17:52, Richard Henderson
<address@hidden> wrote:
> Signed-off-by: Richard Henderson <address@hidden>
> ---
> /* Old kernels may not know about the PREFERRED_TARGET ioctl: however
> * we know these will only support creating one kind of guest CPU,
> * which is its preferred CPU type. Fortunately these old kernels
> @@ -474,8 +497,71 @@ bool kvm_arm_get_host_cpu_features(ARMHostCPUFeatures
> *ahcf)
> ahcf->target = init.target;
> ahcf->dtb_compatible = "arm,arm-v8";
>
> + err = read_sys_reg64(fdarray[2], &ahcf->isar.id_aa64pfr0,
> + ARM64_SYS_REG(3, 0, 0, 4, 0));
> + if (unlikely(err < 0)) {
> + /*
> + * Before v4.15, the kernel only exposed a limited number of system
> + * registers, not including any of the interesting AArch64 ID regs.
> + * For the most part we could leave these fields as zero with minimal
> + * effect, since this does not affect the values seen by the guest.
These older kernels do implement reading of id_isar0 through
id_isar5, though -- we could read and use those values rather than
leaving them zero.
> + *
> + * However, it could cause problems down the line for QEMU,
> + * so provide a minimal v8.0 default.
> + *
> + * ??? Could read MIDR and use knowledge from cpu64.c.
> + * ??? Could map a page of memory into our temp guest and
> + * run the tiniest of hand-crafted kernels to extract
> + * the values seen by the guest.
> + * ??? Either of these sounds like too much effort just
> + * to work around running a modern host kernel.
> + */
> + ahcf->isar.id_aa64pfr0 = 0x00000011; /* EL1&0, AArch64 only */
> + err = 0;
Doesn't this code path leave everything except id_aa64pfr0 as
zero, thus leaving us with the "could cause problems down the
line" situation ?
thanks
-- PMM
[Qemu-devel] [PATCH v3 1/5] target/arm: Install ARMISARegisters from kvm host, Richard Henderson, 2018/11/08
[Qemu-devel] [PATCH v3 3/5] target/arm: Introduce read_sys_reg32 for kvm32, Richard Henderson, 2018/11/08
[Qemu-devel] [PATCH v3 4/5] target/arm: Fill in ARMISARegisters for kvm32, Richard Henderson, 2018/11/08
[Qemu-devel] [PATCH v3 5/5] target/arm: Convert t32ee from feature bit to isar3 test, Richard Henderson, 2018/11/08