Messages in this thread |  | | Subject | Re: [PATCH 1/7] xen/events: reset affinity of 2-level event initially | From | Julien Grall <> | Date | Sat, 6 Feb 2021 11:20:16 +0000 |
| |
Hi Juergen,
On 06/02/2021 10:49, Juergen Gross wrote: > When creating a new event channel with 2-level events the affinity > needs to be reset initially in order to avoid using an old affinity > from earlier usage of the event channel port. > > The same applies to the affinity when onlining a vcpu: all old > affinity settings for this vcpu must be reset. As percpu events get > initialized before the percpu event channel hook is called, > resetting of the affinities happens after offlining a vcpu (this is > working, as initial percpu memory is zeroed out). > > Cc: stable@vger.kernel.org > Reported-by: Julien Grall <julien@xen.org> > Signed-off-by: Juergen Gross <jgross@suse.com> > --- > drivers/xen/events/events_2l.c | 20 ++++++++++++++++++++ > 1 file changed, 20 insertions(+) > > diff --git a/drivers/xen/events/events_2l.c b/drivers/xen/events/events_2l.c > index da87f3a1e351..23217940144a 100644 > --- a/drivers/xen/events/events_2l.c > +++ b/drivers/xen/events/events_2l.c > @@ -47,6 +47,16 @@ static unsigned evtchn_2l_max_channels(void) > return EVTCHN_2L_NR_CHANNELS; > } > > +static int evtchn_2l_setup(evtchn_port_t evtchn) > +{ > + unsigned int cpu; > + > + for_each_online_cpu(cpu) > + clear_bit(evtchn, BM(per_cpu(cpu_evtchn_mask, cpu)));
The bit corresponding to the event channel can only be set on a single CPU. Could we avoid the loop and instead clear the bit while closing the port?
Cheers,
-- Julien Grall
|  |