[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v7 15/17] vmx: VT-d posted-interrupt core logic handling
On Fri, Sep 18, 2015 at 10:22 AM, Dario Faggioli <dario.faggioli@xxxxxxxxxx> wrote: > On Fri, 2015-09-18 at 00:27 -0600, Jan Beulich wrote: >> > George Dunlap <george.dunlap@xxxxxxxxxx> 09/17/15 4:30 PM >>>The > >> > > > vcpu_block() >> >set(_VPF_blocked) >> >v->arch.block() >> >- Add v to pcpu.pi_blocked_vcpu >> >- NV => pi_wakeup_vector >> >local_events_need_delivery() >> >hvm_vcpu_has_pending_irq() >> > >> >... >> >context_switch(): nothing >> > >> > The other is to do the "blocking" stuff in the context switch >> > (similar >> > to what's done now): >> > >> > vcpu_block() >> >set(_VPF_blocked) >> >local_events_need_delivery() >> >hvm_vcpu_has_pending_irq() >> >... >> > context_switch >> >v->arch.block() >> >- Add v to pcpu.pi_blocked_vcpu >> >- NV => pi_wakeup_vector >> > >> > [...] >> > >> > > > thing I like about the first one is that it makes PI blocking >> > > > the >> > same as normal blocking -- everything happens in the same place; so >> > the >> > code is cleaner and easier to understand. >> > >> > The thing I like about the second one is that it cleverly avoids >> > having >> > to do all the work of adding the vcpu to the list and then >> > searching to >> > remove it if the vcpu in question gets woken up on the way to being >> > blocked. So the code may end up being faster for workloads where >> > that >> > happens frequently. >> >> But wouldn't such an optimization argument apply to some/all other >> blocking ways too? I.e. shouldn't, if we were to go that route, other >> early wakeups get treated equally? >> > Good point, actually. > > However, with "regular blockings" this would probably be less of an > optimization. > > In fact, in PI case, George's solution 2 is, potentially, avoiding > having to switch the descriptor and manipulating the list of blocked > vcpus. > In regular blockings there are no such things. We may be able to avoid > a context switch, but that also depends, AFAICT, on when the interrupt > exactly happens and/or is notified (i.e., before the call to schedule() > as opposed to after that and before the actual __context_switch()). I'm > not saying this wouldn't be better, but it's certainly optimizing less > than in the PI case. > >> Unless that's wrong thinking of mine >> or being implemented that way, I'd clearly favor option 1 for >> consistency >> reasons. >> > As said, me too. Perhaps we can go for option 1, which is simpler, > cleaner and more consistent, considering the current status of the > code. We can always investigate, in future, whether and how to > implement the optimization for all the blockings, if beneficial and fea > sible, or have them diverge, if deemed worthwhile. Sounds like a plan. -George _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |