[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 |