Commit 594a1c27 authored by Colton Lewis's avatar Colton Lewis Committed by Sean Christopherson
Browse files

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: default avatarColton Lewis <coltonlewis@google.com>
Reported-by: default avatarRicardo Koller <ricarkol@google.com>
Fixes: 4e18bccc
Link: https://lore.kernel.org/r/20220615193116.806312-5-coltonlewis@google.com


[sean: convert more TEST_FAIL => REPORT_GUEST_ASSERT instances]
Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
parent ddcb57af
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -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");
+1 −3
Original line number Diff line number Diff line
@@ -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;
+4 −3
Original line number Diff line number Diff line
@@ -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");
+1 −2
Original line number Diff line number Diff line
@@ -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)
+1 −3
Original line number Diff line number Diff line
@@ -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;
Loading