From: Joey Gouly <joey.gouly@xxxxxxx> Add basic test for checking the RSI version command. Signed-off-by: Joey Gouly <joey.gouly@xxxxxxx> Signed-off-by: Suzuki K Poulose <suzuki.poulose@xxxxxxx> --- arm/Makefile.arm64 | 1 + arm/realm-rsi.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++ arm/unittests.cfg | 7 +++++++ 3 files changed, 59 insertions(+) create mode 100644 arm/realm-rsi.c diff --git a/arm/Makefile.arm64 b/arm/Makefile.arm64 index bd167db1..90d95e79 100644 --- a/arm/Makefile.arm64 +++ b/arm/Makefile.arm64 @@ -49,6 +49,7 @@ tests = $(TEST_DIR)/timer.$(exe) tests += $(TEST_DIR)/micro-bench.$(exe) tests += $(TEST_DIR)/cache.$(exe) tests += $(TEST_DIR)/debug.$(exe) +tests += $(TEST_DIR)/realm-rsi.$(exe) include $(SRCDIR)/$(TEST_DIR)/Makefile.common diff --git a/arm/realm-rsi.c b/arm/realm-rsi.c new file mode 100644 index 00000000..6c228e42 --- /dev/null +++ b/arm/realm-rsi.c @@ -0,0 +1,51 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2022 Arm Limited. + * All rights reserved. + */ + +#include <libcflat.h> +#include <asm/io.h> +#include <asm/page.h> +#include <asm/processor.h> +#include <asm/psci.h> +#include <alloc_page.h> +#include <asm/rsi.h> +#include <asm/pgtable.h> +#include <asm/processor.h> + +static void rsi_test_version(void) +{ + struct smccc_result res; + int ret, version; + + report_prefix_push("version"); + + ret = __rsi_get_version(RSI_ABI_VERSION, &res); + if (ret < 0) { + report(false, "SMC_RSI_ABI_VERSION failed (%d)", ret); + return; + } + + version = res.r1; + report(res.r0 == RSI_SUCCESS, "RSI ABI version %u.%u (expected: %u.%u)", + RSI_ABI_VERSION_GET_MAJOR(version), + RSI_ABI_VERSION_GET_MINOR(version), + RSI_ABI_VERSION_GET_MAJOR(RSI_ABI_VERSION), + RSI_ABI_VERSION_GET_MINOR(RSI_ABI_VERSION)); + report_prefix_pop(); +} + +int main(int argc, char **argv) +{ + report_prefix_push("rsi"); + + if (!is_realm()) { + report_skip("Not a realm, skipping tests"); + goto exit; + } + + rsi_test_version(); +exit: + return report_summary(); +} diff --git a/arm/unittests.cfg b/arm/unittests.cfg index fe601cbb..a46c9ec7 100644 --- a/arm/unittests.cfg +++ b/arm/unittests.cfg @@ -281,3 +281,10 @@ file = debug.flat arch = arm64 extra_params = -append 'ss-migration' groups = debug migration + +# Realm RSI ABI test +[realm-rsi] +file = realm-rsi.flat +groups = nodefault realms +accel = kvm +arch = arm64 -- 2.34.1