[kvm-unit-tests PATCH v2 4/5] Use report_fail(...) instead of report(0/false, ...)

Janis Schoetterl-Glausch
2021-10-05T09:09:43Z

Whitespace is kept consistent with the rest of the file.

Signed-off-by: Janis Schoetterl-Glausch <scgl@linux.ibm.com>
---
lib/s390x/css_lib.c | 30 ++++----
x86/vmx.h | 25 ++++---
arm/psci.c | 2 +-
arm/timer.c | 2 +-
s390x/css.c | 18 ++---
s390x/spec_ex.c | 7 +-
x86/asyncpf.c | 4 +-
x86/hyperv_stimer.c | 6 +-
x86/hyperv_synic.c | 2 +-
x86/svm_tests.c | 163 ++++++++++++++++++++++----------------------
x86/vmx.c | 17 +++--
x86/vmx_tests.c | 136 ++++++++++++++++++------------------
12 files changed, 200 insertions(+), 212 deletions(-)

diff --git a/lib/s390x/css_lib.c b/lib/s390x/css_lib.c
index efc7057..80e9e07 100644
--- a/lib/s390x/css_lib.c
+++ b/lib/s390x/css_lib.c
@@ -360,9 +360,8 @@ void css_irq_io(void)
sid = lowcore_ptr->subsys_id_word;
/* Lowlevel set the SID as interrupt parameter. */
if (lowcore_ptr->io_int_param != sid) {
- report(0,
- "io_int_param: %x differs from subsys_id_word: %x",
- lowcore_ptr->io_int_param, sid);
+ report_fail("io_int_param: %x differs from subsys_id_word: %x",
+ lowcore_ptr->io_int_param, sid);
goto pop;
}
report_prefix_pop();
@@ -373,15 +372,14 @@ void css_irq_io(void)
case 1:
dump_irb(&irb);
flags = dump_scsw_flags(irb.scsw.ctrl);
- report(0,
- "I/O interrupt, but tsch returns CC 1 for subchannel %08x. SCSW flags: %s",
- sid, flags);
+ report_fail("I/O interrupt, but tsch returns CC 1 for subchannel %08x.SCSW flags: %s",
+ sid, flags);
break;
case 2:
- report(0, "tsch returns unexpected CC 2");
+ report_fail("tsch returns unexpected CC 2");
break;
case 3:
- report(0, "tsch reporting sch %08x as not operational", sid);
+ report_fail("tsch reporting sch %08x as not operational", sid);
break;
case 0:
/* Stay humble on success */
@@ -435,30 +433,30 @@ int wait_and_check_io_completion(int schid)
report_prefix_push("check I/O completion");

if (lowcore_ptr->io_int_param != schid) {
- report(0, "interrupt parameter: expected %08x got %08x",
- schid, lowcore_ptr->io_int_param);
+ report_fail("interrupt parameter: expected %08x got %08x",
+ schid, lowcore_ptr->io_int_param);
ret = -1;
goto end;
}

/* Verify that device status is valid */
if (!(irb.scsw.ctrl & SCSW_SC_PENDING)) {
- report(0, "No status pending after interrupt. Subch Ctrl: %08x",
- irb.scsw.ctrl);
+ report_fail("No status pending after interrupt. Subch Ctrl: %08x",
+ irb.scsw.ctrl);
ret = -1;
goto end;
}

if (!(irb.scsw.ctrl & (SCSW_SC_SECONDARY | SCSW_SC_PRIMARY))) {
- report(0, "Primary or secondary status missing. Subch Ctrl: %08x",
- irb.scsw.ctrl);
+ report_fail("Primary or secondary status missing. Subch Ctrl: %08x",
+ irb.scsw.ctrl);
ret = -1;
goto end;
}

if (!(irb.scsw.dev_stat & (SCSW_DEVS_DEV_END | SCSW_DEVS_SCH_END))) {
- report(0, "No device end or sch end. Dev. status: %02x",
- irb.scsw.dev_stat);
+ report_fail("No device end or sch end. Dev. status: %02x",
+ irb.scsw.dev_stat);
ret = -1;
goto end;
}
diff --git a/x86/vmx.h b/x86/vmx.h
index fd0174a..dd869c2 100644
--- a/x86/vmx.h
+++ b/x86/vmx.h
@@ -923,8 +923,8 @@ void __abort_test(void);
#define TEST_ASSERT(cond) \
do { \
if (!(cond)) { \
- report(0, "%s:%d: Assertion failed: %s", \
- __FILE__, __LINE__, #cond); \
+ report_fail("%s:%d: Assertion failed: %s", \
+ __FILE__, __LINE__, #cond); \
dump_stack(); \
__abort_test(); \
} \
@@ -934,8 +934,8 @@ do { \
#define TEST_ASSERT_MSG(cond, fmt, args...) \
do { \
if (!(cond)) { \
- report(0, "%s:%d: Assertion failed: %s\n" fmt, \
- __FILE__, __LINE__, #cond, ##args); \
+ report_fail("%s:%d: Assertion failed: %s\n" fmt, \
+ __FILE__, __LINE__, #cond, ##args); \
dump_stack(); \
__abort_test(); \
} \
@@ -951,15 +951,14 @@ do { \
char _bin_b[BINSTR_SZ]; \
binstr(_a, _bin_a); \
binstr(_b, _bin_b); \
- report(0, \
- "%s:%d: %s failed: (%s) == (%s)\n" \
- "\tLHS: %#018lx - %s - %lu\n" \
- "\tRHS: %#018lx - %s - %lu%s" fmt, \
- __FILE__, __LINE__, \
- assertion ? "Assertion" : "Expectation", a_str, b_str, \
- (unsigned long) _a, _bin_a, (unsigned long) _a, \
- (unsigned long) _b, _bin_b, (unsigned long) _b, \
- fmt[0] == '\0' ? "" : "\n", ## args); \
+ report_fail("%s:%d: %s failed: (%s) == (%s)\n" \
+ "\tLHS: %#018lx - %s - %lu\n" \
+ "\tRHS: %#018lx - %s - %lu%s" fmt, \
+ __FILE__, __LINE__, \
+ assertion ? "Assertion" : "Expectation", a_str, b_str, \
+ (unsigned long) _a, _bin_a, (unsigned long) _a, \
+ (unsigned long) _b, _bin_b, (unsigned long) _b, \
+ fmt[0] == '\0' ? "" : "\n", ## args); \
dump_stack(); \
if (assertion) \
__abort_test(); \
diff --git a/arm/psci.c b/arm/psci.c
index ffc09a2..efa0722 100644
--- a/arm/psci.c
+++ b/arm/psci.c
@@ -156,7 +156,7 @@ done:
#if 0
report_summary();
psci_invoke(PSCI_0_2_FN_SYSTEM_OFF, 0, 0, 0);
- report(false, "system-off");
+ report_fail("system-off");
return 1; /* only reaches here if system-off fails */
#else
return report_summary();
diff --git a/arm/timer.c b/arm/timer.c
index 09e3f8f..27e2e61 100644
--- a/arm/timer.c
+++ b/arm/timer.c
@@ -311,7 +311,7 @@ static void test_init(void)
if (ptimer_unsupported && !ERRATA(7b6b46311a85)) {
report_skip("Skipping ptimer tests. Set ERRATA_7b6b46311a85=y to enable.");
} else if (ptimer_unsupported) {
- report(false, "ptimer: read CNTP_CTL_EL0");
+ report_fail("ptimer: read CNTP_CTL_EL0");
report_info("ptimer: skipping remaining tests");
}

diff --git a/s390x/css.c b/s390x/css.c
index c340c53..dcb4d70 100644
--- a/s390x/css.c
+++ b/s390x/css.c
@@ -34,7 +34,7 @@ static void test_enumerate(void)
report(1, "Schid of first I/O device: 0x%08x", test_device_sid);
return;
}
- report(0, "No I/O device found");
+ report_fail("No I/O device found");
}

static void test_enable(void)
@@ -69,8 +69,8 @@ static void test_sense(void)

ret = css_enable(test_device_sid, IO_SCH_ISC);
if (ret) {
- report(0, "Could not enable the subchannel: %08x",
- test_device_sid);
+ report_fail("Could not enable the subchannel: %08x",
+ test_device_sid);
return;
}

@@ -78,19 +78,19 @@ static void test_sense(void)

senseid = alloc_io_mem(sizeof(*senseid), 0);
if (!senseid) {
- report(0, "Allocation of senseid");
+ report_fail("Allocation of senseid");
return;
}

ccw = ccw_alloc(CCW_CMD_SENSE_ID, senseid, sizeof(*senseid), CCW_F_SLI);
if (!ccw) {
- report(0, "Allocation of CCW");
+ report_fail("Allocation of CCW");
goto error_ccw;
}

ret = start_ccw1_chain(test_device_sid, ccw);
if (ret) {
- report(0, "Starting CCW chain");
+ report_fail("Starting CCW chain");
goto error;
}

@@ -107,14 +107,14 @@ static void test_sense(void)
} else if (ret != 0) {
len = sizeof(*senseid) - ret;
if (ret && len < CSS_SENSEID_COMMON_LEN) {
- report(0, "transferred a too short length: %d", ret);
+ report_fail("transferred a too short length: %d", ret);
goto error;
} else if (ret && len)
report_info("transferred a shorter length: %d", len);
}

if (senseid->reserved != 0xff) {
- report(0, "transferred garbage: 0x%02x", senseid->reserved);
+ report_fail("transferred garbage: 0x%02x", senseid->reserved);
goto error;
}

@@ -265,7 +265,7 @@ static void msch_with_wrong_fmt1_mbo(unsigned int schid, uint64_t mb)
/* Read the SCHIB for this subchannel */
cc = stsch(schid, &schib);
if (cc) {
- report(0, "stsch: sch %08x failed with cc=%d", schid, cc);
+ report_fail("stsch: sch %08x failed with cc=%d", schid, cc);
return;
}

diff --git a/s390x/spec_ex.c b/s390x/spec_ex.c
index eaf48f4..dacdfdb 100644
--- a/s390x/spec_ex.c
+++ b/s390x/spec_ex.c
@@ -129,10 +129,9 @@ static void test_spec_ex(struct args *args,
register_pgm_cleanup_func(NULL);
pgm = clear_pgm_int();
if (pgm != expected_pgm) {
- report(0,
- "Program interrupt: expected(%d) == received(%d)",
- expected_pgm,
- pgm);
+ report_fail("Program interrupt: expected(%d) == received(%d)",
+ expected_pgm,
+ pgm);
return;
}
}
diff --git a/x86/asyncpf.c b/x86/asyncpf.c
index 8239e16..180395e 100644
--- a/x86/asyncpf.c
+++ b/x86/asyncpf.c
@@ -55,7 +55,7 @@ static void pf_isr(struct ex_regs *r)

switch (reason) {
case 0:
- report(false, "unexpected #PF at %#lx", read_cr2());
+ report_fail("unexpected #PF at %#lx", read_cr2());
break;
case KVM_PV_REASON_PAGE_NOT_PRESENT:
phys = virt_to_pte_phys(phys_to_virt(read_cr3()), virt);
@@ -78,7 +78,7 @@ static void pf_isr(struct ex_regs *r)
phys = 0;
break;
default:
- report(false, "unexpected async pf reason %" PRId32, reason);
+ report_fail("unexpected async pf reason %" PRId32, reason);
break;
}
}
diff --git a/x86/hyperv_stimer.c b/x86/hyperv_stimer.c
index 75a69a1..874a393 100644
--- a/x86/hyperv_stimer.c
+++ b/x86/hyperv_stimer.c
@@ -96,7 +96,7 @@ static void process_stimer_msg(struct svcpu *svcpu,

if (msg->header.message_type != HVMSG_TIMER_EXPIRED &&
msg->header.message_type != HVMSG_NONE) {
- report(false, "invalid Hyper-V SynIC msg type");
+ report_fail("invalid Hyper-V SynIC msg type");
report_summary();
abort();
}
@@ -106,7 +106,7 @@ static void process_stimer_msg(struct svcpu *svcpu,
}

if (msg->header.payload_size < sizeof(*payload)) {
- report(false, "invalid Hyper-V SynIC msg payload size");
+ report_fail("invalid Hyper-V SynIC msg payload size");
report_summary();
abort();
}
@@ -114,7 +114,7 @@ static void process_stimer_msg(struct svcpu *svcpu,
/* Now process timer expiration message */

if (payload->timer_index >= ARRAY_SIZE(svcpu->timer)) {
- report(false, "invalid Hyper-V SynIC timer index");
+ report_fail("invalid Hyper-V SynIC timer index");
report_summary();
abort();
}
diff --git a/x86/hyperv_synic.c b/x86/hyperv_synic.c
index 25121ca..5ca593c 100644
--- a/x86/hyperv_synic.c
+++ b/x86/hyperv_synic.c
@@ -90,7 +90,7 @@ static void synic_test_prepare(void *ctx)
}
r = rdmsr(HV_X64_MSR_EOM);
if (r != 0) {
- report(false, "Hyper-V SynIC test, EOM read %#" PRIx64, r);
+ report_fail("Hyper-V SynIC test, EOM read %#" PRIx64, r);
return;
}

diff --git a/x86/svm_tests.c b/x86/svm_tests.c
index 547994d..02910db 100644
--- a/x86/svm_tests.c
+++ b/x86/svm_tests.c
@@ -90,8 +90,8 @@ static bool finished_rsm_intercept(struct svm_test *test)
switch (get_test_stage(test)) {
case 0:
if (vmcb->control.exit_code != SVM_EXIT_RSM) {
- report(false, "VMEXIT not due to rsm. Exit reason 0x%x",
- vmcb->control.exit_code);
+ report_fail("VMEXIT not due to rsm. Exit reason 0x%x",
+ vmcb->control.exit_code);
return true;
}
vmcb->control.intercept &= ~(1 << INTERCEPT_RSM);
@@ -100,8 +100,8 @@ static bool finished_rsm_intercept(struct svm_test *test)

case 1:
if (vmcb->control.exit_code != SVM_EXIT_EXCP_BASE + UD_VECTOR) {
- report(false, "VMEXIT not due to #UD. Exit reason 0x%x",
- vmcb->control.exit_code);
+ report_fail("VMEXIT not due to #UD. Exit reason 0x%x",
+ vmcb->control.exit_code);
return true;
}
vmcb->save.rip += 2;
@@ -210,7 +210,7 @@ static void test_dr_intercept(struct svm_test *test)
}

if (test->scratch != i) {
- report(false, "dr%u read intercept", i);
+ report_fail("dr%u read intercept", i);
failcnt++;
}
}
@@ -246,7 +246,7 @@ static void test_dr_intercept(struct svm_test *test)
}

if (test->scratch != i) {
- report(false, "dr%u write intercept", i);
+ report_fail("dr%u write intercept", i);
failcnt++;
}
}
@@ -346,7 +346,7 @@ static void test_msr_intercept(struct svm_test *test)

/* Check that a read intercept occurred for MSR at msr_index */
if (test->scratch != msr_index)
- report(false, "MSR 0x%lx read intercept", msr_index);
+ report_fail("MSR 0x%lx read intercept", msr_index);

/*
* Poor man approach to generate a value that
@@ -358,7 +358,7 @@ static void test_msr_intercept(struct svm_test *test)

/* Check that a write intercept occurred for MSR with msr_value */
if (test->scratch != msr_value)
- report(false, "MSR 0x%lx write intercept", msr_index);
+ report_fail("MSR 0x%lx write intercept", msr_index);
}

test->scratch = -2;
@@ -615,7 +615,7 @@ static void test_ioio(struct svm_test *test)
return;

fail:
- report(false, "stage %d", get_test_stage(test));
+ report_fail("stage %d", get_test_stage(test));
test->scratch = -1;
}

@@ -689,7 +689,7 @@ static void sel_cr0_bug_test(struct svm_test *test)
* are not in guest-mode anymore so we can't trigger an intercept.
* Trigger a tripple-fault for now.
*/
- report(false, "sel_cr0 test. Can not recover from this - exiting");
+ report_fail("sel_cr0 test. Can not recover from this - exiting");
exit(report_summary());
}

@@ -1101,8 +1101,8 @@ static bool pending_event_finished(struct svm_test *test)
switch (get_test_stage(test)) {
case 0:
if (vmcb->control.exit_code != SVM_EXIT_INTR) {
- report(false, "VMEXIT not due to pending interrupt. Exit reason 0x%x",
- vmcb->control.exit_code);
+ report_fail("VMEXIT not due to pending interrupt. Exit reason 0x%x",
+ vmcb->control.exit_code);
return true;
}

@@ -1110,7 +1110,7 @@ static bool pending_event_finished(struct svm_test *test)
vmcb->control.int_ctl &= ~V_INTR_MASKING_MASK;

if (pending_event_guest_run) {
- report(false, "Guest ran before host received IPI\n");
+ report_fail("Guest ran before host received IPI\n");
return true;
}

@@ -1119,14 +1119,14 @@ static bool pending_event_finished(struct svm_test *test)
irq_disable();

if (!pending_event_ipi_fired) {
- report(false, "Pending interrupt not dispatched after IRQ enabled\n");
+ report_fail("Pending interrupt not dispatched after IRQ enabled\n");
return true;
}
break;

case 1:
if (!pending_event_guest_run) {
- report(false, "Guest did not resume when no interrupt\n");
+ report_fail("Guest did not resume when no interrupt\n");
return true;
}
break;
@@ -1165,7 +1165,7 @@ static void pending_event_cli_test(struct svm_test *test)
{
if (pending_event_ipi_fired == true) {
set_test_stage(test, -1);
- report(false, "Interrupt preceeded guest");
+ report_fail("Interrupt preceeded guest");
vmmcall();
}

@@ -1176,7 +1176,7 @@ static void pending_event_cli_test(struct svm_test *test)

if (pending_event_ipi_fired != true) {
set_test_stage(test, -1);
- report(false, "Interrupt not triggered by guest");
+ report_fail("Interrupt not triggered by guest");
}

vmmcall();
@@ -1194,8 +1194,8 @@ static void pending_event_cli_test(struct svm_test *test)
static bool pending_event_cli_finished(struct svm_test *test)
{
if ( vmcb->control.exit_code != SVM_EXIT_VMMCALL) {
- report(false, "VM_EXIT return to host is not EXIT_VMMCALL exit reason 0x%x",
- vmcb->control.exit_code);
+ report_fail("VM_EXIT return to host is not EXIT_VMMCALL exit reason 0x%x",
+ vmcb->control.exit_code);
return true;
}

@@ -1215,7 +1215,7 @@ static bool pending_event_cli_finished(struct svm_test *test)

case 1:
if (pending_event_ipi_fired == true) {
- report(false, "Interrupt triggered by guest");
+ report_fail("Interrupt triggered by guest");
return true;
}

@@ -1224,7 +1224,7 @@ static bool pending_event_cli_finished(struct svm_test *test)
irq_disable();

if (pending_event_ipi_fired != true) {
- report(false, "Interrupt not triggered by host");
+ report_fail("Interrupt not triggered by host");
return true;
}

@@ -1339,8 +1339,8 @@ static bool interrupt_finished(struct svm_test *test)
case 0:
case 2:
if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) {
- report(false, "VMEXIT not due to vmmcall. Exit reason 0x%x",
- vmcb->control.exit_code);
+ report_fail("VMEXIT not due to vmmcall. Exit reason 0x%x",
+ vmcb->control.exit_code);
return true;
}
vmcb->save.rip += 3;
@@ -1352,8 +1352,8 @@ static bool interrupt_finished(struct svm_test *test)
case 1:
case 3:
if (vmcb->control.exit_code != SVM_EXIT_INTR) {
- report(false, "VMEXIT not due to intr intercept. Exit reason 0x%x",
- vmcb->control.exit_code);
+ report_fail("VMEXIT not due to intr intercept. Exit reason 0x%x",
+ vmcb->control.exit_code);
return true;
}

@@ -1425,8 +1425,8 @@ static bool nmi_finished(struct svm_test *test)
switch (get_test_stage(test)) {
case 0:
if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) {
- report(false, "VMEXIT not due to vmmcall. Exit reason 0x%x",
- vmcb->control.exit_code);
+ report_fail("VMEXIT not due to vmmcall. Exit reason 0x%x",
+ vmcb->control.exit_code);
return true;
}
vmcb->save.rip += 3;
@@ -1436,8 +1436,8 @@ static bool nmi_finished(struct svm_test *test)

case 1:
if (vmcb->control.exit_code != SVM_EXIT_NMI) {
- report(false, "VMEXIT not due to NMI intercept. Exit reason 0x%x",
- vmcb->control.exit_code);
+ report_fail("VMEXIT not due to NMI intercept. Exit reason 0x%x",
+ vmcb->control.exit_code);
return true;
}

@@ -1527,8 +1527,8 @@ static bool nmi_hlt_finished(struct svm_test *test)
switch (get_test_stage(test)) {
case 1:
if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) {
- report(false, "VMEXIT not due to vmmcall. Exit reason 0x%x",
- vmcb->control.exit_code);
+ report_fail("VMEXIT not due to vmmcall. Exit reason 0x%x",
+ vmcb->control.exit_code);
return true;
}
vmcb->save.rip += 3;
@@ -1538,8 +1538,8 @@ static bool nmi_hlt_finished(struct svm_test *test)

case 2:
if (vmcb->control.exit_code != SVM_EXIT_NMI) {
- report(false, "VMEXIT not due to NMI intercept. Exit reason 0x%x",
- vmcb->control.exit_code);
+ report_fail("VMEXIT not due to NMI intercept. Exit reason 0x%x",
+ vmcb->control.exit_code);
return true;
}

@@ -1586,8 +1586,8 @@ static bool exc_inject_finished(struct svm_test *test)
switch (get_test_stage(test)) {
case 0:
if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) {
- report(false, "VMEXIT not due to vmmcall. Exit reason 0x%x",
- vmcb->control.exit_code);
+ report_fail("VMEXIT not due to vmmcall. Exit reason 0x%x",
+ vmcb->control.exit_code);
return true;
}
vmcb->save.rip += 3;
@@ -1596,8 +1596,8 @@ static bool exc_inject_finished(struct svm_test *test)

case 1:
if (vmcb->control.exit_code != SVM_EXIT_ERR) {
- report(false, "VMEXIT not due to error. Exit reason 0x%x",
- vmcb->control.exit_code);
+ report_fail("VMEXIT not due to error. Exit reason 0x%x",
+ vmcb->control.exit_code);
return true;
}
report(count_exc == 0, "exception with vector 2 not injected");
@@ -1606,8 +1606,8 @@ static bool exc_inject_finished(struct svm_test *test)

case 2:
if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) {
- report(false, "VMEXIT not due to vmmcall. Exit reason 0x%x",
- vmcb->control.exit_code);
+ report_fail("VMEXIT not due to vmmcall. Exit reason 0x%x",
+ vmcb->control.exit_code);
return true;
}
vmcb->save.rip += 3;
@@ -1650,7 +1650,7 @@ static void virq_inject_prepare(struct svm_test *test)
static void virq_inject_test(struct svm_test *test)
{
if (virq_fired) {
- report(false, "virtual interrupt fired before L2 sti");
+ report_fail("virtual interrupt fired before L2 sti");
set_test_stage(test, -1);
vmmcall();
}
@@ -1660,14 +1660,14 @@ static void virq_inject_test(struct svm_test *test)
irq_disable();

if (!virq_fired) {
- report(false, "virtual interrupt not fired after L2 sti");
+ report_fail("virtual interrupt not fired after L2 sti");
set_test_stage(test, -1);
}

vmmcall();

if (virq_fired) {
- report(false, "virtual interrupt fired before L2 sti after VINTR intercept");
+ report_fail("virtual interrupt fired before L2 sti after VINTR intercept");
set_test_stage(test, -1);
vmmcall();
}
@@ -1677,7 +1677,7 @@ static void virq_inject_test(struct svm_test *test)
irq_disable();

if (!virq_fired) {
- report(false, "virtual interrupt not fired after return from VINTR intercept");
+ report_fail("virtual interrupt not fired after return from VINTR intercept");
set_test_stage(test, -1);
}

@@ -1688,7 +1688,7 @@ static void virq_inject_test(struct svm_test *test)
irq_disable();

if (virq_fired) {
- report(false, "virtual interrupt fired when V_IRQ_PRIO less than V_TPR");
+ report_fail("virtual interrupt fired when V_IRQ_PRIO less than V_TPR");
set_test_stage(test, -1);
}

@@ -1703,12 +1703,12 @@ static bool virq_inject_finished(struct svm_test *test)
switch (get_test_stage(test)) {
case 0:
if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) {
- report(false, "VMEXIT not due to vmmcall. Exit reason 0x%x",
- vmcb->control.exit_code);
+ report_fail("VMEXIT not due to vmmcall. Exit reason 0x%x",
+ vmcb->control.exit_code);
return true;
}
if (vmcb->control.int_ctl & V_IRQ_MASK) {
- report(false, "V_IRQ not cleared on VMEXIT after firing");
+ report_fail("V_IRQ not cleared on VMEXIT after firing");
return true;
}
virq_fired = false;
@@ -1719,12 +1719,12 @@ static bool virq_inject_finished(struct svm_test *test)

case 1:
if (vmcb->control.exit_code != SVM_EXIT_VINTR) {
- report(false, "VMEXIT not due to vintr. Exit reason 0x%x",
- vmcb->control.exit_code);
+ report_fail("VMEXIT not due to vintr. Exit reason 0x%x",
+ vmcb->control.exit_code);
return true;
}
if (virq_fired) {
- report(false, "V_IRQ fired before SVM_EXIT_VINTR");
+ report_fail("V_IRQ fired before SVM_EXIT_VINTR");
return true;
}
vmcb->control.intercept &= ~(1ULL << INTERCEPT_VINTR);
@@ -1732,8 +1732,8 @@ static bool virq_inject_finished(struct svm_test *test)

case 2:
if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) {
- report(false, "VMEXIT not due to vmmcall. Exit reason 0x%x",
- vmcb->control.exit_code);
+ report_fail("VMEXIT not due to vmmcall. Exit reason 0x%x",
+ vmcb->control.exit_code);
return true;
}
virq_fired = false;
@@ -1746,8 +1746,8 @@ static bool virq_inject_finished(struct svm_test *test)

case 3:
if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) {
- report(false, "VMEXIT not due to vmmcall. Exit reason 0x%x",
- vmcb->control.exit_code);
+ report_fail("VMEXIT not due to vmmcall. Exit reason 0x%x",
+ vmcb->control.exit_code);
return true;
}
vmcb->control.intercept |= (1ULL << INTERCEPT_VINTR);
@@ -1756,8 +1756,8 @@ static bool virq_inject_finished(struct svm_test *test)
case 4:
// INTERCEPT_VINTR should be ignored because V_INTR_PRIO < V_TPR
if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) {
- report(false, "VMEXIT not due to vmmcall. Exit reason 0x%x",
- vmcb->control.exit_code);
+ report_fail("VMEXIT not due to vmmcall. Exit reason 0x%x",
+ vmcb->control.exit_code);
return true;
}
break;
@@ -1860,9 +1860,8 @@ static bool reg_corruption_finished(struct svm_test *test)
irq_disable();

if (guest_rip == insb_instruction_label && io_port_var != 0xAA) {
- report(false,
- "RIP corruption detected after %d timer interrupts",
- isr_cnt);
+ report_fail("RIP corruption detected after %d timer interrupts",
+ isr_cnt);
return true;
}

@@ -1943,8 +1942,8 @@ static bool init_intercept_finished(struct svm_test *test)
vmcb->save.rip += 3;

if (vmcb->control.exit_code != SVM_EXIT_INIT) {
- report(false, "VMEXIT not due to init intercept. Exit reason 0x%x",
- vmcb->control.exit_code);
+ report_fail("VMEXIT not due to init intercept. Exit reason 0x%x",
+ vmcb->control.exit_code);

return true;
}
@@ -2045,8 +2044,8 @@ static bool host_rflags_finished(struct svm_test *test)
switch (get_test_stage(test)) {
case 0:
if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) {
- report(false, "Unexpected VMEXIT. Exit reason 0x%x",
- vmcb->control.exit_code);
+ report_fail("Unexpected VMEXIT. Exit reason 0x%x",
+ vmcb->control.exit_code);
return true;
}
vmcb->save.rip += 3;
@@ -2059,9 +2058,9 @@ static bool host_rflags_finished(struct svm_test *test)
case 1:
if (vmcb->control.exit_code != SVM_EXIT_VMMCALL ||
host_rflags_guest_main_flag != 1) {
- report(false, "Unexpected VMEXIT or #DB handler"
- " invoked before guest main. Exit reason 0x%x",
- vmcb->control.exit_code);
+ report_fail("Unexpected VMEXIT or #DB handler"
+ " invoked before guest main. Exit reason 0x%x",
+ vmcb->control.exit_code);
return true;
}
vmcb->save.rip += 3;
@@ -2075,10 +2074,10 @@ static bool host_rflags_finished(struct svm_test *test)
case 2:
if (vmcb->control.exit_code != SVM_EXIT_VMMCALL ||
rip_detected != (u64)&vmrun_rip + 3) {
- report(false, "Unexpected VMEXIT or RIP mismatch."
- " Exit reason 0x%x, RIP actual: %lx, RIP expected: "
- "%lx", vmcb->control.exit_code,
- (u64)&vmrun_rip + 3, rip_detected);
+ report_fail("Unexpected VMEXIT or RIP mismatch."
+ " Exit reason 0x%x, RIP actual: %lx, RIP expected: "
+ "%lx", vmcb->control.exit_code,
+ (u64)&vmrun_rip + 3, rip_detected);
return true;
}
host_rflags_set_rf = true;
@@ -2092,11 +2091,11 @@ static bool host_rflags_finished(struct svm_test *test)
host_rflags_guest_main_flag != 1 ||
host_rflags_db_handler_flag > 1 ||
read_rflags() & X86_EFLAGS_RF) {
- report(false, "Unexpected VMEXIT or RIP mismatch or "
- "EFLAGS.RF not cleared."
- " Exit reason 0x%x, RIP actual: %lx, RIP expected: "
- "%lx", vmcb->control.exit_code,
- (u64)&vmrun_rip, rip_detected);
+ report_fail("Unexpected VMEXIT or RIP mismatch or "
+ "EFLAGS.RF not cleared."
+ " Exit reason 0x%x, RIP actual: %lx, RIP expected: "
+ "%lx", vmcb->control.exit_code,
+ (u64)&vmrun_rip, rip_detected);
return true;
}
host_rflags_set_tf = false;
@@ -2828,8 +2827,8 @@ static void svm_vmrun_errata_test(void)
);

if (svm_errata_reproduced) {
- report(false, "Got #GP exception - svm errata reproduced at 0x%lx",
- physical);
+ report_fail("Got #GP exception - svm errata reproduced at 0x%lx",
+ physical);
break;
}

@@ -2924,7 +2923,7 @@ static bool vgif_finished(struct svm_test *test)
{
case 0:
if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) {
- report(false, "VMEXIT not due to vmmcall.");
+ report_fail("VMEXIT not due to vmmcall.");
return true;
}
vmcb->control.int_ctl |= V_GIF_ENABLED_MASK;
@@ -2933,11 +2932,11 @@ static bool vgif_finished(struct svm_test *test)
break;
case 1:
if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) {
- report(false, "VMEXIT not due to vmmcall.");
+ report_fail("VMEXIT not due to vmmcall.");
return true;
}
if (!(vmcb->control.int_ctl & V_GIF_MASK)) {
- report(false, "Failed to set VGIF when executing STGI.");
+ report_fail("Failed to set VGIF when executing STGI.");
vmcb->control.int_ctl &= ~V_GIF_ENABLED_MASK;
return true;
}
@@ -2947,11 +2946,11 @@ static bool vgif_finished(struct svm_test *test)
break;
case 2:
if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) {
- report(false, "VMEXIT not due to vmmcall.");
+ report_fail("VMEXIT not due to vmmcall.");
return true;
}
if (vmcb->control.int_ctl & V_GIF_MASK) {
- report(false, "Failed to clear VGIF when executing CLGI.");
+ report_fail("Failed to clear VGIF when executing CLGI.");
vmcb->control.int_ctl &= ~V_GIF_ENABLED_MASK;
return true;
}
diff --git a/x86/vmx.c b/x86/vmx.c
index 2a32aa2..247de23 100644
--- a/x86/vmx.c
+++ b/x86/vmx.c
@@ -1112,11 +1112,10 @@ void check_ept_ad(unsigned long *pml4, u64 guest_cr3,
if (!bad_pt_ad) {
bad_pt_ad |= (ept_pte & (EPT_ACCESS_FLAG|EPT_DIRTY_FLAG)) != expected_pt_ad;
if (bad_pt_ad)
- report(false,
- "EPT - guest level %d page table A=%d/D=%d",
- l,
- !!(expected_pt_ad & EPT_ACCESS_FLAG),
- !!(expected_pt_ad & EPT_DIRTY_FLAG));
+ report_fail("EPT - guest level %d page table A=%d/D=%d",
+ l,
+ !!(expected_pt_ad & EPT_ACCESS_FLAG),
+ !!(expected_pt_ad & EPT_DIRTY_FLAG));
}

pte = pt[offset];
@@ -1137,7 +1136,7 @@ void check_ept_ad(unsigned long *pml4, u64 guest_cr3,
gpa = (pt[offset] & PT_ADDR_MASK) | (guest_addr & offset_in_page);

if (!get_ept_pte(pml4, gpa, 1, &ept_pte)) {
- report(false, "EPT - guest physical address is not mapped");
+ report_fail("EPT - guest physical address is not mapped");
return;
}
report((ept_pte & (EPT_ACCESS_FLAG | EPT_DIRTY_FLAG)) == expected_gpa_ad,
@@ -1883,7 +1882,7 @@ static int test_run(struct vmx_test *test)
int ret = 0;
if (test->init || test->guest_main || test->exit_handler ||
test->syscall_handler) {
- report(0, "V2 test cannot specify V1 callbacks.");
+ report_fail("V2 test cannot specify V1 callbacks.");
ret = 1;
}
if (ret)
@@ -1928,7 +1927,7 @@ static int test_run(struct vmx_test *test)
run_teardown_step(&teardown_steps[--teardown_count]);

if (launched && !guest_finished)
- report(0, "Guest didn't run to completion.");
+ report_fail("Guest didn't run to completion.");

out:
if (vmx_off()) {
@@ -2123,7 +2122,7 @@ int main(int argc, const char *argv[])
goto exit;
} else {
if (vmx_on()) {
- report(0, "vmxon");
+ report_fail("vmxon");
goto exit;
}
}
diff --git a/x86/vmx_tests.c b/x86/vmx_tests.c
index 4f712eb..872586a 100644
--- a/x86/vmx_tests.c
+++ b/x86/vmx_tests.c
@@ -58,7 +58,7 @@ static void basic_guest_main(void)

static int basic_exit_handler(union exit_reason exit_reason)
{
- report(0, "Basic VMX test");
+ report_fail("Basic VMX test");
print_vmexit_info(exit_reason);
return VMX_TEST_EXIT;
}
@@ -88,14 +88,14 @@ static int vmenter_exit_handler(union exit_reason exit_reason)
switch (exit_reason.basic) {
case VMX_VMCALL:
if (regs.rax != 0xABCD) {
- report(0, "test vmresume");
+ report_fail("test vmresume");
return VMX_TEST_VMEXIT;
}
regs.rax = 0xFFFF;
vmcs_write(GUEST_RIP, guest_rip + 3);
return VMX_TEST_RESUME;
default:
- report(0, "test vmresume");
+ report_fail("test vmresume");
print_vmexit_info(exit_reason);
}
return VMX_TEST_VMEXIT;
@@ -184,7 +184,7 @@ static int preemption_timer_exit_handler(union exit_reason exit_reason)
"preemption timer with 0 value");
break;
default:
- report(false, "Invalid stage.");
+ report_fail("Invalid stage.");
print_vmexit_info(exit_reason);
break;
}
@@ -206,12 +206,12 @@ static int preemption_timer_exit_handler(union exit_reason exit_reason)
"Save preemption value");
return VMX_TEST_RESUME;
case 2:
- report(0, "busy-wait for preemption timer");
+ report_fail("busy-wait for preemption timer");
vmx_set_test_stage(3);
vmcs_write(PREEMPT_TIMER_VALUE, preempt_val);
return VMX_TEST_RESUME;
case 3:
- report(0, "preemption timer during hlt");
+ report_fail("preemption timer during hlt");
vmx_set_test_stage(4);
/* fall through */
case 4:
@@ -221,19 +221,18 @@ static int preemption_timer_exit_handler(union exit_reason exit_reason)
saved_rip = guest_rip + insn_len;
return VMX_TEST_RESUME;
case 5:
- report(0,
- "preemption timer with 0 value (vmcall stage 5)");
+ report_fail("preemption timer with 0 value (vmcall stage 5)");
break;
default:
// Should not reach here
- report(false, "unexpected stage, %d",
- vmx_get_test_stage());
+ report_fail("unexpected stage, %d",
+ vmx_get_test_stage());
print_vmexit_info(exit_reason);
return VMX_TEST_VMEXIT;
}
break;
default:
- report(false, "Unknown exit reason, 0x%x", exit_reason.full);
+ report_fail("Unknown exit reason, 0x%x", exit_reason.full);
print_vmexit_info(exit_reason);
}
vmcs_write(PIN_CONTROLS, vmcs_read(PIN_CONTROLS) & ~PIN_PREEMPT);
@@ -317,7 +316,7 @@ static void test_ctrl_pat_main(void)
printf("\tENT_LOAD_PAT is not supported.\n");
else {
if (guest_ia32_pat != 0) {
- report(0, "Entry load PAT");
+ report_fail("Entry load PAT");
return;
}
}
@@ -383,7 +382,7 @@ static void test_ctrl_efer_main(void)
printf("\tENT_LOAD_EFER is not supported.\n");
else {
if (guest_ia32_efer != (ia32_efer ^ EFER_NX)) {
- report(0, "Entry load EFER");
+ report_fail("Entry load EFER");
return;
}
}
@@ -436,13 +435,13 @@ static void cr_shadowing_main(void)
vmx_set_test_stage(0);
guest_cr0 = read_cr0();
if (vmx_get_test_stage() == 1)
- report(0, "Read through CR0");
+ report_fail("Read through CR0");
else
vmcall();
vmx_set_test_stage(1);
guest_cr4 = read_cr4();
if (vmx_get_test_stage() == 2)
- report(0, "Read through CR4");
+ report_fail("Read through CR4");
else
vmcall();
// Test write through
@@ -451,13 +450,13 @@ static void cr_shadowing_main(void)
vmx_set_test_stage(2);
write_cr0(guest_cr0);
if (vmx_get_test_stage() == 3)
- report(0, "Write throuth CR0");
+ report_fail("Write throuth CR0");
else
vmcall();
vmx_set_test_stage(3);
write_cr4(guest_cr4);
if (vmx_get_test_stage() == 4)
- report(0, "Write through CR4");
+ report_fail("Write through CR4");
else
vmcall();
// Test read shadow
@@ -474,13 +473,13 @@ static void cr_shadowing_main(void)
vmx_set_test_stage(6);
write_cr0(guest_cr0);
if (vmx_get_test_stage() == 7)
- report(0, "Write shadowing CR0 (same value with shadow)");
+ report_fail("Write shadowing CR0 (same value with shadow)");
else
vmcall();
vmx_set_test_stage(7);
write_cr4(guest_cr4);
if (vmx_get_test_stage() == 8)
- report(0, "Write shadowing CR4 (same value with shadow)");
+ report_fail("Write shadowing CR4 (same value with shadow)");
else
vmcall();
// Test write shadow (different value)
@@ -564,8 +563,8 @@ static int cr_shadowing_exit_handler(union exit_reason exit_reason)
break;
default:
// Should not reach here
- report(false, "unexpected stage, %d",
- vmx_get_test_stage());
+ report_fail("unexpected stage, %d",
+ vmx_get_test_stage());
print_vmexit_info(exit_reason);
return VMX_TEST_VMEXIT;
}
@@ -574,19 +573,19 @@ static int cr_shadowing_exit_handler(union exit_reason exit_reason)
case VMX_CR:
switch (vmx_get_test_stage()) {
case 4:
- report(0, "Read shadowing CR0");
+ report_fail("Read shadowing CR0");
vmx_inc_test_stage();
break;
case 5:
- report(0, "Read shadowing CR4");
+ report_fail("Read shadowing CR4");
vmx_inc_test_stage();
break;
case 6:
- report(0, "Write shadowing CR0 (same value)");
+ report_fail("Write shadowing CR0 (same value)");
vmx_inc_test_stage();
break;
case 7:
- report(0, "Write shadowing CR4 (same value)");
+ report_fail("Write shadowing CR4 (same value)");
vmx_inc_test_stage();
break;
case 8:
@@ -603,15 +602,15 @@ static int cr_shadowing_exit_handler(union exit_reason exit_reason)
break;
default:
// Should not reach here
- report(false, "unexpected stage, %d",
- vmx_get_test_stage());
+ report_fail("unexpected stage, %d",
+ vmx_get_test_stage());
print_vmexit_info(exit_reason);
return VMX_TEST_VMEXIT;
}
vmcs_write(GUEST_RIP, guest_rip + insn_len);
return VMX_TEST_RESUME;
default:
- report(false, "Unknown exit reason, 0x%x", exit_reason.full);
+ report_fail("Unknown exit reason, 0x%x", exit_reason.full);
print_vmexit_info(exit_reason);
}
return VMX_TEST_VMEXIT;
@@ -740,8 +739,8 @@ static int iobmp_exit_handler(union exit_reason exit_reason)
break;
default:
// Should not reach here
- report(false, "unexpected stage, %d",
- vmx_get_test_stage());
+ report_fail("unexpected stage, %d",
+ vmx_get_test_stage());
print_vmexit_info(exit_reason);
return VMX_TEST_VMEXIT;
}
@@ -761,8 +760,8 @@ static int iobmp_exit_handler(union exit_reason exit_reason)
break;
default:
// Should not reach here
- report(false, "unexpected stage, %d",
- vmx_get_test_stage());
+ report_fail("unexpected stage, %d",
+ vmx_get_test_stage());
print_vmexit_info(exit_reason);
return VMX_TEST_VMEXIT;
}
@@ -1178,7 +1177,7 @@ static void ept_common(void)
vmx_set_test_stage(0);
if (*((u32 *)data_page2) != MAGIC_VAL_1 ||
*((u32 *)data_page1) != MAGIC_VAL_1)
- report(0, "EPT basic framework - read");
+ report_fail("EPT basic framework - read");
else {
*((u32 *)data_page2) = MAGIC_VAL_3;
vmcall();
@@ -1195,7 +1194,7 @@ static void ept_common(void)
vmcall();
*((u32 *)data_page1) = MAGIC_VAL_1;
if (vmx_get_test_stage() != 2) {
- report(0, "EPT misconfigurations");
+ report_fail("EPT misconfigurations");
goto t1;
}
vmx_set_test_stage(2);
@@ -1283,7 +1282,7 @@ static int pml_exit_handler(union exit_reason exit_reason)
clear_ept_ad(pml4, guest_cr3, (unsigned long)data_page2);
break;
default:
- report(false, "unexpected stage, %d.",
+ report_fail("unexpected stage, %d.",
vmx_get_test_stage());
print_vmexit_info(exit_reason);
return VMX_TEST_VMEXIT;
@@ -1295,7 +1294,7 @@ static int pml_exit_handler(union exit_reason exit_reason)
vmcs_write(GUEST_PML_INDEX, PML_INDEX - 1);
return VMX_TEST_RESUME;
default:
- report(false, "Unknown exit reason, 0x%x", exit_reason.full);
+ report_fail("Unknown exit reason, 0x%x", exit_reason.full);
print_vmexit_info(exit_reason);
}
return VMX_TEST_VMEXIT;
@@ -1338,7 +1337,7 @@ static int ept_exit_handler_common(union exit_reason exit_reason, bool have_ad)
(unsigned long)data_page2,
EPT_RA | EPT_WA | EPT_EA);
} else
- report(0, "EPT basic framework - write");
+ report_fail("EPT basic framework - write");
break;
case 1:
install_ept(pml4, (unsigned long)data_page1,
@@ -1380,7 +1379,7 @@ static int ept_exit_handler_common(union exit_reason exit_reason, bool have_ad)
break;
// Should not reach here
default:
- report(false, "ERROR - unexpected stage, %d.",
+ report_fail("ERROR - unexpected stage, %d.",
vmx_get_test_stage());
print_vmexit_info(exit_reason);
return VMX_TEST_VMEXIT;
@@ -1399,7 +1398,7 @@ static int ept_exit_handler_common(union exit_reason exit_reason, bool have_ad)
break;
// Should not reach here
default:
- report(false, "ERROR - unexpected stage, %d.",
+ report_fail("ERROR - unexpected stage, %d.",
vmx_get_test_stage());
print_vmexit_info(exit_reason);
return VMX_TEST_VMEXIT;
@@ -1455,14 +1454,14 @@ static int ept_exit_handler_common(union exit_reason exit_reason, bool have_ad)
break;
default:
// Should not reach here
- report(false, "ERROR : unexpected stage, %d",
+ report_fail("ERROR : unexpected stage, %d",
vmx_get_test_stage());
print_vmexit_info(exit_reason);
return VMX_TEST_VMEXIT;
}
return VMX_TEST_RESUME;
default:
- report(false, "Unknown exit reason, 0x%x", exit_reason.full);
+ report_fail("Unknown exit reason, 0x%x", exit_reason.full);
print_vmexit_info(exit_reason);
}
return VMX_TEST_VMEXIT;
@@ -1612,7 +1611,7 @@ static int vpid_exit_handler(union exit_reason exit_reason)
vmx_inc_test_stage();
break;
default:
- report(false, "ERROR: unexpected stage, %d",
+ report_fail("ERROR: unexpected stage, %d",
vmx_get_test_stage());
print_vmexit_info(exit_reason);
return VMX_TEST_VMEXIT;
@@ -1620,7 +1619,7 @@ static int vpid_exit_handler(union exit_reason exit_reason)
vmcs_write(GUEST_RIP, guest_rip + insn_len);
return VMX_TEST_RESUME;
default:
- report(false, "Unknown exit reason, 0x%x", exit_reason.full);
+ report_fail("Unknown exit reason, 0x%x", exit_reason.full);
print_vmexit_info(exit_reason);
}
return VMX_TEST_VMEXIT;
@@ -1791,7 +1790,7 @@ static int interrupt_exit_handler(union exit_reason exit_reason)
vmcs_write(GUEST_ACTV_STATE, ACTV_ACTIVE);
return VMX_TEST_RESUME;
default:
- report(false, "Unknown exit reason, 0x%x", exit_reason.full);
+ report_fail("Unknown exit reason, 0x%x", exit_reason.full);
print_vmexit_info(exit_reason);
}

@@ -1878,8 +1877,8 @@ static int nmi_hlt_exit_handler(union exit_reason exit_reason)
switch (vmx_get_test_stage()) {
case 1:
if (exit_reason.basic != VMX_VMCALL) {
- report(false, "VMEXIT not due to vmcall. Exit reason 0x%x",
- exit_reason.full);
+ report_fail("VMEXIT not due to vmcall. Exit reason 0x%x",
+ exit_reason.full);
print_vmexit_info(exit_reason);
return VMX_TEST_VMEXIT;
}
@@ -1893,8 +1892,8 @@ static int nmi_hlt_exit_handler(union exit_reason exit_reason)

case 2:
if (exit_reason.basic != VMX_EXC_NMI) {
- report(false, "VMEXIT not due to NMI intercept. Exit reason 0x%x",
- exit_reason.full);
+ report_fail("VMEXIT not due to NMI intercept. Exit reason 0x%x",
+ exit_reason.full);
print_vmexit_info(exit_reason);
return VMX_TEST_VMEXIT;
}
@@ -2022,7 +2021,7 @@ static int dbgctls_exit_handler(union exit_reason exit_reason)
vmcs_write(GUEST_RIP, guest_rip + insn_len);
return VMX_TEST_RESUME;
default:
- report(false, "Unknown exit reason, %d", exit_reason.full);
+ report_fail("Unknown exit reason, %d", exit_reason.full);
print_vmexit_info(exit_reason);
}
return VMX_TEST_VMEXIT;
@@ -2118,7 +2117,7 @@ static void vmmcall_main(void)
"vmmcall\n\t"
::: "rax");

- report(0, "VMMCALL");
+ report_fail("VMMCALL");
}

static int vmmcall_exit_handler(union exit_reason exit_reason)
@@ -2126,14 +2125,14 @@ static int vmmcall_exit_handler(union exit_reason exit_reason)
switch (exit_reason.basic) {
case VMX_VMCALL:
printf("here\n");
- report(0, "VMMCALL triggers #UD");
+ report_fail("VMMCALL triggers #UD");
break;
case VMX_EXC_NMI:
report((vmcs_read(EXI_INTR_INFO) & 0xff) == UD_VECTOR,
"VMMCALL triggers #UD");
break;
default:
- report(false, "Unknown exit reason, 0x%x", exit_reason.full);
+ report_fail("Unknown exit reason, 0x%x", exit_reason.full);
print_vmexit_info(exit_reason);
}

@@ -2191,7 +2190,7 @@ static int disable_rdtscp_exit_handler(union exit_reason exit_reason)
case VMX_VMCALL:
switch (vmx_get_test_stage()) {
case 0:
- report(false, "RDTSCP triggers #UD");
+ report_fail("RDTSCP triggers #UD");
vmx_inc_test_stage();
/* fallthrough */
case 1:
@@ -2199,13 +2198,13 @@ static int disable_rdtscp_exit_handler(union exit_reason exit_reason)
vmcs_write(GUEST_RIP, vmcs_read(GUEST_RIP) + 3);
return VMX_TEST_RESUME;
case 2:
- report(false, "RDPID triggers #UD");
+ report_fail("RDPID triggers #UD");
break;
}
break;

default:
- report(false, "Unknown exit reason, 0x%x", exit_reason.full);
+ report_fail("Unknown exit reason, 0x%x", exit_reason.full);
print_vmexit_info(exit_reason);
}
return VMX_TEST_VMEXIT;
@@ -2295,7 +2294,7 @@ static void exit_monitor_from_l2_main(void)

static int exit_monitor_from_l2_handler(union exit_reason exit_reason)
{
- report(false, "The guest should have killed the VMM");
+ report_fail("The guest should have killed the VMM");
return VMX_TEST_EXIT;
}

@@ -6070,8 +6069,7 @@ static void test_xapic_rd(
/* Reenter guest so it can consume/check rcx and exit again. */
enter_guest();
} else if (exit_reason_want != VMX_VMCALL) {
- report(false, "Oops, bad exit expectation: %u.",
- exit_reason_want);
+ report_fail("Oops, bad exit expectation: %u.", exit_reason_want);
}

skip_exit_vmcall();
@@ -6134,8 +6132,7 @@ static void test_xapic_wr(
/* Reenter guest so it can consume/check rcx and exit again. */
enter_guest();
} else if (exit_reason_want != VMX_VMCALL) {
- report(false, "Oops, bad exit expectation: %u.",
- exit_reason_want);
+ report_fail("Oops, bad exit expectation: %u.", exit_reason_want);
}

assert_exit_reason(VMX_VMCALL);
@@ -6153,8 +6150,7 @@ static void test_xapic_wr(
"non-virtualized write; val is 0x%x, want 0x%x", got,
val);
} else if (!expectation->virtualize_apic_accesses && checked) {
- report(false,
- "Non-virtualized write was prematurely checked!");
+ report_fail("Non-virtualized write was prematurely checked!");
}

skip_exit_vmcall();
@@ -6313,7 +6309,7 @@ static void apic_reg_virt_test(void)
ok = apic_reg_virt_exit_expectation(
reg, apic_reg_virt_config, &expectation);
if (!ok) {
- report(false, "Malformed test.");
+ report_fail("Malformed test.");
break;
}

@@ -6862,8 +6858,7 @@ static void test_x2apic_rd(
enter_guest();

if (exit_reason_want != VMX_VMCALL) {
- report(false, "Oops, bad exit expectation: %u.",
- exit_reason_want);
+ report_fail("Oops, bad exit expectation: %u.", exit_reason_want);
}

skip_exit_vmcall();
@@ -6933,8 +6928,7 @@ static void test_x2apic_wr(
/* Reenter guest so it can consume/check rcx and exit again. */
enter_guest();
} else if (exit_reason_want != VMX_VMCALL) {
- report(false, "Oops, bad exit expectation: %u.",
- exit_reason_want);
+ report_fail("Oops, bad exit expectation: %u.", exit_reason_want);
}

assert_exit_reason(VMX_VMCALL);
@@ -9901,7 +9895,7 @@ static void vmx_init_signal_test(void)
*/
delay(INIT_SIGNAL_TEST_DELAY);
if (vmx_get_test_stage() != 5) {
- report(false, "Pending INIT signal didn't result in VMX exit");
+ report_fail("Pending INIT signal didn't result in VMX exit");
return;
}
report(init_signal_test_exit_reason == VMX_INIT,
@@ -10035,7 +10029,7 @@ static void sipi_test_ap_thread(void *data)
vmcs_write(GUEST_ACTV_STATE, ACTV_ACTIVE);
vmx_set_test_stage(2);
} else {
- report(0, "AP: Unexpected VMExit, reason=%ld", vmcs_read(EXI_REASON));
+ report_fail("AP: Unexpected VMExit, reason=%ld", vmcs_read(EXI_REASON));
vmx_off();
return;
}
@@ -10522,12 +10516,12 @@ static int invalid_msr_init(struct vmcs *vmcs)

static void invalid_msr_main(void)
{
- report(0, "Invalid MSR load");
+ report_fail("Invalid MSR load");
}

static int invalid_msr_exit_handler(union exit_reason exit_reason)
{
- report(0, "Invalid MSR load");
+ report_fail("Invalid MSR load");
print_vmexit_info(exit_reason);
return VMX_TEST_EXIT;
}
--
2.31.1