8
8
* Copyright (C) 2021, Red Hat, Inc.
9
9
*
10
10
*/
11
+ #define USE_GUEST_ASSERT_PRINTF 1
11
12
12
13
#include <stdatomic.h>
13
14
#include <stdio.h>
@@ -34,13 +35,12 @@ static void l2_guest_code_int(void);
34
35
static void guest_int_handler (struct ex_regs * regs )
35
36
{
36
37
int_fired ++ ;
37
- GUEST_ASSERT_2 (regs -> rip == (unsigned long )l2_guest_code_int ,
38
- regs -> rip , (unsigned long )l2_guest_code_int );
38
+ GUEST_ASSERT_EQ (regs -> rip , (unsigned long )l2_guest_code_int );
39
39
}
40
40
41
41
static void l2_guest_code_int (void )
42
42
{
43
- GUEST_ASSERT_1 (int_fired == 1 , int_fired );
43
+ GUEST_ASSERT_EQ (int_fired , 1 );
44
44
45
45
/*
46
46
* Same as the vmmcall() function, but with a ud2 sneaked after the
@@ -53,7 +53,7 @@ static void l2_guest_code_int(void)
53
53
: "rbx" , "rdx" , "rsi" , "rdi" , "r8" , "r9" ,
54
54
"r10" , "r11" , "r12" , "r13" , "r14" , "r15" );
55
55
56
- GUEST_ASSERT_1 (bp_fired == 1 , bp_fired );
56
+ GUEST_ASSERT_EQ (bp_fired , 1 );
57
57
hlt ();
58
58
}
59
59
@@ -66,9 +66,9 @@ static void guest_nmi_handler(struct ex_regs *regs)
66
66
67
67
if (nmi_stage_get () == 1 ) {
68
68
vmmcall ();
69
- GUEST_ASSERT (false );
69
+ GUEST_FAIL ( "Unexpected resume after VMMCALL" );
70
70
} else {
71
- GUEST_ASSERT_1 (nmi_stage_get () == 3 , nmi_stage_get () );
71
+ GUEST_ASSERT_EQ (nmi_stage_get (), 3 );
72
72
GUEST_DONE ();
73
73
}
74
74
}
@@ -104,15 +104,16 @@ static void l1_guest_code(struct svm_test_data *svm, uint64_t is_nmi, uint64_t i
104
104
}
105
105
106
106
run_guest (vmcb , svm -> vmcb_gpa );
107
- GUEST_ASSERT_3 (vmcb -> control .exit_code == SVM_EXIT_VMMCALL ,
107
+ __GUEST_ASSERT (vmcb -> control .exit_code == SVM_EXIT_VMMCALL ,
108
+ "Expected VMMCAL #VMEXIT, got '0x%x', info1 = '0x%llx, info2 = '0x%llx'" ,
108
109
vmcb -> control .exit_code ,
109
110
vmcb -> control .exit_info_1 , vmcb -> control .exit_info_2 );
110
111
111
112
if (is_nmi ) {
112
113
clgi ();
113
114
x2apic_write_reg (APIC_ICR , APIC_DEST_SELF | APIC_INT_ASSERT | APIC_DM_NMI );
114
115
115
- GUEST_ASSERT_1 (nmi_stage_get () == 1 , nmi_stage_get () );
116
+ GUEST_ASSERT_EQ (nmi_stage_get (), 1 );
116
117
nmi_stage_inc ();
117
118
118
119
stgi ();
@@ -133,7 +134,8 @@ static void l1_guest_code(struct svm_test_data *svm, uint64_t is_nmi, uint64_t i
133
134
vmcb -> control .next_rip = vmcb -> save .rip + 2 ;
134
135
135
136
run_guest (vmcb , svm -> vmcb_gpa );
136
- GUEST_ASSERT_3 (vmcb -> control .exit_code == SVM_EXIT_HLT ,
137
+ __GUEST_ASSERT (vmcb -> control .exit_code == SVM_EXIT_HLT ,
138
+ "Expected HLT #VMEXIT, got '0x%x', info1 = '0x%llx, info2 = '0x%llx'" ,
137
139
vmcb -> control .exit_code ,
138
140
vmcb -> control .exit_info_1 , vmcb -> control .exit_info_2 );
139
141
@@ -185,7 +187,7 @@ static void run_test(bool is_nmi)
185
187
186
188
switch (get_ucall (vcpu , & uc )) {
187
189
case UCALL_ABORT :
188
- REPORT_GUEST_ASSERT_3 (uc , "vals = 0x%lx 0x%lx 0x%lx" );
190
+ REPORT_GUEST_ASSERT (uc );
189
191
break ;
190
192
/* NOT REACHED */
191
193
case UCALL_DONE :
0 commit comments