|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] ioreq process conflict when EVTCHNOP_bind_interdomain hypercall and vcpu pio occur concurrently
I wonder if it is necessary for xen to trigger the event channel pending when
the port related a vcpu port io.
Suppose a scenario as follows:
1) Qemu make a hypercall using codes:
for (i = 0; i < smp_cpus; i++) {
rc = xc_evtchn_bind_interdomain(state->xce_handle, xen_domid,
xen_vcpu_eport(state->shared_page, i));
if (rc == -1) {
fprintf(stderr, "bind interdomain ioctl(shared_page) error %d\n",
errno);
return -1;
}
state->ioreq_local_port[i] = rc;
...
}
2) Xen do_event_channel_op allocate a free port and call evtchn_set_pending to
trigger a evtchn event.
3) Qemu enters main_loop and begin the evtchn event (pio event).
4) The vcpus of a vm begin to trigger real pio exit, and this ioreq_t will
conflict with the one triggered in step 2.
This will certainly cause failures of real port io.
Does anyone here have any suggestions?
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |