mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-26 13:44:15 +08:00
KVM: selftests: Fix filename reporting in guest asserts
Fix filename reporting in guest asserts by ensuring the GUEST_ASSERT
macro records __FILE__ and substituting REPORT_GUEST_ASSERT for many
repetitive calls to TEST_FAIL.
Previously filename was reported by using __FILE__ directly in the
selftest, wrongly assuming it would always be the same as where the
assertion failed.
Signed-off-by: Colton Lewis <coltonlewis@google.com>
Reported-by: Ricardo Koller <ricarkol@google.com>
Fixes: 4e18bccc2e
Link: https://lore.kernel.org/r/20220615193116.806312-5-coltonlewis@google.com
[sean: convert more TEST_FAIL => REPORT_GUEST_ASSERT instances]
Signed-off-by: Sean Christopherson <seanjc@google.com>
This commit is contained in:
parent
ddcb57afd5
commit
594a1c271c
@ -231,10 +231,13 @@ static void *test_vcpu_run(void *arg)
|
||||
break;
|
||||
case UCALL_ABORT:
|
||||
sync_global_from_guest(vm, *shared_data);
|
||||
TEST_FAIL("%s at %s:%ld\n\tvalues: %lu, %lu; %lu, vcpu: %u; stage: %u; iter: %u",
|
||||
(const char *)uc.args[0], __FILE__, uc.args[1],
|
||||
uc.args[2], uc.args[3], uc.args[4], vcpu_idx,
|
||||
shared_data->guest_stage, shared_data->nr_iter);
|
||||
REPORT_GUEST_ASSERT_N(uc, "values: %lu, %lu; %lu, vcpu %u; stage; %u; iter: %u",
|
||||
GUEST_ASSERT_ARG(uc, 0),
|
||||
GUEST_ASSERT_ARG(uc, 1),
|
||||
GUEST_ASSERT_ARG(uc, 2),
|
||||
vcpu_idx,
|
||||
shared_data->guest_stage,
|
||||
shared_data->nr_iter);
|
||||
break;
|
||||
default:
|
||||
TEST_FAIL("Unexpected guest exit\n");
|
||||
|
@ -283,9 +283,7 @@ int main(int argc, char *argv[])
|
||||
stage, (ulong)uc.args[1]);
|
||||
break;
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s at %s:%ld\n\tvalues: %#lx, %#lx",
|
||||
(const char *)uc.args[0],
|
||||
__FILE__, uc.args[1], uc.args[2], uc.args[3]);
|
||||
REPORT_GUEST_ASSERT_2(uc, "values: %#lx, %#lx");
|
||||
break;
|
||||
case UCALL_DONE:
|
||||
goto done;
|
||||
|
@ -291,9 +291,10 @@ static void test_run(void)
|
||||
guest_done = true;
|
||||
break;
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s at %s:%ld\n\tvalues: 0x%lx, 0x%lx; 0x%lx, stage: %u",
|
||||
(const char *)uc.args[0], __FILE__, uc.args[1],
|
||||
uc.args[2], uc.args[3], uc.args[4], stage);
|
||||
REPORT_GUEST_ASSERT_N(uc, "values: 0x%lx, 0x%lx; 0x%lx, stage: %u",
|
||||
GUEST_ASSERT_ARG(uc, 0),
|
||||
GUEST_ASSERT_ARG(uc, 1),
|
||||
GUEST_ASSERT_ARG(uc, 2), stage);
|
||||
break;
|
||||
default:
|
||||
TEST_FAIL("Unexpected guest exit\n");
|
||||
|
@ -94,8 +94,7 @@ static void enter_guest(struct kvm_vcpu *vcpu)
|
||||
|
||||
vcpu_run(vcpu);
|
||||
if (get_ucall(vcpu, &uc) == UCALL_ABORT)
|
||||
TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0], __FILE__,
|
||||
uc.args[1]);
|
||||
REPORT_GUEST_ASSERT(uc);
|
||||
}
|
||||
|
||||
static void assert_vcpu_reset(struct kvm_vcpu *vcpu)
|
||||
|
@ -782,9 +782,7 @@ static void test_vgic(uint32_t nr_irqs, bool level_sensitive, bool eoi_split)
|
||||
run_guest_cmd(vcpu, gic_fd, &inject_args, &args);
|
||||
break;
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s at %s:%ld\n\tvalues: %#lx, %#lx",
|
||||
(const char *)uc.args[0],
|
||||
__FILE__, uc.args[1], uc.args[2], uc.args[3]);
|
||||
REPORT_GUEST_ASSERT_2(uc, "values: %#lx, %#lx");
|
||||
break;
|
||||
case UCALL_DONE:
|
||||
goto done;
|
||||
|
@ -41,11 +41,12 @@ enum guest_assert_builtin_args {
|
||||
GUEST_ASSERT_BUILTIN_NARGS
|
||||
};
|
||||
|
||||
#define __GUEST_ASSERT(_condition, _condstr, _nargs, _args...) do { \
|
||||
if (!(_condition)) \
|
||||
ucall(UCALL_ABORT, 2 + _nargs, \
|
||||
"Failed guest assert: " \
|
||||
_condstr, __LINE__, _args); \
|
||||
#define __GUEST_ASSERT(_condition, _condstr, _nargs, _args...) \
|
||||
do { \
|
||||
if (!(_condition)) \
|
||||
ucall(UCALL_ABORT, GUEST_ASSERT_BUILTIN_NARGS + _nargs, \
|
||||
"Failed guest assert: " _condstr, \
|
||||
__FILE__, __LINE__, ##_args); \
|
||||
} while (0)
|
||||
|
||||
#define GUEST_ASSERT(_condition) \
|
||||
|
@ -162,9 +162,7 @@ static void *vcpu_worker(void *__data)
|
||||
goto done;
|
||||
break;
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s at %s:%ld, val = %lu",
|
||||
(const char *)uc.args[0],
|
||||
__FILE__, uc.args[1], uc.args[2]);
|
||||
REPORT_GUEST_ASSERT_1(uc, "val = %lu");
|
||||
break;
|
||||
case UCALL_DONE:
|
||||
goto done;
|
||||
|
@ -181,20 +181,18 @@ static void guest_code(void)
|
||||
GUEST_SYNC(perform_next_stage(&i, mapped_0));
|
||||
}
|
||||
|
||||
#define HOST_SYNC_NO_TAP(vcpup, stage) \
|
||||
({ \
|
||||
struct kvm_vcpu *__vcpu = (vcpup); \
|
||||
struct ucall uc; \
|
||||
int __stage = (stage); \
|
||||
\
|
||||
vcpu_run(__vcpu); \
|
||||
get_ucall(__vcpu, &uc); \
|
||||
if (uc.cmd == UCALL_ABORT) { \
|
||||
TEST_FAIL("line %lu: %s, hints: %lu, %lu", uc.args[1], \
|
||||
(const char *)uc.args[0], uc.args[2], uc.args[3]); \
|
||||
} \
|
||||
ASSERT_EQ(uc.cmd, UCALL_SYNC); \
|
||||
ASSERT_EQ(uc.args[1], __stage); \
|
||||
#define HOST_SYNC_NO_TAP(vcpup, stage) \
|
||||
({ \
|
||||
struct kvm_vcpu *__vcpu = (vcpup); \
|
||||
struct ucall uc; \
|
||||
int __stage = (stage); \
|
||||
\
|
||||
vcpu_run(__vcpu); \
|
||||
get_ucall(__vcpu, &uc); \
|
||||
if (uc.cmd == UCALL_ABORT) \
|
||||
REPORT_GUEST_ASSERT_2(uc, "hints: %lu, %lu"); \
|
||||
ASSERT_EQ(uc.cmd, UCALL_SYNC); \
|
||||
ASSERT_EQ(uc.args[1], __stage); \
|
||||
})
|
||||
|
||||
#define HOST_SYNC(vcpu, stage) \
|
||||
|
@ -88,8 +88,7 @@ static void *vcpu_worker(void *data)
|
||||
}
|
||||
|
||||
if (run->exit_reason == KVM_EXIT_IO && cmd == UCALL_ABORT)
|
||||
TEST_FAIL("%s at %s:%ld, val = %lu", (const char *)uc.args[0],
|
||||
__FILE__, uc.args[1], uc.args[2]);
|
||||
REPORT_GUEST_ASSERT_1(uc, "val = %lu");
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
@ -234,8 +234,7 @@ static void run_vcpu(struct kvm_vcpu *vcpu)
|
||||
case UCALL_DONE:
|
||||
break;
|
||||
case UCALL_ABORT:
|
||||
TEST_ASSERT(false, "%s at %s:%ld", (const char *)uc.args[0],
|
||||
__FILE__, uc.args[1]);
|
||||
REPORT_GUEST_ASSERT(uc);
|
||||
default:
|
||||
TEST_ASSERT(false, "Unexpected exit: %s",
|
||||
exit_reason_str(vcpu->run->exit_reason));
|
||||
|
@ -83,8 +83,7 @@ static void handle_sync(struct ucall *uc, uint64_t start, uint64_t end)
|
||||
|
||||
static void handle_abort(struct ucall *uc)
|
||||
{
|
||||
TEST_FAIL("%s at %s:%ld", (const char *)uc->args[0],
|
||||
__FILE__, uc->args[1]);
|
||||
REPORT_GUEST_ASSERT(*uc);
|
||||
}
|
||||
|
||||
static void enter_guest(struct kvm_vcpu *vcpu)
|
||||
|
@ -373,8 +373,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
switch (get_ucall(vcpu, &uc)) {
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0],
|
||||
__FILE__, uc.args[1]);
|
||||
REPORT_GUEST_ASSERT(uc);
|
||||
/* NOT REACHED */
|
||||
case UCALL_SYNC:
|
||||
switch (uc.args[1]) {
|
||||
|
@ -132,8 +132,7 @@ static void run_vcpu(struct kvm_vcpu *vcpu, int stage)
|
||||
case UCALL_DONE:
|
||||
return;
|
||||
case UCALL_ABORT:
|
||||
TEST_ASSERT(false, "%s at %s:%ld\n\tvalues: %#lx, %#lx", (const char *)uc.args[0],
|
||||
__FILE__, uc.args[1], uc.args[2], uc.args[3]);
|
||||
REPORT_GUEST_ASSERT_2(uc, "values: %#lx, %#lx");
|
||||
default:
|
||||
TEST_ASSERT(false, "Unexpected exit: %s",
|
||||
exit_reason_str(vcpu->run->exit_reason));
|
||||
|
@ -94,7 +94,7 @@ int main(int argc, char *argv[])
|
||||
vcpu_sregs_set(vcpu, &sregs);
|
||||
break;
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("Guest CR4 bit (OSXSAVE) unsynchronized with CPUID bit.");
|
||||
REPORT_GUEST_ASSERT(uc);
|
||||
break;
|
||||
case UCALL_DONE:
|
||||
goto done;
|
||||
|
@ -92,8 +92,7 @@ static void process_exit_on_emulation_error(struct kvm_vcpu *vcpu)
|
||||
|
||||
static void do_guest_assert(struct ucall *uc)
|
||||
{
|
||||
TEST_FAIL("%s at %s:%ld", (const char *)uc->args[0], __FILE__,
|
||||
uc->args[1]);
|
||||
REPORT_GUEST_ASSERT(*uc);
|
||||
}
|
||||
|
||||
static void check_for_guest_assert(struct kvm_vcpu *vcpu)
|
||||
|
@ -236,8 +236,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
switch (get_ucall(vcpu, &uc)) {
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0],
|
||||
__FILE__, uc.args[1]);
|
||||
REPORT_GUEST_ASSERT(uc);
|
||||
/* NOT REACHED */
|
||||
case UCALL_SYNC:
|
||||
break;
|
||||
|
@ -112,7 +112,7 @@ static void enter_guest(struct kvm_vcpu *vcpu)
|
||||
case UCALL_DONE:
|
||||
return;
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0], __FILE__, uc.args[1]);
|
||||
REPORT_GUEST_ASSERT(uc);
|
||||
default:
|
||||
TEST_FAIL("Unhandled ucall: %ld\nexit_reason: %u (%s)",
|
||||
uc.cmd, run->exit_reason, exit_reason_str(run->exit_reason));
|
||||
|
@ -234,8 +234,7 @@ int main(void)
|
||||
|
||||
switch (get_ucall(vcpu, &uc)) {
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0],
|
||||
__FILE__, uc.args[1]);
|
||||
REPORT_GUEST_ASSERT(uc);
|
||||
/* NOT REACHED */
|
||||
case UCALL_SYNC:
|
||||
break;
|
||||
|
@ -447,9 +447,7 @@ static void guest_test_msrs_access(void)
|
||||
|
||||
switch (get_ucall(vcpu, &uc)) {
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s at %s:%ld, MSR = %lx, vector = %lx",
|
||||
(const char *)uc.args[0], __FILE__,
|
||||
uc.args[1], uc.args[2], uc.args[3]);
|
||||
REPORT_GUEST_ASSERT_2(uc, "MSR = %lx, vector = %lx");
|
||||
return;
|
||||
case UCALL_DONE:
|
||||
break;
|
||||
@ -618,9 +616,7 @@ static void guest_test_hcalls_access(void)
|
||||
|
||||
switch (get_ucall(vcpu, &uc)) {
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s at %s:%ld, arg1 = %lx, arg2 = %lx",
|
||||
(const char *)uc.args[0], __FILE__,
|
||||
uc.args[1], uc.args[2], uc.args[3]);
|
||||
REPORT_GUEST_ASSERT_2(uc, "arg1 = %lx, arg2 = %lx");
|
||||
return;
|
||||
case UCALL_DONE:
|
||||
break;
|
||||
|
@ -145,8 +145,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
switch (get_ucall(vcpu, &uc)) {
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0],
|
||||
__FILE__, uc.args[1]);
|
||||
REPORT_GUEST_ASSERT(uc);
|
||||
/* NOT REACHED */
|
||||
case UCALL_SYNC:
|
||||
break;
|
||||
|
@ -71,8 +71,7 @@ static void handle_sync(struct ucall *uc, struct kvm_clock_data *start,
|
||||
|
||||
static void handle_abort(struct ucall *uc)
|
||||
{
|
||||
TEST_FAIL("%s at %s:%ld", (const char *)uc->args[0],
|
||||
__FILE__, uc->args[1]);
|
||||
REPORT_GUEST_ASSERT(*uc);
|
||||
}
|
||||
|
||||
static void setup_clock(struct kvm_vm *vm, struct test_case *test_case)
|
||||
|
@ -137,9 +137,7 @@ static void enter_guest(struct kvm_vcpu *vcpu)
|
||||
pr_hcall(&uc);
|
||||
break;
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s at %s:%ld, vector = %lu",
|
||||
(const char *)uc.args[0], __FILE__,
|
||||
uc.args[1], uc.args[2]);
|
||||
REPORT_GUEST_ASSERT_1(uc, "vector = %lu");
|
||||
return;
|
||||
case UCALL_DONE:
|
||||
return;
|
||||
|
@ -100,9 +100,7 @@ int main(int argc, char *argv[])
|
||||
testcase = uc.args[1];
|
||||
break;
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s at %s:%ld, testcase = %lx, vector = %ld",
|
||||
(const char *)uc.args[0], __FILE__,
|
||||
uc.args[1], uc.args[2], uc.args[3]);
|
||||
REPORT_GUEST_ASSERT_2(uc, "testcase = %lx, vector = %ld");
|
||||
goto done;
|
||||
case UCALL_DONE:
|
||||
goto done;
|
||||
|
@ -65,9 +65,7 @@ static void run_vcpu(struct kvm_vcpu *vcpu)
|
||||
stage);
|
||||
break;
|
||||
case UCALL_ABORT:
|
||||
TEST_ASSERT(false, "%s at %s:%ld\n\tvalues: %#lx, %#lx",
|
||||
(const char *)uc.args[0], __FILE__,
|
||||
uc.args[1], uc.args[2], uc.args[3]);
|
||||
REPORT_GUEST_ASSERT_2(uc, "values: %#lx, %#lx");
|
||||
default:
|
||||
TEST_ASSERT(false, "Unexpected exit: %s",
|
||||
exit_reason_str(vcpu->run->exit_reason));
|
||||
|
@ -190,8 +190,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
switch (get_ucall(vcpu, &uc)) {
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0],
|
||||
__FILE__, uc.args[1]);
|
||||
REPORT_GUEST_ASSERT(uc);
|
||||
/* NOT REACHED */
|
||||
case UCALL_SYNC:
|
||||
break;
|
||||
|
@ -113,7 +113,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
switch (get_ucall(vcpu, &uc)) {
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s", (const char *)uc.args[0]);
|
||||
REPORT_GUEST_ASSERT(uc);
|
||||
break;
|
||||
/* NOT REACHED */
|
||||
case UCALL_DONE:
|
||||
|
@ -181,8 +181,7 @@ static void run_test(bool is_nmi)
|
||||
|
||||
switch (get_ucall(vcpu, &uc)) {
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s at %s:%ld, vals = 0x%lx 0x%lx 0x%lx", (const char *)uc.args[0],
|
||||
__FILE__, uc.args[1], uc.args[2], uc.args[3], uc.args[4]);
|
||||
REPORT_GUEST_ASSERT_3(uc, "vals = 0x%lx 0x%lx 0x%lx");
|
||||
break;
|
||||
/* NOT REACHED */
|
||||
case UCALL_DONE:
|
||||
|
@ -58,7 +58,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
switch (get_ucall(vcpu, &uc)) {
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s", (const char *)uc.args[0]);
|
||||
REPORT_GUEST_ASSERT(uc);
|
||||
/* NOT REACHED */
|
||||
case UCALL_SYNC:
|
||||
break;
|
||||
|
@ -82,7 +82,7 @@ int main(void)
|
||||
case UCALL_DONE:
|
||||
break;
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s", (const char *)uc.args[0]);
|
||||
REPORT_GUEST_ASSERT(uc);
|
||||
default:
|
||||
TEST_FAIL("Unexpected ucall: %lu", uc.cmd);
|
||||
}
|
||||
|
@ -79,9 +79,7 @@ static void run_vcpu(struct kvm_vcpu *vcpu, int stage)
|
||||
case UCALL_DONE:
|
||||
return;
|
||||
case UCALL_ABORT:
|
||||
TEST_ASSERT(false, "%s at %s:%ld\n" \
|
||||
"\tvalues: %#lx, %#lx", (const char *)uc.args[0],
|
||||
__FILE__, uc.args[1], uc.args[2], uc.args[3]);
|
||||
REPORT_GUEST_ASSERT_2(uc, "values: %#lx, %#lx");
|
||||
default:
|
||||
TEST_ASSERT(false, "Unexpected exit: %s",
|
||||
exit_reason_str(vcpu->run->exit_reason));
|
||||
|
@ -98,9 +98,7 @@ int main(int argc, char *argv[])
|
||||
case UCALL_DONE:
|
||||
break;
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s at %s:%ld : argN+1 = 0x%lx, argN+2 = 0x%lx",
|
||||
(const char *)uc.args[0], __FILE__, uc.args[1],
|
||||
uc.args[2], uc.args[3]);
|
||||
REPORT_GUEST_ASSERT_2(uc, "argN+1 = 0x%lx, argN+2 = 0x%lx");
|
||||
default:
|
||||
TEST_FAIL("Unknown ucall %lu", uc.cmd);
|
||||
}
|
||||
|
@ -400,8 +400,7 @@ static void check_for_guest_assert(struct kvm_vcpu *vcpu)
|
||||
|
||||
if (vcpu->run->exit_reason == KVM_EXIT_IO &&
|
||||
get_ucall(vcpu, &uc) == UCALL_ABORT) {
|
||||
TEST_FAIL("%s at %s:%ld",
|
||||
(const char *)uc.args[0], __FILE__, uc.args[1]);
|
||||
REPORT_GUEST_ASSERT(uc);
|
||||
}
|
||||
}
|
||||
|
||||
@ -610,7 +609,7 @@ static int handle_ucall(struct kvm_vcpu *vcpu)
|
||||
|
||||
switch (get_ucall(vcpu, &uc)) {
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("Guest assertion not met");
|
||||
REPORT_GUEST_ASSERT(uc);
|
||||
break;
|
||||
case UCALL_SYNC:
|
||||
vm_ioctl(vcpu->vm, KVM_X86_SET_MSR_FILTER, &no_filter_deny);
|
||||
|
@ -114,8 +114,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
switch (get_ucall(vcpu, &uc)) {
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0],
|
||||
__FILE__, uc.args[1]);
|
||||
REPORT_GUEST_ASSERT(uc);
|
||||
/* NOT REACHED */
|
||||
case UCALL_SYNC:
|
||||
apic_access_addr = uc.args[1];
|
||||
|
@ -74,7 +74,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
switch (get_ucall(vcpu, &uc)) {
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s", (const char *)uc.args[0]);
|
||||
REPORT_GUEST_ASSERT(uc);
|
||||
/* NOT REACHED */
|
||||
default:
|
||||
TEST_FAIL("Unknown ucall %lu", uc.cmd);
|
||||
|
@ -123,8 +123,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
switch (get_ucall(vcpu, &uc)) {
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0],
|
||||
__FILE__, uc.args[1]);
|
||||
REPORT_GUEST_ASSERT(uc);
|
||||
/* NOT REACHED */
|
||||
case UCALL_SYNC:
|
||||
/*
|
||||
|
@ -98,7 +98,7 @@ int main(int argc, char *argv[])
|
||||
case UCALL_DONE:
|
||||
break;
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s", (const char *)uc.args[0]);
|
||||
REPORT_GUEST_ASSERT(uc);
|
||||
default:
|
||||
TEST_FAIL("Unexpected ucall: %lu", uc.cmd);
|
||||
}
|
||||
|
@ -194,7 +194,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
switch (get_ucall(vcpu, &uc)) {
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s", (const char *) uc.args[0]);
|
||||
REPORT_GUEST_ASSERT(uc);
|
||||
case UCALL_SYNC:
|
||||
switch (uc.args[0]) {
|
||||
case USLEEP:
|
||||
|
@ -189,8 +189,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
switch (get_ucall(vcpu, &uc)) {
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0],
|
||||
__FILE__, uc.args[1]);
|
||||
REPORT_GUEST_ASSERT(uc);
|
||||
/* NOT REACHED */
|
||||
case UCALL_SYNC:
|
||||
break;
|
||||
|
@ -147,7 +147,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
switch (get_ucall(vcpu, &uc)) {
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s", (const char *)uc.args[0]);
|
||||
REPORT_GUEST_ASSERT(uc);
|
||||
/* NOT REACHED */
|
||||
case UCALL_SYNC:
|
||||
report(uc.args[1]);
|
||||
|
@ -542,7 +542,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
switch (get_ucall(vcpu, &uc)) {
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s", (const char *)uc.args[0]);
|
||||
REPORT_GUEST_ASSERT(uc);
|
||||
/* NOT REACHED */
|
||||
case UCALL_SYNC: {
|
||||
struct kvm_xen_vcpu_attr rst;
|
||||
|
@ -129,7 +129,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
switch (get_ucall(vcpu, &uc)) {
|
||||
case UCALL_ABORT:
|
||||
TEST_FAIL("%s", (const char *)uc.args[0]);
|
||||
REPORT_GUEST_ASSERT(uc);
|
||||
/* NOT REACHED */
|
||||
case UCALL_SYNC:
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user