On 2/6/25 11:16, Peter Maydell wrote:
On Mon, 2 Jun 2025 at 10:08, Philippe Mathieu-Daudé <phi...@linaro.org> wrote:

We shouldn't kick a stopped vCPU, as it will be resumed.

What is this trying to fix?

Hmm I guess the bug is in the accelerator I'm trying (split).

Do we get wrong-behaviour,

Not really.

or is it just a bit inefficient as the vcpu thread
goes round its loop and decides it still has nothing to do?

So far with mainstream, yes. Adding an assertion triggers:

    frame #3: 0x000000018a5aaeec libsystem_c.dylib`__assert_rtn + 284
* frame #4: 0x000000010094b8e0 qemu-system-aarch64-unsigned`qemu_cpu_kick.cold.1 at cpus.c:494:5 frame #5: 0x00000001002e8380 qemu-system-aarch64-unsigned`qemu_cpu_kick(cpu=0x0000000140028000) at cpus.c:494:5 frame #6: 0x00000001006d2a7c qemu-system-aarch64-unsigned`memory_listener_register [inlined] listener_add_address_space(listener=0x00006000015e9dd8, as=0x00006000019eaa00) at memory.c:3107:9 frame #7: 0x00000001006d28e4 qemu-system-aarch64-unsigned`memory_listener_register(listener=0x00006000015e9dd8, as=0x00006000019eaa00) at memory.c:3195:5 frame #8: 0x00000001006d6fd8 qemu-system-aarch64-unsigned`cpu_address_space_init(cpu=<unavailable>, asidx=<unavailable>, prefix=<unavailable>, mr=<unavailable>) at physmem.c:783:9 [artificial] frame #9: 0x0000000100412c6c qemu-system-aarch64-unsigned`arm_cpu_realizefn(dev=0x0000000140028000, errp=0x000000016fdfe250) at cpu.c:2633:5 frame #10: 0x0000000100708b9c qemu-system-aarch64-unsigned`device_set_realized(obj=<unavailable>, value=<unavailable>, errp=0x000000016fdfe308) at qdev.c:494:13 frame #11: 0x000000010071054c qemu-system-aarch64-unsigned`property_set_bool(obj=0x0000000140028000, v=<unavailable>, name=<unavailable>, opaque=0x0000600002ee03c0, errp=0x000000016fdfe308) at object.c:2374:5 frame #12: 0x000000010070e27c qemu-system-aarch64-unsigned`object_property_set(obj=0x0000000140028000, name="realized", v=0x00006000010eb400, errp=0x000000016fdfe308) at object.c:1449:5 frame #13: 0x00000001007128b0 qemu-system-aarch64-unsigned`object_property_set_qobject(obj=<unavailable>, name=<unavailable>, value=<unavailable>, errp=<unavailable>) at qom-qobject.c:28:10 frame #14: 0x000000010070e788 qemu-system-aarch64-unsigned`object_property_set_bool(obj=<unavailable>, name=<unavailable>, value=<unavailable>, errp=<unavailable>) at object.c:1519:15 frame #15: 0x0000000100707bf8 qemu-system-aarch64-unsigned`qdev_realize(dev=<unavailable>, bus=<unavailable>, errp=<unavailable>) at qdev.c:276:12 [artificial] frame #16: 0x000000010039fec4 qemu-system-aarch64-unsigned`machvirt_init(machine=0x000000014e1071c0) at virt.c:2355:9 frame #17: 0x00000001000c313c qemu-system-aarch64-unsigned`machine_run_board_init(machine=<unavailable>, mem_path=<unavailable>, errp=<unavailable>) at machine.c:1682:5 frame #18: 0x00000001002f3000 qemu-system-aarch64-unsigned`qmp_x_exit_preconfig [inlined] qemu_init_board at vl.c:2716:5 frame #19: 0x00000001002f2fb4 qemu-system-aarch64-unsigned`qmp_x_exit_preconfig(errp=0x0000000101996590) at vl.c:2812:5 frame #20: 0x00000001002f6da4 qemu-system-aarch64-unsigned`qemu_init(argc=<unavailable>, argv=<unavailable>) at vl.c:3848:9 frame #21: 0x000000010081aaac qemu-system-aarch64-unsigned`main(argc=<unavailable>, argv=<unavailable>) at main.c:71:5

Please ignore this patch, I'll keep debugging and eventually repost
the same content described as simple optimization.

Regards,

Phil.

Reply via email to