Messages in this thread |  | | Subject | Re: [PATCH 1/7] xen/events: reset affinity of 2-level event initially | From | Jürgen Groß <> | Date | Sat, 6 Feb 2021 13:09:19 +0100 |
| |
On 06.02.21 12:20, Julien Grall wrote: > 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?
This would need another callback.
Juergen
[unhandled content-type:application/pgp-keys][unhandled content-type:application/pgp-signature] |  |