Re: [RFC PATCH v3 16/19] qmp: add query-cpu-props-info command

Markus Armbruster <[email protected]> Tue, 04 Aug 2026 08:05:12 +0200
Newsgroups org.nongnu.qemu-arm,dev.linux.lists.kvmarm,org.nongnu.qemu-devel
Message-ID <[email protected]>
Khushit Shah <[email protected]> writes:

>> On 20 Jul 2026, at 6:51=E2=80=AFPM, Markus Armbruster <[email protected]=
> wrote:
>>=20
>> !-------------------------------------------------------------------|
>>  CAUTION: External Email
>>=20
>> |-------------------------------------------------------------------!
>>=20
>> Series doesn't apply for me.  I need to apply it to be able to check
>> rendered documentation.  Could you push it somewhere I can pull?
>>=20
>
> Sorry for the late reply,=20
> Please use the following branch: https://github.com/khushit-shah-nx/qemu/=
tree/upstream-rfc-v3-fixups

Doesn't compile for me:

FAILED: [code=3D1] qemu-aarch64_be=20
cc -m64  -o qemu-aarch64_be libcommon.a.p/accel_accel-common.c.o libcommon.=
a.p/hw_core_cpu-common.c.o libcommon.a.p/hw_core_machine-smp.c.o libcommon.=
a.p/cpu-common.c.o libcommon.a.p/page-vary-common.c.o libcommon.a.p/target-=
info.c.o libcommon.a.p/disas_capstone.c.o libcommon.a.p/disas_disas-host.c.=
o libcommon.a.p/disas_disas-target.c.o libcommon.a.p/disas_objdump.c.o libc=
ommon.a.p/disas_disas-common.c.o libcommon.a.p/fpu_softfloat.c.o libcommon.=
a.p/plugins_loader.c.o libcommon.a.p/meson-generated_.._gdbstub_gdbstub-xml=
.c.o libcommon_arm.a.p/target_arm_mmuidx.c.o libcommon_arm.a.p/target_arm_t=
cg_arith_helper.c.o libcommon_arm.a.p/target_arm_tcg_crypto_helper.c.o libu=
ser.a.p/semihosting_user.c.o libuser.a.p/semihosting_guestfd.c.o libuser.a.=
p/accel_accel-user.c.o libuser.a.p/accel_tcg_cpu-exec.c.o libuser.a.p/accel=
_tcg_cpu-exec-common.c.o libuser.a.p/accel_tcg_tcg-runtime.c.o libuser.a.p/=
accel_tcg_tcg-runtime-gvec.c.o libuser.a.p/accel_tcg_tb-maint.c.o libuser.a=
.p/accel_tcg_tcg-all.c.o libuser.a.p/accel_tcg_tcg-stats.c.o libuser.a.p/ac=
cel_tcg_translate-all.c.o libuser.a.p/accel_tcg_translator.c.o libuser.a.p/=
accel_tcg_plugin-gen.c.o libuser.a.p/accel_tcg_user-exec.c.o libuser.a.p/ac=
cel_tcg_user-exec-stub.c.o libuser.a.p/hw_core_cpu-user.c.o libuser.a.p/hw_=
core_qdev-user.c.o libuser.a.p/gdbstub_gdbstub.c.o libuser.a.p/gdbstub_sysc=
alls.c.o libuser.a.p/gdbstub_user.c.o libuser.a.p/cpu-target.c.o libuser.a.=
p/tcg_optimize.c.o libuser.a.p/tcg_region.c.o libuser.a.p/tcg_tcg.c.o libus=
er.a.p/tcg_tcg-common.c.o libuser.a.p/tcg_tcg-op.c.o libuser.a.p/tcg_tcg-op=
-ldst.c.o libuser.a.p/tcg_tcg-op-gvec.c.o libuser.a.p/tcg_tcg-op-vec.c.o li=
buser.a.p/tcg_debuginfo.c.o libuser.a.p/tcg_perf.c.o libuser.a.p/plugins_us=
er.c.o libuser.a.p/plugins_api-user.c.o libuser.a.p/plugins_api.c.o libuser=
.a.p/plugins_core.c.o libuser.a.p/common-user_safe-syscall.S.o libuser.a.p/=
common-user_safe-syscall-error.c.o libqemu-aarch64_be-linux-user.a.p/target=
_arm_gdbstub.c.o libqemu-aarch64_be-linux-user.a.p/target_arm_cpu.c.o libqe=
mu-aarch64_be-linux-user.a.p/target_arm_cpregs-gcs.c.o libqemu-aarch64_be-l=
inux-user.a.p/target_arm_cpregs-pmu.c.o libqemu-aarch64_be-linux-user.a.p/t=
arget_arm_debug_helper.c.o libqemu-aarch64_be-linux-user.a.p/target_arm_hel=
per.c.o libqemu-aarch64_be-linux-user.a.p/target_arm_vfp_fpscr.c.o libqemu-=
aarch64_be-linux-user.a.p/target_arm_el2-stubs.c.o libqemu-aarch64_be-linux=
-user.a.p/target_arm_cpregs-omap-stub.c.o libqemu-aarch64_be-linux-user.a.p=
/target_arm_common-semi-target.c.o libqemu-aarch64_be-linux-user.a.p/target=
_arm_tcg_debug.c.o libqemu-aarch64_be-linux-user.a.p/target_arm_tcg_gengvec=
.c.o libqemu-aarch64_be-linux-user.a.p/target_arm_tcg_hflags.c.o libqemu-aa=
rch64_be-linux-user.a.p/target_arm_tcg_m_helper.c.o libqemu-aarch64_be-linu=
x-user.a.p/target_arm_tcg_mve_helper.c.o libqemu-aarch64_be-linux-user.a.p/=
target_arm_tcg_neon_helper.c.o libqemu-aarch64_be-linux-user.a.p/target_arm=
_tcg_op_helper.c.o libqemu-aarch64_be-linux-user.a.p/target_arm_tcg_tlb_hel=
per.c.o libqemu-aarch64_be-linux-user.a.p/target_arm_tcg_translate.c.o libq=
emu-aarch64_be-linux-user.a.p/target_arm_tcg_translate-m-nocp.c.o libqemu-a=
arch64_be-linux-user.a.p/target_arm_tcg_translate-mve.c.o libqemu-aarch64_b=
e-linux-user.a.p/target_arm_tcg_translate-neon.c.o libqemu-aarch64_be-linux=
-user.a.p/target_arm_tcg_translate-vfp.c.o libqemu-aarch64_be-linux-user.a.=
p/target_arm_tcg_vec_helper.c.o libqemu-aarch64_be-linux-user.a.p/target_ar=
m_tcg_vfp_helper.c.o libqemu-aarch64_be-linux-user.a.p/linux-user_aarch64_c=
pu_loop.c.o libqemu-aarch64_be-linux-user.a.p/linux-user_aarch64_elfload.c.=
o libqemu-aarch64_be-linux-user.a.p/linux-user_aarch64_signal.c.o libqemu-a=
arch64_be-linux-user.a.p/target-info-stub.c.o libqemu-aarch64_be-linux-user=
.a.p/target_arm_cpu64.c.o libqemu-aarch64_be-linux-user.a.p/target_arm_gdbs=
tub64.c.o libqemu-aarch64_be-linux-user.a.p/target_arm_tcg_cpu32.c.o libqem=
u-aarch64_be-linux-user.a.p/target_arm_tcg_cpu64.c.o libqemu-aarch64_be-lin=
ux-user.a.p/target_arm_tcg_gengvec64.c.o libqemu-aarch64_be-linux-user.a.p/=
target_arm_tcg_translate-a64.c.o libqemu-aarch64_be-linux-user.a.p/target_a=
rm_tcg_translate-sve.c.o libqemu-aarch64_be-linux-user.a.p/target_arm_tcg_t=
ranslate-sme.c.o libqemu-aarch64_be-linux-user.a.p/target_arm_tcg_helper-a6=
4.c.o libqemu-aarch64_be-linux-user.a.p/target_arm_tcg_mte_helper.c.o libqe=
mu-aarch64_be-linux-user.a.p/target_arm_tcg_pauth_helper.c.o libqemu-aarch6=
4_be-linux-user.a.p/target_arm_tcg_sme_helper.c.o libqemu-aarch64_be-linux-=
user.a.p/target_arm_tcg_sve_helper.c.o libqemu-aarch64_be-linux-user.a.p/ta=
rget_arm_tcg_vec_helper64.c.o libqemu-aarch64_be-linux-user.a.p/semihosting=
_syscalls.c.o libqemu-aarch64_be-linux-user.a.p/semihosting_arm-compat-semi=
.c.o libqemu-aarch64_be-linux-user.a.p/accel_accel-target.c.o libqemu-aarch=
64_be-linux-user.a.p/hw_intc_arm_gicv3_hvf_stub.c.o libqemu-aarch64_be-linu=
x-user.a.p/gdbstub_user-target.c.o libqemu-aarch64_be-linux-user.a.p/linux-=
user_elfload.c.o libqemu-aarch64_be-linux-user.a.p/linux-user_exit.c.o libq=
emu-aarch64_be-linux-user.a.p/linux-user_fd-trans.c.o libqemu-aarch64_be-li=
nux-user.a.p/linux-user_linuxload.c.o libqemu-aarch64_be-linux-user.a.p/lin=
ux-user_main.c.o libqemu-aarch64_be-linux-user.a.p/linux-user_mmap.c.o libq=
emu-aarch64_be-linux-user.a.p/linux-user_signal.c.o libqemu-aarch64_be-linu=
x-user.a.p/linux-user_strace.c.o libqemu-aarch64_be-linux-user.a.p/linux-us=
er_syscall.c.o libqemu-aarch64_be-linux-user.a.p/linux-user_thunk.c.o libqe=
mu-aarch64_be-linux-user.a.p/linux-user_uaccess.c.o libqemu-aarch64_be-linu=
x-user.a.p/linux-user_uname.c.o libqemu-aarch64_be-linux-user.a.p/linux-use=
r_flatload.c.o libqemu-aarch64_be-linux-user.a.p/linux-user_semihost.c.o li=
bqemu-aarch64_be-linux-user.a.p/linux-user_plugin-api.c.o libqemu-aarch64_b=
e-linux-user.a.p/linux-user_aarch64_mte_user_helper.c.o libhwcore.a.p/hw_co=
re_bus.c.o libhwcore.a.p/hw_core_gpio.c.o libhwcore.a.p/hw_core_qdev-proper=
ties.c.o libhwcore.a.p/hw_core_qdev.c.o libhwcore.a.p/hw_core_resetcontaine=
r.c.o libhwcore.a.p/hw_core_resettable.c.o libhwcore.a.p/hw_core_vmstate-if=
.c.o libhwcore.a.p/hw_core_irq.c.o libhwcore.a.p/hw_core_clock.c.o libhwcor=
e.a.p/hw_core_qdev-clock.c.o libqom.a.p/qom_container.c.o libqom.a.p/qom_ob=
ject.c.o libqom.a.p/qom_object_interfaces.c.o libqom.a.p/qom_qom-qobject.c.=
o libqom.a.p/qom_compat-properties.c.o libevent-loop-base.a.p/event-loop-ba=
se.c.o -Wl,--as-needed -Wl,--no-undefined -pie -fstack-protector-strong -Wl=
,-z,relro -Wl,-z,now -Wl,--start-group libqemuutil.a subprojects/libvhost-u=
ser/libvhost-user-glib.a subprojects/libvhost-user/libvhost-user.a libstubs=
_arm.a -Xlinker --dynamic-list=3D/work/armbru/qemu/bld/plugins/qemu-plugin.=
symbols /usr/lib64/libcapstone.so /usr/lib64/libz.so /usr/lib64/libdw.so /u=
sr/lib64/libelf.so -lnuma /usr/lib64/liburing.so /usr/lib64/libgio-2.0.so /=
usr/lib64/libgobject-2.0.so /usr/lib64/libglib-2.0.so /usr/lib64/libgmodule=
-2.0.so -pthread /usr/lib64/libgnutls.so -lm /usr/lib64/libpixman-1.so /usr=
/lib64/libepoxy.so -Wl,--end-group
/usr/bin/ld: libqemu-aarch64_be-linux-user.a.p/target_arm_cpu64.c.o: in fun=
ction `arm_cpu_sve_finalize':
/work/armbru/qemu/bld/../target/arm/cpu64.c:146:(.text+0x11f2): undefined r=
eference to `arm_find_model'
/usr/bin/ld: libqemu-aarch64_be-linux-user.a.p/target_arm_cpu64.c.o: in fun=
ction `arm_cpu_pauth_finalize':
/work/armbru/qemu/bld/../target/arm/cpu64.c:583:(.text+0x1a55): undefined r=
eference to `arm_find_model'
collect2: error: ld returned 1 exit status
[6689/7247] Linking target qemu-aarch64
FAILED: [code=3D1] qemu-aarch64=20
cc -m64  -o qemu-aarch64 libcommon.a.p/accel_accel-common.c.o libcommon.a.p=
/hw_core_cpu-common.c.o libcommon.a.p/hw_core_machine-smp.c.o libcommon.a.p=
/cpu-common.c.o libcommon.a.p/page-vary-common.c.o libcommon.a.p/target-inf=
o.c.o libcommon.a.p/disas_capstone.c.o libcommon.a.p/disas_disas-host.c.o l=
ibcommon.a.p/disas_disas-target.c.o libcommon.a.p/disas_objdump.c.o libcomm=
on.a.p/disas_disas-common.c.o libcommon.a.p/fpu_softfloat.c.o libcommon.a.p=
/plugins_loader.c.o libcommon.a.p/meson-generated_.._gdbstub_gdbstub-xml.c.=
o libcommon_arm.a.p/target_arm_mmuidx.c.o libcommon_arm.a.p/target_arm_tcg_=
arith_helper.c.o libcommon_arm.a.p/target_arm_tcg_crypto_helper.c.o libuser=
.a.p/semihosting_user.c.o libuser.a.p/semihosting_guestfd.c.o libuser.a.p/a=
ccel_accel-user.c.o libuser.a.p/accel_tcg_cpu-exec.c.o libuser.a.p/accel_tc=
g_cpu-exec-common.c.o libuser.a.p/accel_tcg_tcg-runtime.c.o libuser.a.p/acc=
el_tcg_tcg-runtime-gvec.c.o libuser.a.p/accel_tcg_tb-maint.c.o libuser.a.p/=
accel_tcg_tcg-all.c.o libuser.a.p/accel_tcg_tcg-stats.c.o libuser.a.p/accel=
_tcg_translate-all.c.o libuser.a.p/accel_tcg_translator.c.o libuser.a.p/acc=
el_tcg_plugin-gen.c.o libuser.a.p/accel_tcg_user-exec.c.o libuser.a.p/accel=
_tcg_user-exec-stub.c.o libuser.a.p/hw_core_cpu-user.c.o libuser.a.p/hw_cor=
e_qdev-user.c.o libuser.a.p/gdbstub_gdbstub.c.o libuser.a.p/gdbstub_syscall=
s.c.o libuser.a.p/gdbstub_user.c.o libuser.a.p/cpu-target.c.o libuser.a.p/t=
cg_optimize.c.o libuser.a.p/tcg_region.c.o libuser.a.p/tcg_tcg.c.o libuser.=
a.p/tcg_tcg-common.c.o libuser.a.p/tcg_tcg-op.c.o libuser.a.p/tcg_tcg-op-ld=
st.c.o libuser.a.p/tcg_tcg-op-gvec.c.o libuser.a.p/tcg_tcg-op-vec.c.o libus=
er.a.p/tcg_debuginfo.c.o libuser.a.p/tcg_perf.c.o libuser.a.p/plugins_user.=
c.o libuser.a.p/plugins_api-user.c.o libuser.a.p/plugins_api.c.o libuser.a.=
p/plugins_core.c.o libuser.a.p/common-user_safe-syscall.S.o libuser.a.p/com=
mon-user_safe-syscall-error.c.o libqemu-aarch64-linux-user.a.p/target_arm_g=
dbstub.c.o libqemu-aarch64-linux-user.a.p/target_arm_cpu.c.o libqemu-aarch6=
4-linux-user.a.p/target_arm_cpregs-gcs.c.o libqemu-aarch64-linux-user.a.p/t=
arget_arm_cpregs-pmu.c.o libqemu-aarch64-linux-user.a.p/target_arm_debug_he=
lper.c.o libqemu-aarch64-linux-user.a.p/target_arm_helper.c.o libqemu-aarch=
64-linux-user.a.p/target_arm_vfp_fpscr.c.o libqemu-aarch64-linux-user.a.p/t=
arget_arm_el2-stubs.c.o libqemu-aarch64-linux-user.a.p/target_arm_cpregs-om=
ap-stub.c.o libqemu-aarch64-linux-user.a.p/target_arm_common-semi-target.c.=
o libqemu-aarch64-linux-user.a.p/target_arm_tcg_debug.c.o libqemu-aarch64-l=
inux-user.a.p/target_arm_tcg_gengvec.c.o libqemu-aarch64-linux-user.a.p/tar=
get_arm_tcg_hflags.c.o libqemu-aarch64-linux-user.a.p/target_arm_tcg_m_help=
er.c.o libqemu-aarch64-linux-user.a.p/target_arm_tcg_mve_helper.c.o libqemu=
-aarch64-linux-user.a.p/target_arm_tcg_neon_helper.c.o libqemu-aarch64-linu=
x-user.a.p/target_arm_tcg_op_helper.c.o libqemu-aarch64-linux-user.a.p/targ=
et_arm_tcg_tlb_helper.c.o libqemu-aarch64-linux-user.a.p/target_arm_tcg_tra=
nslate.c.o libqemu-aarch64-linux-user.a.p/target_arm_tcg_translate-m-nocp.c=
.o libqemu-aarch64-linux-user.a.p/target_arm_tcg_translate-mve.c.o libqemu-=
aarch64-linux-user.a.p/target_arm_tcg_translate-neon.c.o libqemu-aarch64-li=
nux-user.a.p/target_arm_tcg_translate-vfp.c.o libqemu-aarch64-linux-user.a.=
p/target_arm_tcg_vec_helper.c.o libqemu-aarch64-linux-user.a.p/target_arm_t=
cg_vfp_helper.c.o libqemu-aarch64-linux-user.a.p/linux-user_aarch64_cpu_loo=
p.c.o libqemu-aarch64-linux-user.a.p/linux-user_aarch64_elfload.c.o libqemu=
-aarch64-linux-user.a.p/linux-user_aarch64_signal.c.o libqemu-aarch64-linux=
-user.a.p/target-info-stub.c.o libqemu-aarch64-linux-user.a.p/target_arm_cp=
u64.c.o libqemu-aarch64-linux-user.a.p/target_arm_gdbstub64.c.o libqemu-aar=
ch64-linux-user.a.p/target_arm_tcg_cpu32.c.o libqemu-aarch64-linux-user.a.p=
/target_arm_tcg_cpu64.c.o libqemu-aarch64-linux-user.a.p/target_arm_tcg_gen=
gvec64.c.o libqemu-aarch64-linux-user.a.p/target_arm_tcg_translate-a64.c.o =
libqemu-aarch64-linux-user.a.p/target_arm_tcg_translate-sve.c.o libqemu-aar=
ch64-linux-user.a.p/target_arm_tcg_translate-sme.c.o libqemu-aarch64-linux-=
user.a.p/target_arm_tcg_helper-a64.c.o libqemu-aarch64-linux-user.a.p/targe=
t_arm_tcg_mte_helper.c.o libqemu-aarch64-linux-user.a.p/target_arm_tcg_paut=
h_helper.c.o libqemu-aarch64-linux-user.a.p/target_arm_tcg_sme_helper.c.o l=
ibqemu-aarch64-linux-user.a.p/target_arm_tcg_sve_helper.c.o libqemu-aarch64=
-linux-user.a.p/target_arm_tcg_vec_helper64.c.o libqemu-aarch64-linux-user.=
a.p/semihosting_syscalls.c.o libqemu-aarch64-linux-user.a.p/semihosting_arm=
-compat-semi.c.o libqemu-aarch64-linux-user.a.p/accel_accel-target.c.o libq=
emu-aarch64-linux-user.a.p/hw_intc_arm_gicv3_hvf_stub.c.o libqemu-aarch64-l=
inux-user.a.p/gdbstub_user-target.c.o libqemu-aarch64-linux-user.a.p/linux-=
user_elfload.c.o libqemu-aarch64-linux-user.a.p/linux-user_exit.c.o libqemu=
-aarch64-linux-user.a.p/linux-user_fd-trans.c.o libqemu-aarch64-linux-user.=
a.p/linux-user_linuxload.c.o libqemu-aarch64-linux-user.a.p/linux-user_main=
.c.o libqemu-aarch64-linux-user.a.p/linux-user_mmap.c.o libqemu-aarch64-lin=
ux-user.a.p/linux-user_signal.c.o libqemu-aarch64-linux-user.a.p/linux-user=
_strace.c.o libqemu-aarch64-linux-user.a.p/linux-user_syscall.c.o libqemu-a=
arch64-linux-user.a.p/linux-user_thunk.c.o libqemu-aarch64-linux-user.a.p/l=
inux-user_uaccess.c.o libqemu-aarch64-linux-user.a.p/linux-user_uname.c.o l=
ibqemu-aarch64-linux-user.a.p/linux-user_flatload.c.o libqemu-aarch64-linux=
-user.a.p/linux-user_semihost.c.o libqemu-aarch64-linux-user.a.p/linux-user=
_plugin-api.c.o libqemu-aarch64-linux-user.a.p/linux-user_aarch64_mte_user_=
helper.c.o libhwcore.a.p/hw_core_bus.c.o libhwcore.a.p/hw_core_gpio.c.o lib=
hwcore.a.p/hw_core_qdev-properties.c.o libhwcore.a.p/hw_core_qdev.c.o libhw=
core.a.p/hw_core_resetcontainer.c.o libhwcore.a.p/hw_core_resettable.c.o li=
bhwcore.a.p/hw_core_vmstate-if.c.o libhwcore.a.p/hw_core_irq.c.o libhwcore.=
a.p/hw_core_clock.c.o libhwcore.a.p/hw_core_qdev-clock.c.o libqom.a.p/qom_c=
ontainer.c.o libqom.a.p/qom_object.c.o libqom.a.p/qom_object_interfaces.c.o=
 libqom.a.p/qom_qom-qobject.c.o libqom.a.p/qom_compat-properties.c.o libeve=
nt-loop-base.a.p/event-loop-base.c.o -Wl,--as-needed -Wl,--no-undefined -pi=
e -fstack-protector-strong -Wl,-z,relro -Wl,-z,now -Wl,--start-group libqem=
uutil.a subprojects/libvhost-user/libvhost-user-glib.a subprojects/libvhost=
-user/libvhost-user.a libstubs_arm.a -Xlinker --dynamic-list=3D/work/armbru=
/qemu/bld/plugins/qemu-plugin.symbols /usr/lib64/libcapstone.so /usr/lib64/=
libz.so /usr/lib64/libdw.so /usr/lib64/libelf.so -lnuma /usr/lib64/liburing=
.so /usr/lib64/libgio-2.0.so /usr/lib64/libgobject-2.0.so /usr/lib64/libgli=
b-2.0.so /usr/lib64/libgmodule-2.0.so -pthread /usr/lib64/libgnutls.so -lm =
/usr/lib64/libpixman-1.so /usr/lib64/libepoxy.so -Wl,--end-group
/usr/bin/ld: libqemu-aarch64-linux-user.a.p/target_arm_cpu64.c.o: in functi=
on `arm_cpu_sve_finalize':
/work/armbru/qemu/bld/../target/arm/cpu64.c:146:(.text+0x11f2): undefined r=
eference to `arm_find_model'
/usr/bin/ld: libqemu-aarch64-linux-user.a.p/target_arm_cpu64.c.o: in functi=
on `arm_cpu_pauth_finalize':
/work/armbru/qemu/bld/../target/arm/cpu64.c:583:(.text+0x1a55): undefined r=
eference to `arm_find_model'
collect2: error: ld returned 1 exit status