[PATCH] uefirtmisc: add option to specify iterations get next high monitonic count
Ivan Hu
ivan.hu at canonical.com
Wed Jan 26 08:57:16 UTC 2022
BugLink: https://bugs.launchpad.net/fwts/+bug/1958206
Set the default of get next high monotonic count stress test to 50, and add
option to specify iterations.
ex:
$sudo fwts --uefitests --uefi-get-mn-count-multiple=5
Signed-off-by: Ivan Hu <ivan.hu at canonical.com>
---
src/uefi/uefirtmisc/uefirtmisc.c | 54 ++++++++++++++++++++++++++++++--
1 file changed, 51 insertions(+), 3 deletions(-)
diff --git a/src/uefi/uefirtmisc/uefirtmisc.c b/src/uefi/uefirtmisc/uefirtmisc.c
index f6038f5f..b3ee56ca 100644
--- a/src/uefi/uefirtmisc/uefirtmisc.c
+++ b/src/uefi/uefirtmisc/uefirtmisc.c
@@ -34,6 +34,9 @@
#define CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE 0x00020000
#define CAPSULE_FLAGS_INITIATE_RESET 0x00040000
+static uint32_t uefi_get_mn_count_multiple = 50;
+#define UEFI_GET_NEXT_HIGH_MN_COUNT_MULTIPLE_MAX (10000)
+
#define EFI_CAPSULE_GUID \
{ \
0x3B6686BD, 0x0D76, 0x4030, {0xB7, 0x0E, 0xB5, \
@@ -197,7 +200,7 @@ static int uefirtmisc_test1(fwts_framework *fw)
static int uefirtmisc_test2(fwts_framework *fw)
{
int ret;
- uint32_t multitesttime = 512;
+ uint32_t multitesttime = uefi_get_mn_count_multiple;
uint32_t i;
static const uint32_t flag[] = {
@@ -214,7 +217,9 @@ static int uefirtmisc_test2(fwts_framework *fw)
return FWTS_SKIP;
}
- fwts_log_info(fw, "Stress testing for UEFI runtime service GetNextHighMonotonicCount interface.");
+ fwts_log_info(fw, "Stress testing for UEFI runtime service "
+ "GetNextHighMonotonicCount interface %" PRIu32 " times.",
+ multitesttime);
ret = getnexthighmonotoniccount_test(fw, multitesttime);
if (ret == FWTS_OK)
fwts_passed(fw, "UEFI runtime service GetNextHighMonotonicCount"
@@ -331,7 +336,47 @@ static int uefirtmisc_test4(fwts_framework *fw)
return FWTS_OK;
}
+static int options_check(fwts_framework *fw)
+{
+ FWTS_UNUSED(fw);
+
+ if ((uefi_get_mn_count_multiple < 1) ||
+ (uefi_get_mn_count_multiple >
+ UEFI_GET_NEXT_HIGH_MN_COUNT_MULTIPLE_MAX)) {
+ fprintf(stderr, "uefi_get_mn_count_multiple is %"
+ PRIu32 ", it should be 1..%" PRIu32 "\n",
+ uefi_get_mn_count_multiple,
+ UEFI_GET_NEXT_HIGH_MN_COUNT_MULTIPLE_MAX);
+ return FWTS_ERROR;
+ }
+ return FWTS_OK;
+}
+
+static int options_handler(
+ fwts_framework *fw,
+ int argc,
+ char * const argv[],
+ int option_char,
+ int long_index)
+{
+ FWTS_UNUSED(fw);
+ FWTS_UNUSED(argc);
+ FWTS_UNUSED(argv);
+
+ if (option_char == 0) {
+ switch (long_index) {
+ case 0: /* --uefi_get_mn_count_multiple */
+ uefi_get_mn_count_multiple = strtoul(optarg, NULL, 10);
+ break;
+ }
+ }
+ return FWTS_OK;
+}
+static fwts_option options[] = {
+ { "uefi-get-mn-count-multiple", "", 1, "Run uefirtmisc getnexthighmonotoniccount test multiple times." },
+ { NULL, NULL, 0, NULL }
+};
static fwts_framework_minor_test uefirtmisc_tests[] = {
{ uefirtmisc_test1, "Test for UEFI miscellaneous runtime service interfaces." },
{ uefirtmisc_test2, "Stress test for UEFI miscellaneous runtime service interfaces." },
@@ -344,7 +389,10 @@ static fwts_framework_ops uefirtmisc_ops = {
.description = "UEFI miscellaneous runtime service interface tests.",
.init = uefirtmisc_init,
.deinit = uefirtmisc_deinit,
- .minor_tests = uefirtmisc_tests
+ .minor_tests = uefirtmisc_tests,
+ .options = options,
+ .options_handler = options_handler,
+ .options_check = options_check
};
FWTS_REGISTER("uefirtmisc", &uefirtmisc_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_UEFI | FWTS_FLAG_UNSAFE | FWTS_FLAG_ROOT_PRIV | FWTS_FLAG_XBBR)
--
2.25.1
More information about the fwts-devel
mailing list