lib: sbi: Don't check SBI error range for legacy console getchar
authorAnup Patel <apatel@ventanamicro.com>
Mon, 17 Apr 2023 04:18:13 +0000 (09:48 +0530)
committerAnup Patel <anup@brainfault.org>
Mon, 17 Apr 2023 04:18:13 +0000 (09:48 +0530)
The legacy console getchar SBI call returns character value in
the sbiret.error field so the "SBI_SUCCESS < ret" check in
sbi_ecall_handler() results in unwanted error prints for the
legacy console getchar SBI call. Let's suppress these unwanted
error prints.

Fixes: 67b2a408924b ("lib: sbi: sbi_ecall: Check the range of
SBI error")
Signed-off-by: Anup Patel <apatel@ventanamicro.com>
lib/sbi/sbi_ecall.c

index d0f016653689448be2e610a6819298ac7a7bf89f..76a1ae9ab73372957bc8ebb0905527767bd51b21 100644 (file)
@@ -120,7 +120,9 @@ int sbi_ecall_handler(struct sbi_trap_regs *regs)
                trap.epc = regs->mepc;
                sbi_trap_redirect(regs, &trap);
        } else {
-               if (ret < SBI_LAST_ERR || SBI_SUCCESS < ret) {
+               if (ret < SBI_LAST_ERR ||
+                   (extension_id != SBI_EXT_0_1_CONSOLE_GETCHAR &&
+                    SBI_SUCCESS < ret)) {
                        sbi_printf("%s: Invalid error %d for ext=0x%lx "
                                   "func=0x%lx\n", __func__, ret,
                                   extension_id, func_id);