Commit b4dfbfdc authored by Paul Durrant's avatar Paul Durrant Committed by Sean Christopherson

KVM: selftests: re-map Xen's vcpu_info using HVA rather than GPA

If the relevant capability (KVM_XEN_HVM_CONFIG_SHARED_INFO_HVA) is present
then re-map vcpu_info using the HVA part way through the tests to make sure
then there is no functional change.
Signed-off-by: default avatarPaul Durrant <pdurrant@amazon.com>
Reviewed-by: default avatarDavid Woodhouse <dwmw@amazon.co.uk>
Link: https://lore.kernel.org/r/20240215152916.1158-16-paul@xen.orgSigned-off-by: default avatarSean Christopherson <seanjc@google.com>
parent 9397b533
...@@ -62,6 +62,7 @@ enum { ...@@ -62,6 +62,7 @@ enum {
TEST_POLL_TIMEOUT, TEST_POLL_TIMEOUT,
TEST_POLL_MASKED, TEST_POLL_MASKED,
TEST_POLL_WAKE, TEST_POLL_WAKE,
SET_VCPU_INFO,
TEST_TIMER_PAST, TEST_TIMER_PAST,
TEST_LOCKING_SEND_RACE, TEST_LOCKING_SEND_RACE,
TEST_LOCKING_POLL_RACE, TEST_LOCKING_POLL_RACE,
...@@ -321,6 +322,10 @@ static void guest_code(void) ...@@ -321,6 +322,10 @@ static void guest_code(void)
GUEST_SYNC(TEST_POLL_WAKE); GUEST_SYNC(TEST_POLL_WAKE);
/* Set the vcpu_info to point at exactly the place it already is to
* make sure the attribute is functional. */
GUEST_SYNC(SET_VCPU_INFO);
/* A timer wake an *unmasked* port which should wake us with an /* A timer wake an *unmasked* port which should wake us with an
* actual interrupt, while we're polling on a different port. */ * actual interrupt, while we're polling on a different port. */
ports[0]++; ports[0]++;
...@@ -888,6 +893,16 @@ int main(int argc, char *argv[]) ...@@ -888,6 +893,16 @@ int main(int argc, char *argv[])
alarm(1); alarm(1);
break; break;
case SET_VCPU_INFO:
if (has_shinfo_hva) {
struct kvm_xen_vcpu_attr vih = {
.type = KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO_HVA,
.u.hva = (unsigned long)vinfo
};
vcpu_ioctl(vcpu, KVM_XEN_VCPU_SET_ATTR, &vih);
}
break;
case TEST_TIMER_PAST: case TEST_TIMER_PAST:
TEST_ASSERT(!evtchn_irq_expected, TEST_ASSERT(!evtchn_irq_expected,
"Expected event channel IRQ but it didn't happen"); "Expected event channel IRQ but it didn't happen");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment