From nobody Tue Dec 16 14:50:03 2025 Received: from mail-lf1-f51.google.com (mail-lf1-f51.google.com [209.85.167.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F0BA02DAFBA for ; Sun, 14 Dec 2025 16:35:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765730150; cv=none; b=tQkzMbc1bwS8Q3Ud21lfxItHyPZYc9/LUFUCQrd85M5thxlzPics647OJltxmYJ1YexH164u+vEf+A4uAqa4PcKrkGOE0exbgG09vi/8MrO3Mgoh0a9jh8ZmUuZaABhpKYBUsLINzl3DSbcxuq3uePrZYOu5h18BI1Ct5clxQIY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765730150; c=relaxed/simple; bh=TBdUIziZzYn57JBzVZKpq91vrwab2KkoD2+h2KvN5+A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cPkI2k+/nQPuZy8pN2Q+w+r9/zEA1zA9SYdfO1uQJ03kXCW/4d/wxl7eJ2MiEEsWaU5ZLOTpSbPYzYKbZCfyqENOHfeEHasMxfG8+ve/51CmZWKMN+SnA6fwjsFlMsate/+LEAnvPyT06qC4Ims/lkOxdUVL1adEbBKQLHtBpsk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=IBn5j95L; arc=none smtp.client-ip=209.85.167.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IBn5j95L" Received: by mail-lf1-f51.google.com with SMTP id 2adb3069b0e04-597d712c0a7so3265056e87.0 for ; Sun, 14 Dec 2025 08:35:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765730147; x=1766334947; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=iYG0UzrVNvu+sJ+OoGaiC09VrdPSEEepGbXjW8i1wGU=; b=IBn5j95LsDo+QFYQJN3jy4CYt0d072oCw3Ofzv45OVR7OD7kEvp8O4ChEyul6UnXyx UDwHJPfGdoPBJjj5jYNdzKzKNLcaww++Otb0e9TZGRWQevlRilYVFYlqFCxpnpLZWJov IXv5AJT3PMQPMvo0//8uXP+/vADGSgilMLw27bMeS8aInByNqJ/DhzkLMcCRwDuCRj7g JomowR8T/rpAIcZpzqzcFiSHP7jJnthE2YsiCvrxKY0PV8kUY8TldGEVpMIfGHyMCnZl ggqlYzpBc7taJFAtdVJrK/VD0zp1o3GF5USobqyvv95MxmOtOd0s6NEHBJqU4U1K7Bke ymqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765730147; x=1766334947; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=iYG0UzrVNvu+sJ+OoGaiC09VrdPSEEepGbXjW8i1wGU=; b=KeQaJzNNE0hmlsMpKILyhA1rvGCNnxP1WWDqI5L3lwf04Qdw3ZUKHlRYzXFqlt7HVF 1cuyl0lAQzXXAl0GJBVqSPc/Fd/L7CBP0QoRYDIbxBseaIXpn8joRi+ZKahdLT41wzTs Swmq+9df+zzca/JvUTX7Mrt7VlZIcrS5OKbW4BSK1DhO+1vuRmpBSC88IbxzXvIgbPTQ ONrgxzj5BQXLmIWgmznTCfZFEkZpY82FNumbtOLYN6LiaQGSOnaQtRKx1/TWw0H3seG/ V52gR74HH3GRMLD89Z7elVnTu5mW3Sy9w2k1jOAkWwfmANk+WPwAprqueWEPRo6TAHdr i+gQ== X-Forwarded-Encrypted: i=1; AJvYcCU+Do+pT0S29572Y7p4o71UQfsRimKe6/giMqflRHifHRXvGqoutZRCQz/KVu7zGXFc857TkmjyLICIhnM=@vger.kernel.org X-Gm-Message-State: AOJu0YzeDs/FKw3hCFSXzSg2SZx1zw6t8T3hIdG/nLh+ftLmC5e8GtNx 9VfABFFkbnPCwZr6N46aH7O2VqntmH61zdHGUaX2XfeqtcEhUiKo5jal X-Gm-Gg: AY/fxX7P4DbSvxSi2iN7yZXjIHXwXvk4UOeZggRD9DigO8oiQUC/O/Diba+2GhqCEuk VosHSCSMpy3no4v8qIENk+gEi27k+MsMkgGWQ/gSUD+7aU1MWrfxVx0wfqxBG8MrpcEh48HxBM/ OPKY6Npuh7XPH3czKnuMBK8smsgZ3WBxMe0dHmBzEwOdeQZM7Rmv0/85XNPhbzkLOjXMXB0NMpj Ljz/3UkZ1HZNN/tifuIwW/DbmOga0pJqr2zUTMMUSH2lwP5O8+KG7Ui8ubLMFgue3RuaYKVpBPp 4vgw1SUw3ojvAIe05Mv6uGi2KXml80MqVRwycAL+h2ZbTLuv5MPHHGorG8LKcdMZH4JVqSvV37t mT5hn63B9dMpEB7kK6+0NPFdPvLPcmZI5b1Xr/wgGmQqJu34a+I+UTO/UKffbM/JK6xIkb0aOQp 3n5g== X-Google-Smtp-Source: AGHT+IFa8YrKVxWZ8N5CZhPJ/l8DS6QHhWtXFyJ2Kk/ViapXJFN4nzGXTae+4TaN+8nHnP2k0U2DqA== X-Received: by 2002:a05:6512:3d23:b0:577:318a:a1c6 with SMTP id 2adb3069b0e04-598faa448aemr2580474e87.23.1765730146784; Sun, 14 Dec 2025 08:35:46 -0800 (PST) Received: from curiosity ([5.188.167.4]) by smtp.googlemail.com with ESMTPSA id 2adb3069b0e04-598f7717b79sm3789618e87.60.2025.12.14.08.35.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Dec 2025 08:35:46 -0800 (PST) From: Sergey Matyukevich To: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: Paul Walmsley , Palmer Dabbelt , Alexandre Ghiti , Oleg Nesterov , Shuah Khan , Thomas Huth , Charlie Jenkins , Andy Chiu , Samuel Holland , Joel Granados , Conor Dooley , Yong-Xuan Wang , Heiko Stuebner , Guo Ren , Sergey Matyukevich , Ilya Mamay Subject: [PATCH v5 1/9] riscv: ptrace: return ENODATA for inactive vector extension Date: Sun, 14 Dec 2025 19:35:05 +0300 Message-ID: <20251214163537.1054292-2-geomatsi@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251214163537.1054292-1-geomatsi@gmail.com> References: <20251214163537.1054292-1-geomatsi@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ilya Mamay Currently, ptrace returns EINVAL when the vector extension is supported but not yet activated for the traced process. This error code is not always appropriate since the ptrace arguments may be valid. Debug tools like gdbserver expect ENODATA when the requested register set is not active, e.g. see [1]. This expectation seems to be more appropriate, so modify the vector ptrace implementation to return: - EINVAL when V extension is not supported - ENODATA when V extension is supported but not active [1] https://github.com/bminor/binutils-gdb/blob/637f25e88675fa47e47f9cc5e2c= f37384836b8a2/gdbserver/linux-low.cc#L5020 Signed-off-by: Ilya Mamay Signed-off-by: Sergey Matyukevich --- arch/riscv/kernel/ptrace.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/arch/riscv/kernel/ptrace.c b/arch/riscv/kernel/ptrace.c index e6272d74572f..9d203fb84f5e 100644 --- a/arch/riscv/kernel/ptrace.c +++ b/arch/riscv/kernel/ptrace.c @@ -95,9 +95,12 @@ static int riscv_vr_get(struct task_struct *target, struct __riscv_v_ext_state *vstate =3D &target->thread.vstate; struct __riscv_v_regset_state ptrace_vstate; =20 - if (!riscv_v_vstate_query(task_pt_regs(target))) + if (!(has_vector() || has_xtheadvector())) return -EINVAL; =20 + if (!riscv_v_vstate_query(task_pt_regs(target))) + return -ENODATA; + /* * Ensure the vector registers have been saved to the memory before * copying them to membuf. @@ -130,9 +133,12 @@ static int riscv_vr_set(struct task_struct *target, struct __riscv_v_ext_state *vstate =3D &target->thread.vstate; struct __riscv_v_regset_state ptrace_vstate; =20 - if (!riscv_v_vstate_query(task_pt_regs(target))) + if (!(has_vector() || has_xtheadvector())) return -EINVAL; =20 + if (!riscv_v_vstate_query(task_pt_regs(target))) + return -ENODATA; + /* Copy rest of the vstate except datap */ ret =3D user_regset_copyin(&pos, &count, &kbuf, &ubuf, &ptrace_vstate, 0, sizeof(struct __riscv_v_regset_state)); --=20 2.52.0