[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2] target/riscv/kvm/kvm-cpu.c: kvm_riscv_handle_sbi() fail w
From: |
Alistair Francis |
Subject: |
Re: [PATCH v2] target/riscv/kvm/kvm-cpu.c: kvm_riscv_handle_sbi() fail with vendor-specific SBI |
Date: |
Tue, 26 Mar 2024 14:54:55 +1000 |
On Mon, Mar 25, 2024 at 11:46 PM Alexei Filippov
<alexei.filippov@syntacore.com> wrote:
>
> kvm_riscv_handle_sbi() may return not supported return code to not trigger
> qemu abort with vendor-specific sbi.
>
> Added SBI related return code's defines.
>
> Signed-off-by: Alexei Filippov <alexei.filippov@syntacore.com>
> Fixes: 4eb47125 ("target/riscv: Handle KVM_EXIT_RISCV_SBI exit")
> Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Alistair
> ---
>
> Changes since v1:
> -Add Fixes and Revied-by lines.
> target/riscv/kvm/kvm-cpu.c | 5 +++--
> target/riscv/sbi_ecall_interface.h | 11 +++++++++++
> 2 files changed, 14 insertions(+), 2 deletions(-)
>
> diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c
> index 6a6c6cae80..a4f84ad950 100644
> --- a/target/riscv/kvm/kvm-cpu.c
> +++ b/target/riscv/kvm/kvm-cpu.c
> @@ -1404,7 +1404,7 @@ static int kvm_riscv_handle_sbi(CPUState *cs, struct
> kvm_run *run)
> if (ret == sizeof(ch)) {
> run->riscv_sbi.ret[0] = ch;
> } else {
> - run->riscv_sbi.ret[0] = -1;
> + run->riscv_sbi.ret[0] = SBI_ERR_FAILURE;
> }
> ret = 0;
> break;
> @@ -1412,7 +1412,8 @@ static int kvm_riscv_handle_sbi(CPUState *cs, struct
> kvm_run *run)
> qemu_log_mask(LOG_UNIMP,
> "%s: un-handled SBI EXIT, specific reasons is %lu\n",
> __func__, run->riscv_sbi.extension_id);
> - ret = -1;
> + run->riscv_sbi.ret[0] = SBI_ERR_NOT_SUPPORTED;
> + ret = 0;
> break;
> }
> return ret;
> diff --git a/target/riscv/sbi_ecall_interface.h
> b/target/riscv/sbi_ecall_interface.h
> index 43899d08f6..0279e92a36 100644
> --- a/target/riscv/sbi_ecall_interface.h
> +++ b/target/riscv/sbi_ecall_interface.h
> @@ -69,4 +69,15 @@
> #define SBI_EXT_VENDOR_END 0x09FFFFFF
> /* clang-format on */
>
> +/* SBI return error codes */
> +#define SBI_SUCCESS 0
> +#define SBI_ERR_FAILURE -1
> +#define SBI_ERR_NOT_SUPPORTED -2
> +#define SBI_ERR_INVALID_PARAM -3
> +#define SBI_ERR_DENIED -4
> +#define SBI_ERR_INVALID_ADDRESS -5
> +#define SBI_ERR_ALREADY_AVAILABLE -6
> +#define SBI_ERR_ALREADY_STARTED -7
> +#define SBI_ERR_ALREADY_STOPPED -8
> +
> #endif
> --
> 2.34.1
>
>