[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] xc_hvm_inject_trap() races
>>> 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(). Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |