From: Paul Sherman <shermanpauldylan@gmail.com>
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 <shermanpauldylan@gmail.com>
Subject: [PATCH] riscv: sbi: fix errno mapping for SBI_ERR_ALREADY_* error codes
Date: Mon, 27 Jul 2026 15:15:08 -0700 [thread overview]
Message-ID: <20260727221508.5179-1-shermanpauldylan@gmail.com> (raw)
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 <hchauhan@ventanamicro.com>
Cc: Anup Patel <apatel@ventanamicro.com>
Signed-off-by: Paul Sherman <shermanpauldylan@gmail.com>
---
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
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
WARNING: multiple messages have this Message-ID (diff)
From: Paul Sherman <shermanpauldylan@gmail.com>
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 <shermanpauldylan@gmail.com>
Subject: [PATCH] riscv: sbi: fix errno mapping for SBI_ERR_ALREADY_* error codes
Date: Mon, 27 Jul 2026 15:15:08 -0700 [thread overview]
Message-ID: <20260727221508.5179-1-shermanpauldylan@gmail.com> (raw)
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 <hchauhan@ventanamicro.com>
Cc: Anup Patel <apatel@ventanamicro.com>
Signed-off-by: Paul Sherman <shermanpauldylan@gmail.com>
---
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
next reply other threads:[~2026-07-27 22:15 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-27 22:15 Paul Sherman [this message]
2026-07-27 22:15 ` [PATCH] riscv: sbi: fix errno mapping for SBI_ERR_ALREADY_* error codes Paul Sherman
2026-07-29 18:43 ` Paul Walmsley
2026-07-29 18:43 ` Paul Walmsley
2026-07-30 0:01 ` Paul Sherman
2026-07-30 0:01 ` Paul Sherman
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=20260727221508.5179-1-shermanpauldylan@gmail.com \
--to=shermanpauldylan@gmail.com \
--cc=alex@ghiti.fr \
--cc=aou@eecs.berkeley.edu \
--cc=apatel@ventanamicro.com \
--cc=hchauhan@ventanamicro.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=palmer@dabbelt.com \
--cc=pjw@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.