lib: sbi: check A2 register in ecall_dbcn_handler.
authorGianluca Guida <gianluca@rivosinc.com>
Thu, 22 Jun 2023 17:38:59 +0000 (18:38 +0100)
committerAnup Patel <anup@brainfault.org>
Fri, 23 Jun 2023 03:16:07 +0000 (08:46 +0530)
Do not ignore register A2 (high bits of physical address) in the dbcn
handler (RV64).

Signed-off-by: Gianluca Guida <gianluca@rivosinc.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
lib/sbi/sbi_ecall_dbcn.c

index e0b892c..ecec027 100644 (file)
@@ -34,11 +34,14 @@ static int sbi_ecall_dbcn_handler(unsigned long extid, unsigned long funcid,
                 * Based on above, we simply fail if the upper 32bits of
                 * the physical address (i.e. a2 register) is non-zero on
                 * RV32.
+                 *
+                 * Analogously, we fail if the upper 64bit of the
+                 * physical address (i.e. a2 register) is non-zero on
+                 * RV64.
                 */
-#if __riscv_xlen == 32
                if (regs->a2)
                        return SBI_ERR_FAILED;
-#endif
+
                if (!sbi_domain_check_addr_range(sbi_domain_thishart_ptr(),
                                        regs->a1, regs->a0, smode,
                                        SBI_DOMAIN_READ|SBI_DOMAIN_WRITE))