From patchwork Mon Oct 1 11:56:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Michel X-Patchwork-Id: 10621917 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 98F1A1515 for ; Mon, 1 Oct 2018 12:04:46 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8418B28FB9 for ; Mon, 1 Oct 2018 12:04:46 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 76FAB2903B; Mon, 1 Oct 2018 12:04:46 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id E6CC828FB9 for ; Mon, 1 Oct 2018 12:04:45 +0000 (UTC) Received: from localhost ([::1]:37835 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g6wwL-0001m7-M3 for patchwork-qemu-devel@patchwork.kernel.org; Mon, 01 Oct 2018 08:04:41 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35051) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g6wpT-0002R9-Ad for qemu-devel@nongnu.org; Mon, 01 Oct 2018 07:57:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g6wpQ-0005nc-LL for qemu-devel@nongnu.org; Mon, 01 Oct 2018 07:57:35 -0400 Received: from greensocs.com ([193.104.36.180]:40041) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g6wpF-0005SQ-W6; Mon, 01 Oct 2018 07:57:26 -0400 Received: from localhost (localhost [127.0.0.1]) by greensocs.com (Postfix) with ESMTP id EC0B8511C72; Mon, 1 Oct 2018 13:57:07 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=greensocs.com; s=mail; t=1538395028; bh=+qx1q9yK5m0Om6fDDmfIgGKAonwx+zBtob8Wmu7o8ow=; h=From:To:Cc:Subject:Date; b=Yz7cqZ6zJ8WOz5rzGudjr0nama34ADNB4eOCe3BW5D5H0HZfEKVdurPtIG7d4Dlgq CaWOXQQX0W2AIUv3kbK75g90lOpzcQ6u6WB0GS6vFnjoTRKJlbm90e3vvVn8aCILzi AKnWnDeeVUJ/pQrSRkFqni7xGcJ3/z9aS0SdKubY= X-Virus-Scanned: amavisd-new at greensocs.com Authentication-Results: gs-01.greensocs.com (amavisd-new); dkim=pass (1024-bit key) header.d=greensocs.com header.b=jwtOWsnd; dkim=pass (1024-bit key) header.d=greensocs.com header.b=p9Eiqo3J Received: from greensocs.com ([127.0.0.1]) by localhost (gs-01.greensocs.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id SAeSzTVyLFgw; Mon, 1 Oct 2018 13:57:06 +0200 (CEST) Received: by greensocs.com (Postfix, from userid 998) id 1D10B511C59; Mon, 1 Oct 2018 13:57:06 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=greensocs.com; s=mail; t=1538395026; bh=+qx1q9yK5m0Om6fDDmfIgGKAonwx+zBtob8Wmu7o8ow=; h=From:To:Cc:Subject:Date; b=jwtOWsnd69TsArfIbH5kuXX2BjU2PguEiJnJKdwyaNrSwp2WL2D6hZLfIfcjHIsQu F6s7OGt2Ai/L8lAWYJ610uaEMMcz2r4C66jTBH4JOr/ipDMY/84u6I6jekkKuEXOVQ zd+K9u/Phodyp6MimwHc3TtjXwlm1VgPPI3yuR7E= Received: from michell-laptop.home.lmichel.fr (LFbn-1-8165-82.w90-112.abo.wanadoo.fr [90.112.74.82]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: luc.michel@greensocs.com) by greensocs.com (Postfix) with ESMTPSA id AF454511C51; Mon, 1 Oct 2018 13:57:05 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=greensocs.com; s=mail; t=1538395025; bh=+qx1q9yK5m0Om6fDDmfIgGKAonwx+zBtob8Wmu7o8ow=; h=From:To:Cc:Subject:Date; b=p9Eiqo3JOeWJK2dLRfMqd2gXXdqtD6wT8Oq/ZyXPJwDJmY1t/sedt6xuYSZlBfsYV 6+Oq9SWEOfYcMCr4cg3DSMaRr2O82/3epPmrtENti8I1hgF3jSqY+d0KDadw5ENuNB iF9higtSXI6odIHuXD5Qgk1ndEgLg7DoT45Pd6nU= From: Luc Michel To: qemu-devel@nongnu.org Date: Mon, 1 Oct 2018 13:56:49 +0200 Message-Id: <20181001115704.701-1-luc.michel@greensocs.com> X-Mailer: git-send-email 2.19.0 MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 193.104.36.180 Subject: [Qemu-devel] [PATCH v2 00/15] gdbstub: support for the multiprocess extension X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , alistair@alistair23.me, mark.burton@greensocs.com, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , saipava@xilinx.com, edgari@xilinx.com, qemu-arm@nongnu.org, Luc Michel Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP 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 (15): 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 GDB groups include/exec/gdbstub.h | 8 + gdbstub.c | 594 +++++++++++++++++++++++++++++++++++------ hw/arm/xlnx-zynqmp.c | 7 +- 3 files changed, 531 insertions(+), 78 deletions(-) --- 2.19.0