Message ID | 20250317170625.1142870-3-cleger@rivosinc.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | riscv: add SBI FWFT misaligned exception delegation support | expand |
Context | Check | Description |
---|---|---|
bjorn/pre-ci_am | success | Success |
bjorn/build-rv32-defconfig | success | build-rv32-defconfig |
bjorn/build-rv64-clang-allmodconfig | success | build-rv64-clang-allmodconfig |
bjorn/build-rv64-gcc-allmodconfig | success | build-rv64-gcc-allmodconfig |
bjorn/build-rv64-nommu-k210-defconfig | success | build-rv64-nommu-k210-defconfig |
bjorn/build-rv64-nommu-k210-virt | success | build-rv64-nommu-k210-virt |
bjorn/checkpatch | success | checkpatch |
bjorn/dtb-warn-rv64 | success | dtb-warn-rv64 |
bjorn/header-inline | success | header-inline |
bjorn/kdoc | success | kdoc |
bjorn/module-param | success | module-param |
bjorn/verify-fixes | success | verify-fixes |
bjorn/verify-signedoff | success | verify-signedoff |
On Mon, Mar 17, 2025 at 06:06:08PM +0100, Clément Léger wrote: > A few new errors have been added with SBI V3.0, maps them as close as > possible to errno values. > > Signed-off-by: Clément Léger <cleger@rivosinc.com> > --- > arch/riscv/include/asm/sbi.h | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h > index bb077d0c912f..d11d22717b49 100644 > --- a/arch/riscv/include/asm/sbi.h > +++ b/arch/riscv/include/asm/sbi.h > @@ -536,11 +536,20 @@ static inline int sbi_err_map_linux_errno(int err) > case SBI_SUCCESS: > return 0; > case SBI_ERR_DENIED: > + case SBI_ERR_DENIED_LOCKED: > return -EPERM; > case SBI_ERR_INVALID_PARAM: > + case SBI_ERR_INVALID_STATE: > + case SBI_ERR_BAD_RANGE: > return -EINVAL; > case SBI_ERR_INVALID_ADDRESS: > return -EFAULT; > + case SBI_ERR_NO_SHMEM: > + return -ENOMEM; > + case SBI_ERR_TIMEOUT: > + return -ETIME; > + case SBI_ERR_IO: > + return -EIO; > case SBI_ERR_NOT_SUPPORTED: > case SBI_ERR_FAILURE: > default: > -- > 2.47.2 > I'm not a huge fan sbi_err_map_linux_errno() since the mappings seem a bit arbitrary, but if we're going to do it, then these look pretty good to me. Only other thought I had was E2BIG for bad-range, but nah... Reviewed-by: Andrew Jones <ajones@ventanamicro.com> Thanks, drew
On 22/03/2025 13:06, Andrew Jones wrote: > On Mon, Mar 17, 2025 at 06:06:08PM +0100, Clément Léger wrote: >> A few new errors have been added with SBI V3.0, maps them as close as >> possible to errno values. >> >> Signed-off-by: Clément Léger <cleger@rivosinc.com> >> --- >> arch/riscv/include/asm/sbi.h | 9 +++++++++ >> 1 file changed, 9 insertions(+) >> >> diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h >> index bb077d0c912f..d11d22717b49 100644 >> --- a/arch/riscv/include/asm/sbi.h >> +++ b/arch/riscv/include/asm/sbi.h >> @@ -536,11 +536,20 @@ static inline int sbi_err_map_linux_errno(int err) >> case SBI_SUCCESS: >> return 0; >> case SBI_ERR_DENIED: >> + case SBI_ERR_DENIED_LOCKED: >> return -EPERM; >> case SBI_ERR_INVALID_PARAM: >> + case SBI_ERR_INVALID_STATE: >> + case SBI_ERR_BAD_RANGE: >> return -EINVAL; >> case SBI_ERR_INVALID_ADDRESS: >> return -EFAULT; >> + case SBI_ERR_NO_SHMEM: >> + return -ENOMEM; >> + case SBI_ERR_TIMEOUT: >> + return -ETIME; >> + case SBI_ERR_IO: >> + return -EIO; >> case SBI_ERR_NOT_SUPPORTED: >> case SBI_ERR_FAILURE: >> default: >> -- >> 2.47.2 >> > > I'm not a huge fan sbi_err_map_linux_errno() since the mappings seem a bit > arbitrary, but if we're going to do it, then these look pretty good to me. > Only other thought I had was E2BIG for bad-range, but nah... Yeah I also think some mappings are a bit odd even though I skimmed through the whole errno list to find the best possible mappings. I'd be happy to find something better though. Thanks, Clément > > Reviewed-by: Andrew Jones <ajones@ventanamicro.com> > > Thanks, > drew
On Mon, Mar 24, 2025 at 09:29:33AM +0100, Clément Léger wrote: > > > On 22/03/2025 13:06, Andrew Jones wrote: > > On Mon, Mar 17, 2025 at 06:06:08PM +0100, Clément Léger wrote: > >> A few new errors have been added with SBI V3.0, maps them as close as > >> possible to errno values. > >> > >> Signed-off-by: Clément Léger <cleger@rivosinc.com> > >> --- > >> arch/riscv/include/asm/sbi.h | 9 +++++++++ > >> 1 file changed, 9 insertions(+) > >> > >> diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h > >> index bb077d0c912f..d11d22717b49 100644 > >> --- a/arch/riscv/include/asm/sbi.h > >> +++ b/arch/riscv/include/asm/sbi.h > >> @@ -536,11 +536,20 @@ static inline int sbi_err_map_linux_errno(int err) > >> case SBI_SUCCESS: > >> return 0; > >> case SBI_ERR_DENIED: > >> + case SBI_ERR_DENIED_LOCKED: > >> return -EPERM; > >> case SBI_ERR_INVALID_PARAM: > >> + case SBI_ERR_INVALID_STATE: > >> + case SBI_ERR_BAD_RANGE: > >> return -EINVAL; > >> case SBI_ERR_INVALID_ADDRESS: > >> return -EFAULT; > >> + case SBI_ERR_NO_SHMEM: > >> + return -ENOMEM; > >> + case SBI_ERR_TIMEOUT: > >> + return -ETIME; > >> + case SBI_ERR_IO: > >> + return -EIO; > >> case SBI_ERR_NOT_SUPPORTED: > >> case SBI_ERR_FAILURE: > >> default: > >> -- > >> 2.47.2 > >> > > > > I'm not a huge fan sbi_err_map_linux_errno() since the mappings seem a bit > > arbitrary, but if we're going to do it, then these look pretty good to me. > > Only other thought I had was E2BIG for bad-range, but nah... Actually, I just recalled that there is an ERANGE, which would probably be a better match for bad-range than EINVAL, but I'm not sure it matters much anyway since this function doesn't promise 1-to-1 mappings. Thanks, drew > > Yeah I also think some mappings are a bit odd even though I skimmed > through the whole errno list to find the best possible mappings. I'd be > happy to find something better though. > > Thanks, > > Clément > > > > > Reviewed-by: Andrew Jones <ajones@ventanamicro.com> > > > > Thanks, > > drew >
On 24/03/2025 09:38, Andrew Jones wrote: > On Mon, Mar 24, 2025 at 09:29:33AM +0100, Clément Léger wrote: >> >> >> On 22/03/2025 13:06, Andrew Jones wrote: >>> On Mon, Mar 17, 2025 at 06:06:08PM +0100, Clément Léger wrote: >>>> A few new errors have been added with SBI V3.0, maps them as close as >>>> possible to errno values. >>>> >>>> Signed-off-by: Clément Léger <cleger@rivosinc.com> >>>> --- >>>> arch/riscv/include/asm/sbi.h | 9 +++++++++ >>>> 1 file changed, 9 insertions(+) >>>> >>>> diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h >>>> index bb077d0c912f..d11d22717b49 100644 >>>> --- a/arch/riscv/include/asm/sbi.h >>>> +++ b/arch/riscv/include/asm/sbi.h >>>> @@ -536,11 +536,20 @@ static inline int sbi_err_map_linux_errno(int err) >>>> case SBI_SUCCESS: >>>> return 0; >>>> case SBI_ERR_DENIED: >>>> + case SBI_ERR_DENIED_LOCKED: >>>> return -EPERM; >>>> case SBI_ERR_INVALID_PARAM: >>>> + case SBI_ERR_INVALID_STATE: >>>> + case SBI_ERR_BAD_RANGE: >>>> return -EINVAL; >>>> case SBI_ERR_INVALID_ADDRESS: >>>> return -EFAULT; >>>> + case SBI_ERR_NO_SHMEM: >>>> + return -ENOMEM; >>>> + case SBI_ERR_TIMEOUT: >>>> + return -ETIME; >>>> + case SBI_ERR_IO: >>>> + return -EIO; >>>> case SBI_ERR_NOT_SUPPORTED: >>>> case SBI_ERR_FAILURE: >>>> default: >>>> -- >>>> 2.47.2 >>>> >>> >>> I'm not a huge fan sbi_err_map_linux_errno() since the mappings seem a bit >>> arbitrary, but if we're going to do it, then these look pretty good to me. >>> Only other thought I had was E2BIG for bad-range, but nah... > > Actually, I just recalled that there is an ERANGE, which would probably be > a better match for bad-range than EINVAL, but I'm not sure it matters much > anyway since this function doesn't promise 1-to-1 mappings. Yes, but ERANGE description is actually "results are too large", but at least it's name is more descriptive. Let's go with it. > > Thanks, > drew > >> >> Yeah I also think some mappings are a bit odd even though I skimmed >> through the whole errno list to find the best possible mappings. I'd be >> happy to find something better though. >> >> Thanks, >> >> Clément >> >>> >>> Reviewed-by: Andrew Jones <ajones@ventanamicro.com> >>> >>> Thanks, >>> drew >>
diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h index bb077d0c912f..d11d22717b49 100644 --- a/arch/riscv/include/asm/sbi.h +++ b/arch/riscv/include/asm/sbi.h @@ -536,11 +536,20 @@ static inline int sbi_err_map_linux_errno(int err) case SBI_SUCCESS: return 0; case SBI_ERR_DENIED: + case SBI_ERR_DENIED_LOCKED: return -EPERM; case SBI_ERR_INVALID_PARAM: + case SBI_ERR_INVALID_STATE: + case SBI_ERR_BAD_RANGE: return -EINVAL; case SBI_ERR_INVALID_ADDRESS: return -EFAULT; + case SBI_ERR_NO_SHMEM: + return -ENOMEM; + case SBI_ERR_TIMEOUT: + return -ETIME; + case SBI_ERR_IO: + return -EIO; case SBI_ERR_NOT_SUPPORTED: case SBI_ERR_FAILURE: default:
A few new errors have been added with SBI V3.0, maps them as close as possible to errno values. Signed-off-by: Clément Léger <cleger@rivosinc.com> --- arch/riscv/include/asm/sbi.h | 9 +++++++++ 1 file changed, 9 insertions(+)