[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] xc_hvm_inject_trap() races
On 11/08/2016 10:15 AM, Jan Beulich wrote: >>>> On 07.11.16 at 18:01, <rcojocaru@xxxxxxxxxxxxxxx> wrote: >> On 11/07/2016 06:10 PM, Jan Beulich wrote: >>>>>> On 07.11.16 at 16:24, <rcojocaru@xxxxxxxxxxxxxxx> wrote: >>>> The one-shot vm_event does sound reasonable. I could set a flag >>>> per-VCPU, basically similar to v->arch.hvm_vcpu.inject_trap.vector, and >>>> fire a single event from hvm_inject_trap() if it's set (then unset it) - >>>> the flag would be set via an xc_monitor_next_interrupt() call in libxc. >>> >>> Doing this in hvm_inject_trap() would not cover all cases afict. >>> I'd suggest doing this from hvm_do_resume() _after_ the >>> (conditional) call to hvm_inject_trap(), if there is _any_ event >>> pending. >> >> But that would only cover the hypercall-injected traps. The condition in >> hvm_do_resume() is "if ( v->arch.hvm_vcpu.inject_trap.vector != -1 )", >> and inject_trap.vector seems to only ever be set by the hypercall: >> [...] >> So if the next interrupt is not caused by the hypercall, we'll never get >> another event. Am I reading the code wrong? > > No, maybe I expressed myself ambiguously: I meant to say that the > event should be delivered from hvm_do_resume(), but _outside_ the > conditional guarding the call to hvm_inject_trap(). Otherwise things > would have been worse than when doing it inside hvm_inject_trap(). Right, definitely, I'll do that. Thanks, Razvan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |