Commit 71cda98120 for qemu.org

commit 71cda981208ebcfa403d8e3451d1d5bdef0b0931
Author: Vacha Bhavsar <vacha.bhavsar@oss.qualcomm.com>
Date:   Tue Sep 9 16:10:10 2025 +0000

    target/arm: Increase MAX_PACKET_LENGTH for SME ZA remote gdb debugging

    This patch increases the value of the MAX_PACKET_LEGNTH to
    131104 from 4096 to allow the GDBState.line_buf to be large enough
    to accommodate the full contents of the SME ZA storage when the
    vector length is maximal. This is in preparation for a related
    patch that allows SME register visibility through remote GDB
    debugging.

    Signed-off-by: Vacha Bhavsar <vacha.bhavsar@oss.qualcomm.com>
    Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
    Message-id: 20250909161012.2561593-2-vacha.bhavsar@oss.qualcomm.com
    [PMM: fixed up comment formatting]
    Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

diff --git a/gdbstub/internals.h b/gdbstub/internals.h
index bf5a5c6302..92466b28c1 100644
--- a/gdbstub/internals.h
+++ b/gdbstub/internals.h
@@ -11,7 +11,27 @@

 #include "exec/cpu-common.h"

-#define MAX_PACKET_LENGTH 4096
+/*
+ * Most "large" transfers (e.g. memory reads, feature XML
+ * transfer) have mechanisms in the gdb protocol for splitting
+ * them. However, register values in particular cannot currently
+ * be split. This packet size must therefore be at least big enough
+ * for the worst-case register size. Currently that is Arm SME
+ * ZA storage with a 256x256 byte value. We also must account
+ * for the conversion from raw data to hex in gdb_memtohex(),
+ * which writes 2 * size bytes, and for other protocol overhead
+ * including command, register number and checksum which add
+ * another 4 bytes of overhead. However, to be consistent with
+ * the changes made in gdbserver to address this same requirement,
+ * we add a total of 32 bytes to account for protocol overhead
+ * (unclear why specifically 32 bytes), bringing the value of
+ * MAX_PACKET_LENGTH to 2 * 256 * 256 + 32 = 131104.
+ *
+ * The commit making this change for gdbserver can be found here:
+ * https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=
+ * b816042e88583f280ad186ff124ab84d31fb592b
+ */
+#define MAX_PACKET_LENGTH 131104

 /*
  * Shared structures and definitions