> -----Original Message-----
> From: Xen-devel <[email protected]> On Behalf Of Jan
> Beulich
> Sent: 28 September 2020 12:02
> To: [email protected]
> Cc: Andrew Cooper <[email protected]>; George Dunlap
> <[email protected]>; Ian
> Jackson <[email protected]>; Julien Grall <[email protected]>; Wei Liu
> <[email protected]>; Stefano Stabellini
> <[email protected]>
> 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 <[email protected]>
>
I think these changes make the code clearer anyway.
Reviewed-by: Paul Durrant <[email protected]>
> --- 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);
>