[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3 00/13] exec: Rework around CPUState user fields (part 2)
From: |
Ilya Leoshkevich |
Subject: |
Re: [PATCH v3 00/13] exec: Rework around CPUState user fields (part 2) |
Date: |
Tue, 30 Apr 2024 19:55:44 +0200 |
On Tue, Apr 30, 2024 at 02:27:54PM +0200, Philippe Mathieu-Daudé wrote:
> Missing WASM testing by Ilya (branch available at
> https://gitlab.com/philmd/qemu/-/commits/tcg_flush_jmp_cache)
Hmm, it dies very early now:
# gdb --args ./qemu-s390x -L /usr/s390x-linux-gnu
/build/wasmtime/target/s390x-unknown-linux-gnu/debug/deps/component_fuzz_util-d10a3a6b4ad8af47
Thread 1 "qemu-s390x" received signal SIGSEGV, Segmentation fault.
0x000055555559b718 in cpu_common_realizefn (dev=0x5555557c28c0,
errp=<optimized out>) at ../home/iii/myrepos/qemu/hw/core/cpu-common.c:217
217 cpu->accel->plugin_state = qemu_plugin_create_vcpu_state();
(gdb) bt
#0 0x000055555559b718 in cpu_common_realizefn (dev=0x5555557c28c0,
errp=<optimized out>) at ../home/iii/myrepos/qemu/hw/core/cpu-common.c:217
#1 0x000055555559f59a in s390_cpu_realizefn (dev=0x5555557c28c0,
errp=0x7fffffffe1a0) at ../home/iii/myrepos/qemu/target/s390x/cpu.c:284
#2 0x000055555563f76b in device_set_realized (obj=<optimized out>,
value=<optimized out>, errp=0x7fffffffe2e0) at
../home/iii/myrepos/qemu/hw/core/qdev.c:510
#3 0x000055555564363d in property_set_bool (obj=0x5555557c28c0, v=<optimized
out>, name=<optimized out>, opaque=0x5555557a9140, errp=0x7fffffffe2e0) at
../home/iii/myrepos/qemu/qom/object.c:2362
#4 0x0000555555646b9b in object_property_set (obj=obj@entry=0x5555557c28c0,
name=name@entry=0x5555556e8ae2 "realized", v=v@entry=0x5555557c6650,
errp=errp@entry=0x7fffffffe2e0)
at ../home/iii/myrepos/qemu/qom/object.c:1471
#5 0x000055555564a43f in object_property_set_qobject
(obj=obj@entry=0x5555557c28c0, name=name@entry=0x5555556e8ae2 "realized",
value=value@entry=0x5555557a7a90, errp=errp@entry=0x7fffffffe2e0)
at ../home/iii/myrepos/qemu/qom/qom-qobject.c:28
#6 0x0000555555647204 in object_property_set_bool (obj=0x5555557c28c0,
name=name@entry=0x5555556e8ae2 "realized", value=value@entry=true,
errp=errp@entry=0x7fffffffe2e0)
at ../home/iii/myrepos/qemu/qom/object.c:1541
#7 0x000055555564025c in qdev_realize (dev=<optimized out>,
bus=bus@entry=0x0, errp=errp@entry=0x7fffffffe2e0) at
../home/iii/myrepos/qemu/hw/core/qdev.c:291
#8 0x000055555559bbb4 in cpu_create (typename=<optimized out>) at
../home/iii/myrepos/qemu/hw/core/cpu-common.c:61
#9 0x000055555559a467 in main (argc=4, argv=0x7fffffffeaa8, envp=<optimized
out>) at ../home/iii/myrepos/qemu/linux-user/main.c:811
(gdb) p cpu
$1 = (CPUState *) 0x5555557c28c0
(gdb) p cpu->accel
$2 = (AccelCPUState *) 0x0
Configured with: '/home/iii/myrepos/qemu/configure'
'--target-list=s390x-linux-user' '--disable-tools' '--disable-slirp'
'--disable-fdt' '--disable-capstone' '--disable-docs'
If you don't see what can be wrong here right away, I can debug this.
> Since v2:
> - Move cpu_loop_exit_requested() to "exec/cpu-loop.h"
> - Added R-b tags
>
> Since v1:
> - First 13 patches queued
> - Restrict qemu_plugin_vcpu_exit_hook() to (TCG) plugins
> - Restrict cpu_plugin_mem_cbs_enabled() to TCG (plugins)
> - Addressed Richard review comments on the others:
> - Move cpu_plugin_mem_cbs_enabled()
> - Do not move mem_io_pc, waiting for [*]
> - Mention can_do_io restricted
>
> Finish extracting TCG fields from CPUState:
> - Extract tcg_cpu_exit() from cpu_exit()
> - Introduce AccelOpsClass::exit_vcpu_thread()
> - cpu_exit() calls exit_vcpu_thread=tcg_cpu_exit for TCG
> - Forward declare TaskState and more uses of get_task_state()
> - Introduce TCG AccelCPUState
> - Move TCG specific fields from CPUState to AccelCPUState
> - Restrict "exec/tlb-common.h" to TCG
> - Restrict iommu_notifiers, icount to system emulation
>
> [*]
> 20240416040609.1313605-3-richard.henderson@linaro.org/">https://lore.kernel.org/qemu-devel/20240416040609.1313605-3-richard.henderson@linaro.org/
>
> Based-on: https://gitlab.com/philmd/qemu/-/commits/accel-next
>
> Philippe Mathieu-Daudé (13):
> accel/tcg: Restrict qemu_plugin_vcpu_exit_hook() to TCG plugins
> accel/tcg: Restrict cpu_plugin_mem_cbs_enabled() to TCG
> accel/tcg: Move @plugin_mem_cbs from CPUState to
> CPUNegativeOffsetState
> accel/tcg: Move @plugin_state from CPUState to TCG AccelCPUState
> accel/tcg: Restrict cpu_loop_exit_requested() to TCG
> accel/tcg: Restrict IcountDecr / can_do_io / CPUTLB to TCG
> accel/tcg: Move @jmp_env from CPUState to TCG AccelCPUState
> accel/tcg: Move @cflags_next_tb from CPUState to TCG AccelCPUState
> accel/tcg: Move @iommu_notifiers from CPUState to TCG AccelCPUState
> accel/tcg: Move @tcg_cflags from CPUState to TCG AccelCPUState
> accel/tcg: Restrict icount to system emulation
> accel/tcg: Move icount fields from CPUState to TCG AccelCPUState
> accel/tcg: Move @tb_jmp_cache from CPUState to TCG AccelCPUState
>
> accel/tcg/internal-common.h | 18 ++++++++++
> accel/tcg/tb-jmp-cache.h | 4 +--
> accel/tcg/tcg-accel-ops.h | 1 +
> accel/tcg/vcpu-state.h | 20 +++++++++++
> include/exec/cpu-loop.h | 35 +++++++++++++++++++
> include/exec/exec-all.h | 17 ----------
> include/exec/tlb-common.h | 4 +++
> include/hw/core/cpu.h | 58 ++++++++------------------------
> include/qemu/plugin.h | 2 +-
> include/qemu/typedefs.h | 1 -
> accel/tcg/cpu-exec-common.c | 2 +-
> accel/tcg/cpu-exec.c | 52 +++++++++++++++-------------
> accel/tcg/cputlb.c | 2 +-
> accel/tcg/icount-common.c | 7 ++--
> accel/tcg/plugin-gen.c | 9 +++--
> accel/tcg/tb-maint.c | 6 ++--
> accel/tcg/tcg-accel-ops-icount.c | 14 ++++----
> accel/tcg/tcg-accel-ops.c | 2 ++
> accel/tcg/translate-all.c | 9 ++---
> accel/tcg/watchpoint.c | 5 +--
> hw/core/cpu-common.c | 9 +++--
> linux-user/main.c | 2 +-
> plugins/core.c | 9 ++---
> system/physmem.c | 37 +++++++++++++++-----
> target/arm/tcg/helper-a64.c | 1 +
> target/s390x/tcg/mem_helper.c | 1 +
> 26 files changed, 195 insertions(+), 132 deletions(-)
> create mode 100644 include/exec/cpu-loop.h
>
> --
> 2.41.0
>
- [PATCH v3 04/13] accel/tcg: Move @plugin_state from CPUState to TCG AccelCPUState, (continued)
- [PATCH v3 04/13] accel/tcg: Move @plugin_state from CPUState to TCG AccelCPUState, Philippe Mathieu-Daudé, 2024/04/30
- [PATCH v3 05/13] accel/tcg: Restrict cpu_loop_exit_requested() to TCG, Philippe Mathieu-Daudé, 2024/04/30
- [PATCH v3 06/13] accel/tcg: Restrict IcountDecr / can_do_io / CPUTLB to TCG, Philippe Mathieu-Daudé, 2024/04/30
- [PATCH v3 07/13] accel/tcg: Move @jmp_env from CPUState to TCG AccelCPUState, Philippe Mathieu-Daudé, 2024/04/30
- [PATCH v3 08/13] accel/tcg: Move @cflags_next_tb from CPUState to TCG AccelCPUState, Philippe Mathieu-Daudé, 2024/04/30
- [PATCH v3 09/13] accel/tcg: Move @iommu_notifiers from CPUState to TCG AccelCPUState, Philippe Mathieu-Daudé, 2024/04/30
- [PATCH v3 10/13] accel/tcg: Move @tcg_cflags from CPUState to TCG AccelCPUState, Philippe Mathieu-Daudé, 2024/04/30
- [PATCH v3 11/13] accel/tcg: Restrict icount to system emulation, Philippe Mathieu-Daudé, 2024/04/30
- [PATCH v3 12/13] accel/tcg: Move icount fields from CPUState to TCG AccelCPUState, Philippe Mathieu-Daudé, 2024/04/30
- [PATCH v3 13/13] accel/tcg: Move @tb_jmp_cache from CPUState to TCG AccelCPUState, Philippe Mathieu-Daudé, 2024/04/30
- Re: [PATCH v3 00/13] exec: Rework around CPUState user fields (part 2),
Ilya Leoshkevich <=