Message ID | ff4c9cc4-c642-2f51-da36-c9883ab65e61@suse.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | evtchn: recent XSAs follow-on | expand |
Hi Jan, On 28/09/2020 12:01, Jan Beulich wrote: > Both evtchn->priority and evtchn->notify_vcpu_id could, prior to recent > locking adjustments, change behind the back of > evtchn_fifo_set_pending(). Neither the queue's priority nor the vCPU's > vcpu_id fields have similar properties, so they seem better suited for > the purpose. In particular they reflect the respective evtchn fields' > values at the time they were used to determine queue and vCPU. > > Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Julien Grall <jgrall@amazon.com> Cheers,
> -----Original Message----- > From: Xen-devel <xen-devel-bounces@lists.xenproject.org> On Behalf Of Jan Beulich > Sent: 28 September 2020 12:02 > To: xen-devel@lists.xenproject.org > Cc: Andrew Cooper <andrew.cooper3@citrix.com>; George Dunlap <George.Dunlap@eu.citrix.com>; Ian > Jackson <iwj@xenproject.org>; Julien Grall <julien@xen.org>; Wei Liu <wl@xen.org>; Stefano Stabellini > <sstabellini@kernel.org> > Subject: [PATCH 10/12] evtchn/fifo: use stable fields when recording "last queue" information > > Both evtchn->priority and evtchn->notify_vcpu_id could, prior to recent > locking adjustments, change behind the back of > evtchn_fifo_set_pending(). Neither the queue's priority nor the vCPU's > vcpu_id fields have similar properties, so they seem better suited for > the purpose. In particular they reflect the respective evtchn fields' > values at the time they were used to determine queue and vCPU. > > Signed-off-by: Jan Beulich <jbeulich@suse.com> > I think these changes make the code clearer anyway. Reviewed-by: Paul Durrant <paul@xen.org> > --- a/xen/common/event_fifo.c > +++ b/xen/common/event_fifo.c > @@ -246,8 +246,8 @@ static void evtchn_fifo_set_pending(stru > /* Moved to a different queue? */ > if ( old_q != q ) > { > - evtchn->last_vcpu_id = evtchn->notify_vcpu_id; > - evtchn->last_priority = evtchn->priority; > + evtchn->last_vcpu_id = v->vcpu_id; > + evtchn->last_priority = q->priority; > > spin_unlock_irqrestore(&old_q->lock, flags); > spin_lock_irqsave(&q->lock, flags); >
On 30.09.2020 09:35, Paul Durrant wrote: >> From: Xen-devel <xen-devel-bounces@lists.xenproject.org> On Behalf Of Jan Beulich >> Sent: 28 September 2020 12:02 >> >> Both evtchn->priority and evtchn->notify_vcpu_id could, prior to recent >> locking adjustments, change behind the back of >> evtchn_fifo_set_pending(). Neither the queue's priority nor the vCPU's >> vcpu_id fields have similar properties, so they seem better suited for >> the purpose. In particular they reflect the respective evtchn fields' >> values at the time they were used to determine queue and vCPU. >> >> Signed-off-by: Jan Beulich <jbeulich@suse.com> > > I think these changes make the code clearer anyway. > > Reviewed-by: Paul Durrant <paul@xen.org> Thanks. With the change of description in the earlier patch, and with this one possibly going in ahead of it, I'll massage the description here somewhat, I guess. Jan
> -----Original Message----- > From: Jan Beulich <jbeulich@suse.com> > Sent: 30 September 2020 09:35 > To: paul@xen.org > Cc: xen-devel@lists.xenproject.org; 'Andrew Cooper' <andrew.cooper3@citrix.com>; 'George Dunlap' > <George.Dunlap@eu.citrix.com>; 'Ian Jackson' <iwj@xenproject.org>; 'Julien Grall' <julien@xen.org>; > 'Wei Liu' <wl@xen.org>; 'Stefano Stabellini' <sstabellini@kernel.org> > Subject: Re: [PATCH 10/12] evtchn/fifo: use stable fields when recording "last queue" information > > On 30.09.2020 09:35, Paul Durrant wrote: > >> From: Xen-devel <xen-devel-bounces@lists.xenproject.org> On Behalf Of Jan Beulich > >> Sent: 28 September 2020 12:02 > >> > >> Both evtchn->priority and evtchn->notify_vcpu_id could, prior to recent > >> locking adjustments, change behind the back of > >> evtchn_fifo_set_pending(). Neither the queue's priority nor the vCPU's > >> vcpu_id fields have similar properties, so they seem better suited for > >> the purpose. In particular they reflect the respective evtchn fields' > >> values at the time they were used to determine queue and vCPU. > >> > >> Signed-off-by: Jan Beulich <jbeulich@suse.com> > > > > I think these changes make the code clearer anyway. > > > > Reviewed-by: Paul Durrant <paul@xen.org> > > Thanks. With the change of description in the earlier patch, and with > this one possibly going in ahead of it, I'll massage the description > here somewhat, I guess. > That's fine. Paul
--- a/xen/common/event_fifo.c +++ b/xen/common/event_fifo.c @@ -246,8 +246,8 @@ static void evtchn_fifo_set_pending(stru /* Moved to a different queue? */ if ( old_q != q ) { - evtchn->last_vcpu_id = evtchn->notify_vcpu_id; - evtchn->last_priority = evtchn->priority; + evtchn->last_vcpu_id = v->vcpu_id; + evtchn->last_priority = q->priority; spin_unlock_irqrestore(&old_q->lock, flags); spin_lock_irqsave(&q->lock, flags);
Both evtchn->priority and evtchn->notify_vcpu_id could, prior to recent locking adjustments, change behind the back of evtchn_fifo_set_pending(). Neither the queue's priority nor the vCPU's vcpu_id fields have similar properties, so they seem better suited for the purpose. In particular they reflect the respective evtchn fields' values at the time they were used to determine queue and vCPU. Signed-off-by: Jan Beulich <jbeulich@suse.com>