RISC-V: Use the minor version mask while computing sbi version
authorAtish Patra <atishp@rivosinc.com>
Sat, 20 Apr 2024 15:17:23 +0000 (08:17 -0700)
committerAnup Patel <anup@brainfault.org>
Mon, 22 Apr 2024 05:43:54 +0000 (11:13 +0530)
As per the SBI specification, minor version is encoded in the
lower 24 bits only. Make sure that the SBI version is computed
with the appropriate mask.

Currently, there is no minor version in use. Thus, it doesn't
change anything functionality but it is good to be compliant with
the specification.

Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Acked-by: Palmer Dabbelt <palmer@rivosinc.com>
Signed-off-by: Atish Patra <atishp@rivosinc.com>
Link: https://lore.kernel.org/r/20240420151741.962500-8-atishp@rivosinc.com
Signed-off-by: Anup Patel <anup@brainfault.org>
arch/riscv/include/asm/sbi.h

index f31650b1089975e454167e551d7e0cc574104912..112a0a0d9f46e98dac4cf02d849defddad5e21e8 100644 (file)
@@ -367,8 +367,8 @@ static inline unsigned long sbi_minor_version(void)
 static inline unsigned long sbi_mk_version(unsigned long major,
                                            unsigned long minor)
 {
-       return ((major & SBI_SPEC_VERSION_MAJOR_MASK) <<
-               SBI_SPEC_VERSION_MAJOR_SHIFT) | minor;
+       return ((major & SBI_SPEC_VERSION_MAJOR_MASK) << SBI_SPEC_VERSION_MAJOR_SHIFT)
+               | (minor & SBI_SPEC_VERSION_MINOR_MASK);
 }
 
 int sbi_err_map_linux_errno(int err);