From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-yw1-f172.google.com (mail-yw1-f172.google.com [209.85.128.172]) (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 2D8B03803E8 for ; Mon, 27 Jul 2026 22:15:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785190520; cv=none; b=IxTu+/csiAWigUwIEriLxIuvhIw8oNRp/urRcJ+A7lOcVKRAUkT7S0A4MdB37rSMCtRB5pCt1W2JmOexsct8BIlbSzr3KbrnN1iWScSgVn7hnY/8vKhfB1I5rZdOZnzd+Ju+I4Ld1lnqc6lQnw60mbuiYpMtNKIyB/5chwHA2vc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785190520; c=relaxed/simple; bh=ACXfZ0kFuMcC/hep7QqlbpI7AJtoOLAS6Nawo//o1K4=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=no+sp7Sz33Nd9Q3NYUd7e0L/rmTNm/5vIYtr15P39z11YWu8sYYisgYUIwOQ04XqlKa/QPcXzDEEATgNQzurysfCQzaoIJxme2/uBequ3gr645ZJkxOx6CYsk6ecPANH1YYhVluFCxIFeRWHbuAiBEC5rK3oPTe3y2m0itN5NVg= 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=IGJ37XnI; arc=none smtp.client-ip=209.85.128.172 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="IGJ37XnI" Received: by mail-yw1-f172.google.com with SMTP id 00721157ae682-80cebd41372so36940647b3.3 for ; Mon, 27 Jul 2026 15:15:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785190518; x=1785795318; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=Lm46iYzDB7JpIVB3BJYv0VC8QQXIbDJkUC0QeOWvv5s=; b=IGJ37XnIwdzQBpZpMNxB6kOsx9DS/gg95kg2L7f7HD2tewgiBRDuy6RbbW5WvvBh7S 0Ggh1rfBGHqnI3LswL/25hgYwDYvTWP1ng3M6SLPcBhJ7nyOSZmBKy8HSb7Sd3gJmO1z 6rZ1ILXwUaTpG4jerKcdNhBXaelldA/7tMptkEIJBKZAeCXkPEdtL0n8DehD3FuEFq5u h7EZ6IOlSdtsV6OgECStHzvhwIGytAMosRnfvN0CJXfXBlqlSzL0LxdsY5biRgTrWwMV w+cPjzwxgSwXsFmMT9J6w+smH4Vd1EQyrT5GBEdApOjMVsowI8h2IDPn9Kard/DLa9sH mHZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785190518; x=1785795318; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Lm46iYzDB7JpIVB3BJYv0VC8QQXIbDJkUC0QeOWvv5s=; b=V2j6z7vBNeQOIEQ5Sqn7SwPEiTJIT6oXTHp2BwzWPW0PyVnAUMdXcLH1vtzO17R8xC PJ8Rd59r+g+hH2MHywY2L/bxmdhhpHQZepo6Vxj8VBREmt764TaFtME7BevYXuufn0QM x4K0AFF6ZBDmHW75waALElsQuVNGbobLezYSBLOKHPWTvF6lYHvjwCeu065rYVPAz8jp lARG4fxIfEnEzTjKj8K4RnrHWheUKFfhM5O4CKH25YCzPy7uiKgY0S0gyQbkxpT6vK2D oMH927p8m6g0u+rVi13lOhqtboENqUz5LBMEFZXOF6xLax9L1nxQ70ndzWmkdepuU4Pt bN8Q== X-Forwarded-Encrypted: i=1; AHgh+RrXTRF58DJVBGWxhAkMxoF6SXTCoVFmk8t3UY7l+bu6p4/Z/P6W7o/W/5/EIUw7c93d470SwzB+Ivuejjw=@vger.kernel.org X-Gm-Message-State: AOJu0Yw7/UJ0FJlCtKIgqZr9fhfc7VLtlIZ28aQZttHsjNOYUSfkdu3n IOtOnKhDnsN3JVZfUBRvU0i5mPS54XheAtATqTpfN4HVXZxy/YG8QSG9 X-Gm-Gg: AR+sD10tD/6+yFaGyGldg3HTB4LiaTRBtQA/oWQ+Wa02hiWOY5s4CKPVijX9+FMxI7a 5XO/AvQQORHSET/IVq6amHlC+04Zy70A6eMbfAfbe8gP9O27IToUYNNl8LVyXKCbjAL0pKk7Ohd z8kuFUlbTbk1lp3pFYkUDEQaTeEntLml4sloF8bP0FsJ4BNrsSlQG8DHtQ4SKyLstFl8Dw5WrVH 37h7pYkIQWj/1GNB3PQmaUBXPaAZal+R0lAdfXmJy/HyKzIQx2YQoD/ERa0W5W/3cKqeR41gLBZ D4xbh1cJeYclEnH/rC9ItgYN3Beok8Cj74DJ78Tw1l1eYREnSGDtmVbv2HU00kswpbYsT4i6q1z btLqbA7IviMhnDfcQVeb0CrsstTHUDp6/XoQ8+Xm8DvlRSGyfy/lI9VzsPNGaX7MSgak4Q7NELa yOXM/iXO3acQl4iVT0a9123TkMq9OJZk5NKJNxneFJbYlVw8To8Zce81Gc4VjJ6c5VbA== X-Received: by 2002:a05:690c:88b:b0:80b:de9c:8a2c with SMTP id 00721157ae682-81f69cd5e94mr34808717b3.8.1785190517962; Mon, 27 Jul 2026 15:15:17 -0700 (PDT) Received: from localhost.localdomain ([107.198.84.185]) by smtp.gmail.com with ESMTPSA id 00721157ae682-81f6592ec1asm37854037b3.45.2026.07.27.15.15.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Jul 2026 15:15:17 -0700 (PDT) From: Paul Sherman To: palmer@dabbelt.com, pjw@kernel.org, aou@eecs.berkeley.edu Cc: alex@ghiti.fr, hchauhan@ventanamicro.com, apatel@ventanamicro.com, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Paul Sherman Subject: [PATCH] riscv: sbi: fix errno mapping for SBI_ERR_ALREADY_* error codes Date: Mon, 27 Jul 2026 15:15:08 -0700 Message-ID: <20260727221508.5179-1-shermanpauldylan@gmail.com> X-Mailer: git-send-email 2.53.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit SBI error codes SBI_ERR_ALREADY_AVAILABLE (-6), SBI_ERR_ALREADY_STARTED (-7), and SBI_ERR_ALREADY_STOPPED (-8) have no explicit case in sbi_err_map_linux_errno() and fall through to the default branch, returning -ENOTSUPP (-524). Map these three codes to -EALREADY, which correctly reflects their semantics: the requested operation was not performed because the target is already in the desired state. Also add a documentation comment enumerating all SBI error codes and their Linux errno mappings, making the translation table self-documenting and making any future omissions immediately visible. Tested-on: Milk-V Pioneer (SG2042, 64-hart RISC-V, OpenSBI v1.5) Cc: Himanshu Chauhan Cc: Anup Patel Signed-off-by: Paul Sherman --- arch/riscv/include/asm/sbi.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h index 5725e0ca4dda3..b067eb08bcc34 100644 --- a/arch/riscv/include/asm/sbi.h +++ b/arch/riscv/include/asm/sbi.h @@ -651,6 +651,26 @@ static inline unsigned long sbi_mk_version(unsigned long major, | (minor & SBI_SPEC_VERSION_MINOR_MASK); } +/* + * SBI error code to Linux errno mapping. + * + * SBI error codes (from the SBI specification): + * 0 SUCCESS + * -1 FAILURE : -ENOTSUPP + * -2 NOT_SUPPORTED : -ENOTSUPP + * -3 INVALID_PARAM : -EINVAL + * -4 DENIED : -EPERM + * -5 INVALID_ADDRESS : -EFAULT + * -6 ALREADY_AVAILABLE : -EALREADY + * -7 ALREADY_STARTED : -EALREADY + * -8 ALREADY_STOPPED : -EALREADY + * -9 NO_SHMEM : -ENOMEM + * -10 INVALID_STATE : -EINVAL + * -11 BAD_RANGE : -ERANGE + * -12 TIMEOUT : -ETIMEDOUT + * -13 IO : -EIO + * -14 DENIED_LOCKED : -EPERM + */ static inline int sbi_err_map_linux_errno(int err) { switch (err) { @@ -672,6 +692,10 @@ static inline int sbi_err_map_linux_errno(int err) return -ETIMEDOUT; case SBI_ERR_IO: return -EIO; + case SBI_ERR_ALREADY_AVAILABLE: + case SBI_ERR_ALREADY_STARTED: + case SBI_ERR_ALREADY_STOPPED: + return -EALREADY; case SBI_ERR_NOT_SUPPORTED: case SBI_ERR_FAILURE: default: -- 2.53.0