[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v4 00/16] gdbstub: support for the multiprocess
From: |
Luc Michel |
Subject: |
Re: [Qemu-devel] [PATCH v4 00/16] gdbstub: support for the multiprocess extension |
Date: |
Fri, 9 Nov 2018 09:36:44 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1 |
On 11/8/18 5:09 PM, Philippe Mathieu-Daudé wrote:
> On 6/11/18 12:05, Luc Michel wrote:
>> changes since v3:
>> - patch 1 cpu_cluster.h: remove QEMU_ from the multiple includes
>> guard #ifdef/#define [Alistair]
>>
>> - patch 1 cpu_cluster.c: include osdep.h first [Alistair]
>>
>> - patch 1 use uint64_t for cluster ID for prosperity :) [Philippe]
>
> Actually my comment about 32-bit had the opposite meaning, I suppose
> having 256 kind of cpu cores in the same SoC is probably enough for a
> long time IMHO.
Oops sorry about that :) I thought you were referring to an old quote
from a guy at Redmond about 640KiB of RAM ;)
A case I was thinking about that would require more than 8- or 16-bit ID
is if for whatever reason we need to model a SoC with sparse
(non-continuous) cluster IDs.
Anyway, I can put back the uint32_t for the next re-roll, I think it's a
good compromise.
Thanks.
Luc
>
>>
>> - patch 1 auto-assign a cluster ID to newly created clusters
>> [Philippe]
>>
>> - patch 2 fix mid-code variable declaration [Alistair]
>>
>> - patch 3 add a comment in gdb_get_cpu_pid() when retrieving CPU
>> parent canonical path [Alistair]
>>
>> - patch 14 fix a typo in the commit message [Alistair]
>>
>> changes since v2:
>> - patch 1 introducing the cpu-cluster type. I didn't opt for an
>> Interface, but I can add one if you think it's necessary.
>> For now this class inherits from Device and has a
>> cluster-id property, used by the GDB stub to compute a
>> PID.
>>
>> - patch 2 removed GDB group related code as it has been replaced
>> with CPU clusters
>>
>> - patch 2/8 moved GDBProcess target_xml field introduction into patch
>> 8 [Philippe]
>>
>> - patch 3 gdb_get_cpu_pid() now search for CPU being a child of a
>> cpu-cluster object. Use the cluster-id to compute the
>> PID.
>>
>> - patch 4 gdb_get_process() does not rely on s->processes array
>> indices anymore as PIDs can now be sparse. Instead,
>> iterate
>> over the array to find the process.
>>
>> - patch 3/4 removed Reviewed-by tags because of substantial changes.
>>
>> - patch 4/7 read_thread_id() hardening [Philippe]
>>
>> - patch 12 safer vAttach packet parsing [Phillipe]
>>
>> - patch 16 put APUs and RPUs in different clusters instead of GDB
>> groups
>>
>> changes since v1:
>> - rename qemu_get_thread_id() to gdb_fmt_thread_id() [Philippe]
>> - check qemu_strtoul() return value for 'D' packets [Philippe]
>>
>>
>> This series adds support for the multiprocess extension of the GDB
>> remote protocol in the QEMU GDB stub.
>>
>> This extension is useful to split QEMU emulated CPUs in different
>> processes from the point of view of the GDB client. It adds the
>> possibility to debug different kind of processors (e.g. an AArch64 and
>> an ARMv7 CPU) at the same time (it is not possible otherwise since GDB
>> expects an SMP view at the thread granularity.
>>
>> CPUs are grouped using specially named QOM containers. CPUs that are
>> children of such a container are grouped under the same GDB process.
>>
>> The last patch groups the CPUs of different model in the zynqmp machines
>> into separate processes.
>>
>> To test this patchset, you can use the following commands:
>>
>> (Note that this requires a recent enough GDB, I think GDB 7.2 is OK.
>> Also, it must be compiled to support both ARM and AArch64 architectures)
>>
>> Run QEMU: (-smp 6 in xlnx-zcu102 enables both cortex-a53 and cortex-r5
>> CPUs)
>>
>> qemu-system-aarch64 -M xlnx-zcu102 -gdb tcp::1234 -S -smp 6
>>
>> Run the following commands in GDB:
>>
>> target extended :1234
>> add-inferior
>> inferior 2
>> attach 2
>> info threads
>>
>> I want to thanks the Xilinx's QEMU team who sponsored this work for
>> their collaboration and their prototype implementation.
>>
>> Luc Michel (16):
>> hw/cpu: introduce CPU clusters
>> gdbstub: introduce GDB processes
>> gdbstub: add multiprocess support to '?' packets
>> gdbstub: add multiprocess support to 'H' and 'T' packets
>> gdbstub: add multiprocess support to vCont packets
>> gdbstub: add multiprocess support to 'sC' packets
>> gdbstub: add multiprocess support to (f|s)ThreadInfo and
>> ThreadExtraInfo
>> gdbstub: add multiprocess support to Xfer:features:read:
>> gdbstub: add multiprocess support to gdb_vm_state_change()
>> gdbstub: add multiprocess support to 'D' packets
>> gdbstub: add support for extended mode packet
>> gdbstub: add support for vAttach packets
>> gdbstub: processes initialization on new peer connection
>> gdbstub: gdb_set_stop_cpu: ignore request when process is not attached
>> gdbstub: add multiprocess extension support
>> arm/xlnx-zynqmp: put APUs and RPUs in separate CPU clusters
>>
>> include/hw/arm/xlnx-zynqmp.h | 3 +
>> include/hw/cpu/cluster.h | 38 +++
>> gdbstub.c | 632 ++++++++++++++++++++++++++++++-----
>> hw/arm/xlnx-zynqmp.c | 21 +-
>> hw/cpu/cluster.c | 59 ++++
>> hw/cpu/Makefile.objs | 2 +-
>> 6 files changed, 674 insertions(+), 81 deletions(-)
>> create mode 100644 include/hw/cpu/cluster.h
>> create mode 100644 hw/cpu/cluster.c
>>
- [Qemu-devel] [PATCH v4 16/16] arm/xlnx-zynqmp: put APUs and RPUs in separate CPU clusters, (continued)
- [Qemu-devel] [PATCH v4 16/16] arm/xlnx-zynqmp: put APUs and RPUs in separate CPU clusters, Luc Michel, 2018/11/06
- [Qemu-devel] [PATCH v4 15/16] gdbstub: add multiprocess extension support, Luc Michel, 2018/11/06
- [Qemu-devel] [PATCH v4 13/16] gdbstub: processes initialization on new peer connection, Luc Michel, 2018/11/06
- [Qemu-devel] [PATCH v4 14/16] gdbstub: gdb_set_stop_cpu: ignore request when process is not attached, Luc Michel, 2018/11/06
- [Qemu-devel] [PATCH v4 12/16] gdbstub: add support for vAttach packets, Luc Michel, 2018/11/06
- [Qemu-devel] [PATCH v4 11/16] gdbstub: add support for extended mode packet, Luc Michel, 2018/11/06
- Re: [Qemu-devel] [PATCH v4 00/16] gdbstub: support for the multiprocess extension, no-reply, 2018/11/06
- Re: [Qemu-devel] [PATCH v4 00/16] gdbstub: support for the multiprocess extension, no-reply, 2018/11/07
- Re: [Qemu-devel] [PATCH v4 00/16] gdbstub: support for the multiprocess extension, no-reply, 2018/11/08
- Re: [Qemu-devel] [PATCH v4 00/16] gdbstub: support for the multiprocess extension, Philippe Mathieu-Daudé, 2018/11/08
- Re: [Qemu-devel] [PATCH v4 00/16] gdbstub: support for the multiprocess extension,
Luc Michel <=
- Re: [Qemu-devel] [PATCH v4 00/16] gdbstub: support for the multiprocess extension, no-reply, 2018/11/09