Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Simon Marchi <simark@simark.ca>
To: Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>,
	gdb-patches@sourceware.org,
	Markus Metzger <markus.t.metzger@intel.com>
Subject: Re: [PATCH v3 06/44] gdb, arch, intelgt: add intelgt arch definitions
Date: Tue, 9 Dec 2025 16:48:58 -0500	[thread overview]
Message-ID: <9399c753-fb5d-45ca-90a3-81f48b3b3077@simark.ca> (raw)
In-Reply-To: <20250801-upstream-intelgt-mvp-v3-6-59ce0f87075b@intel.com>

On 8/1/25 5:37 AM, Tankut Baris Aktemur wrote:
> From: Markus Metzger <markus.t.metzger@intel.com>
> 
> Provide Intel GT architecture-specific definitions that can be used by
> both the low target at the server side and tdep at the GDB side.
> 
> Other than, for example, IA, Intel GT does not have a dedicated
> breakpoint instruction.  Instead, it has a breakpoint bit in each
> instruction.  We define arch methods for dealing with instruction
> breakpoint bits.
> 
> Co-authored-by: Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
> Co-authored-by: Mihails Strasuns <mihails.strasuns@intel.com>
> Co-authored-by: Natalia Saiapova <natalia.saiapova@intel.com>
> Reviewed-By: Thiago Jung Bauermann <thiago.bauermann@linaro.org>

This LGTM, see nits below.

Approved-By: Simon Marchi <simon.marchi@efficios.com>

> +#include "gdbsupport/tdesc.h"
> +#include <string>
> +#include <vector>

clangd tells me that all these includes are unused.

> +
> +namespace intelgt {

Good idea to use a namespace here, we don't do that enough in GDB.

> +
> +/* Various arch constants.  */
> +
> +enum breakpoint_kind
> +{
> +  BP_INSTRUCTION = 1,
> +};

enum class, for new stuff?  You can get rid of the prefix then.

> +
> +/* The length of a full and compact IntelGT instruction in bytes.  */
> +
> +constexpr int MAX_INST_LENGTH = 16;
> +constexpr int COMPACT_INST_LENGTH = 8;
> +
> +/* Feature names.
> +
> +   They correspond to register sets defined in zet_intel_gpu_debug.h.  We
> +   declare feature names in the order used in that header.
> +
> +   The SBA register set consists of a set of base registers in the order
> +   defined in that header file.
> +
> +   Not all registers have DWARF numbers.  See DWARF_REGSETS below for a
> +   list of features that do.  */
> +constexpr const char *FEATURE_GRF = "org.gnu.gdb.intelgt.grf";
> +constexpr const char *FEATURE_ADDR = "org.gnu.gdb.intelgt.addr";
> +constexpr const char *FEATURE_FLAG = "org.gnu.gdb.intelgt.flag";
> +constexpr const char *FEATURE_CE = "org.gnu.gdb.intelgt.ce";
> +constexpr const char *FEATURE_SR = "org.gnu.gdb.intelgt.sr";
> +constexpr const char *FEATURE_CR = "org.gnu.gdb.intelgt.cr";
> +constexpr const char *FEATURE_TDR = "org.gnu.gdb.intelgt.tdr";
> +constexpr const char *FEATURE_ACC = "org.gnu.gdb.intelgt.acc";
> +constexpr const char *FEATURE_MME = "org.gnu.gdb.intelgt.mme";
> +constexpr const char *FEATURE_SP = "org.gnu.gdb.intelgt.sp";
> +constexpr const char *FEATURE_SBA = "org.gnu.gdb.intelgt.sba";
> +constexpr const char *FEATURE_DBG = "org.gnu.gdb.intelgt.dbg";
> +constexpr const char *FEATURE_FC = "org.gnu.gdb.intelgt.fc";
> +constexpr const char *FEATURE_DEBUGGER = "org.gnu.gdb.intelgt.debugger";
> +
> +/* Register sets/groups needed for DWARF mapping.  Used for
> +   declaring static arrays for various mapping tables.  */
> +
> +enum dwarf_regsets : int
> +{
> +  REGSET_SBA = 0,
> +  REGSET_GRF,
> +  REGSET_ADDR,
> +  REGSET_FLAG,
> +  REGSET_ACC,
> +  REGSET_MME,
> +  REGSET_COUNT
> +};
> +
> +/* Map of dwarf_regset values to the target description
> +   feature names.  */
> +
> +constexpr const char *DWARF_REGSET_FEATURES[REGSET_COUNT] = {
> +  FEATURE_SBA,
> +  FEATURE_GRF,
> +  FEATURE_ADDR,
> +  FEATURE_FLAG,
> +  FEATURE_ACC,
> +  FEATURE_MME
> +};
> +
> +/* The encoding for XE version enumerates follows this pattern, which is

enumerates -> enumerators?

> +   aligned with the IGA encoding.  */

What is IGA?  Around here it's a grocery store (https://www.iga.net). :)

> +
> +#define XE_VERSION(MAJ, MIN) (((MAJ) << 24) | (MIN))

With my modern C++ hat on: I am wondering if this can be a (constexpr?)
function, just because.

> +/* Supported GDB XE platforms.  */
> +
> +enum xe_version
> +{
> +  XE_INVALID = 0,
> +  XE_HP = XE_VERSION (1, 1),
> +  XE_HPG = XE_VERSION (1, 2),
> +  XE_HPC = XE_VERSION (1, 4),
> +  XE2 = XE_VERSION (2, 0),
> +  XE3 = XE_VERSION (3, 0),
> +};
> +
> +/* Helper function to translate the device id to a device version.  */
> +
> +extern xe_version get_xe_version (uint32_t device_id);

I would remove this "extern" (and all the unnecessary uses of "extern"
in the project actually).

Simon

  reply	other threads:[~2025-12-09 21:49 UTC|newest]

Thread overview: 92+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-01  9:37 [PATCH v3 00/44] A new target to debug Intel GPUs Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 01/44] gdb, intelgt: add intelgt as a basic machine Tankut Baris Aktemur
2025-12-09 20:44   ` Simon Marchi
2025-12-19 11:13     ` Aktemur, Tankut Baris
2025-08-01  9:37 ` [PATCH v3 02/44] bfd: add intelgt target to BFD Tankut Baris Aktemur
2025-08-01 12:20   ` Jan Beulich
2025-08-08  5:03     ` Metzger, Markus T
2025-12-09 21:05   ` Simon Marchi
2025-12-19 12:46     ` Aktemur, Tankut Baris
2025-08-01  9:37 ` [PATCH v3 03/44] ld: add intelgt as a target configuration Tankut Baris Aktemur
2025-08-01 12:06   ` Jan Beulich
2025-08-08  5:03     ` Metzger, Markus T
2025-08-01  9:37 ` [PATCH v3 04/44] opcodes: add intelgt as a configuration Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 05/44] gdb, gdbserver, gdbsupport: add 'device' tag to XML target description Tankut Baris Aktemur
2025-12-09 21:27   ` Simon Marchi
2025-12-15 21:03     ` Simon Marchi
2025-12-18 15:04       ` Aktemur, Tankut Baris
2026-01-09 19:12         ` Aktemur, Tankut Baris
2026-01-09 19:34           ` Simon Marchi
2025-08-01  9:37 ` [PATCH v3 06/44] gdb, arch, intelgt: add intelgt arch definitions Tankut Baris Aktemur
2025-12-09 21:48   ` Simon Marchi [this message]
2025-12-16 15:47     ` Metzger, Markus T
2025-08-01  9:37 ` [PATCH v3 07/44] gdb, intelgt: add the target-dependent definitions for the Intel GT architecture Tankut Baris Aktemur
2025-12-11 18:53   ` Simon Marchi
2025-12-19 16:01     ` Aktemur, Tankut Baris
2025-08-01  9:37 ` [PATCH v3 08/44] gdb, intelgt: add disassemble feature " Tankut Baris Aktemur
2025-12-11 19:37   ` Simon Marchi
2025-12-23 11:03     ` Aktemur, Tankut Baris
2025-08-01  9:37 ` [PATCH v3 09/44] gdb, gdbserver, ze: in-memory libraries Tankut Baris Aktemur
2025-12-12  4:13   ` Simon Marchi
2025-12-12 11:20     ` Metzger, Markus T
2025-12-12 19:34       ` Simon Marchi
2025-12-15 13:07         ` Metzger, Markus T
2025-12-15 21:25           ` Simon Marchi
2025-08-01  9:37 ` [PATCH v3 10/44] gdb, gdbserver, rsp, ze: acknowledge libraries Tankut Baris Aktemur
2025-12-12  4:41   ` Simon Marchi
2025-12-12 14:28     ` Metzger, Markus T
2025-08-01  9:37 ` [PATCH v3 11/44] gdb, solib, ze: update target_solib_ops::bfd_open_from_target_memory Tankut Baris Aktemur
2025-12-12  4:43   ` Simon Marchi
2025-12-12 14:33     ` Metzger, Markus T
2025-08-01  9:37 ` [PATCH v3 12/44] gdb, infrun, ze: allow saving process events Tankut Baris Aktemur
2025-12-12  4:57   ` Simon Marchi
2025-12-15 13:13     ` Metzger, Markus T
2025-12-16 21:10       ` Simon Marchi
2025-12-17  9:30         ` Metzger, Markus T
2025-12-17 20:44           ` Simon Marchi
2025-12-18  7:20             ` Metzger, Markus T
2025-08-01  9:37 ` [PATCH v3 13/44] gdb, ze: add TARGET_WAITKIND_UNAVAILABLE Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 14/44] gdb, infrun, ze: handle stopping unavailable threads Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 15/44] gdb, infrun, ze: allow resuming " Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 16/44] gdb, gdbserver, ze: add U stop reply Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 17/44] gdb, gdbserver, ze: add library notification to " Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 18/44] gdbserver, ze: report TARGET_WAITKIND_UNAVAILABLE events Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 19/44] gdb, ze: handle TARGET_WAITKIND_UNAVAILABLE in stop_all_threads Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 20/44] gdb, remote: handle thread unavailability in print_one_stopped_thread Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 21/44] gdb, remote: do 'remote_add_inferior' in 'remote_notice_new_inferior' earlier Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 22/44] gdb, remote: handle a generic process PID in remote_notice_new_inferior Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 23/44] gdb, remote: handle a generic process PID in process_stop_reply Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 24/44] gdb: use the pid from inferior in setup_inferior Tankut Baris Aktemur
2025-12-12 19:51   ` Simon Marchi
2025-12-13 12:40     ` Aktemur, Tankut Baris
2025-08-01  9:37 ` [PATCH v3 25/44] gdb: revise the pid_to_exec_file target op Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 26/44] gdb: load solibs if the target does not have the notion of an exec file Tankut Baris Aktemur
2025-12-12 20:30   ` Simon Marchi
2026-01-09 19:10     ` Aktemur, Tankut Baris
2025-08-01  9:37 ` [PATCH v3 27/44] gdbserver: import AC_LIB_HAVE_LINKFLAGS macro into the autoconf script Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 28/44] gdbserver: add a pointer to the owner thread in regcache Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 29/44] gdbserver: wait for stopped threads in queue_stop_reply_callback Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 30/44] gdbserver: adjust pid after the target attaches Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 31/44] gdb: do not create a thread after a process event Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 32/44] gdb, ze: on a whole process stop, mark all threads as not_resumed Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 33/44] gdb, dwarf, ze: add DW_OP_INTEL_regval_bits Tankut Baris Aktemur
2025-08-01 12:02   ` Jan Beulich
2025-08-01 12:31     ` Metzger, Markus T
2025-08-01 12:50       ` Jan Beulich
2025-08-08  5:25         ` Metzger, Markus T
2025-08-01  9:37 ` [PATCH v3 34/44] gdbserver: allow configuring for a heterogeneous target Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 35/44] gdbserver, ze, intelgt: introduce ze-low and intel-ze-low targets Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 36/44] testsuite, sycl: add SYCL support Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 37/44] testsuite, sycl: add test for backtracing inside a kernel Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 38/44] testsuite, sycl: add test for 'info locals' and 'info args' Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 39/44] testsuite, sycl: add tests for stepping and accessing data elements Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 40/44] testsuite, sycl: add test for 1-D and 2-D parallel_for kernels Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 41/44] testsuite, sycl: add test for scheduler-locking Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 42/44] testsuite, arch, intelgt: add a disassembly test Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 43/44] testsuite, arch, intelgt: add intelgt-program-bp.exp Tankut Baris Aktemur
2025-08-01  9:37 ` [PATCH v3 44/44] testsuite, sycl: test canceling a stepping flow Tankut Baris Aktemur
2025-09-17 12:43 ` [PATCH v3 00/44] A new target to debug Intel GPUs Aktemur, Tankut Baris
2025-10-14  6:34   ` Aktemur, Tankut Baris
2025-12-08 11:32 ` Aktemur, Tankut Baris
2025-12-09 21:30 ` Simon Marchi
2025-12-19 12:52   ` Aktemur, Tankut Baris

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9399c753-fb5d-45ca-90a3-81f48b3b3077@simark.ca \
    --to=simark@simark.ca \
    --cc=gdb-patches@sourceware.org \
    --cc=markus.t.metzger@intel.com \
    --cc=tankut.baris.aktemur@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox