[kvm-unit-tests PATCH 2/3] riscv: sbi: Export sbiret_report/check

Clément Léger cleger at rivosinc.com
Mon Feb 3 00:58:20 PST 2025



On 29/01/2025 18:01, Andrew Jones wrote:
> As more SBI tests are written not all will be in riscv/sbi.c. Export
> sbiret reporting functions to be used in other SBI test files.
> 
> Signed-off-by: Andrew Jones <andrew.jones at linux.dev>
> ---
>  riscv/sbi-tests.h | 21 +++++++++++++++++++++
>  riscv/sbi.c       | 17 -----------------
>  2 files changed, 21 insertions(+), 17 deletions(-)
> 
> diff --git a/riscv/sbi-tests.h b/riscv/sbi-tests.h
> index ce129968fe99..2bdc9440d82d 100644
> --- a/riscv/sbi-tests.h
> +++ b/riscv/sbi-tests.h
> @@ -33,4 +33,25 @@
>  #define SBI_SUSP_TEST_HARTID	(1 << 2)
>  #define SBI_SUSP_TEST_MASK	7
>  
> +#ifndef __ASSEMBLY__
> +#include <asm/sbi.h>
> +
> +#define sbiret_report(ret, expected_error, expected_value, fmt, ...) ({						\
> +	long ex_err = expected_error;										\
> +	long ex_val = expected_value;										\
> +	bool ch_err = (ret)->error == ex_err;									\
> +	bool ch_val = (ret)->value == ex_val;									\
> +	bool pass = report(ch_err && ch_val, fmt, ##__VA_ARGS__);						\
> +														\
> +	if (!pass)												\
> +		report_info(fmt ": expected (error: %ld, value: %ld), received: (error: %ld, value %ld)",	\
> +			    ##__VA_ARGS__, ex_err, ex_val, (ret)->error, (ret)->value);				\
> +														\
> +	pass;													\
> +})
> +
> +#define sbiret_check(ret, expected_error, expected_value) \
> +	sbiret_report(ret, expected_error, expected_value, "check sbi.error and sbi.value")
> +
> +#endif /* __ASSEMBLY__ */
>  #endif /* _RISCV_SBI_TESTS_H_ */
> diff --git a/riscv/sbi.c b/riscv/sbi.c
> index 9f591f8ff76a..3eca8c7e35ed 100644
> --- a/riscv/sbi.c
> +++ b/riscv/sbi.c
> @@ -156,23 +156,6 @@ static bool get_invalid_addr(phys_addr_t *paddr, bool allow_default)
>  	return false;
>  }
>  
> -#define sbiret_report(ret, expected_error, expected_value, fmt, ...) ({						\
> -	long ex_err = expected_error;										\
> -	long ex_val = expected_value;										\
> -	bool ch_err = (ret)->error == ex_err;									\
> -	bool ch_val = (ret)->value == ex_val;									\
> -	bool pass = report(ch_err && ch_val, fmt, ##__VA_ARGS__);						\
> -														\
> -	if (!pass)												\
> -		report_info(fmt ": expected (error: %ld, value: %ld), received: (error: %ld, value %ld)",	\
> -			    ##__VA_ARGS__, ex_err, ex_val, (ret)->error, (ret)->value);				\
> -														\
> -	pass;													\
> -})
> -
> -#define sbiret_check(ret, expected_error, expected_value) \
> -	sbiret_report(ret, expected_error, expected_value, "check sbi.error and sbi.value")
> -
>  static void check_base(void)
>  {
>  	struct sbiret ret;

Reviewed-by: Clément Léger <cleger at rivosinc.com>

Thanks,

Clément



More information about the kvm-riscv mailing list