]> xenbits.xensource.com Git - xen.git/commit
sched: allow rcu work to happen when syncing cpus in core scheduling
authorJuergen Gross <jgross@suse.com>
Fri, 15 May 2020 14:04:00 +0000 (16:04 +0200)
committerJan Beulich <jbeulich@suse.com>
Fri, 15 May 2020 14:04:00 +0000 (16:04 +0200)
commit4e9c57c4edbabab1b66f965db0203100097944ff
treec37462969bf53f1b6137f6c75f36e7a6fc1854cc
parent142daae09f4ecafb505d21ea9a2203a3392ecc3b
sched: allow rcu work to happen when syncing cpus in core scheduling

With RCU barriers moved from tasklets to normal RCU processing cpu
offlining in core scheduling might deadlock due to cpu synchronization
required by RCU processing and core scheduling concurrently.

Fix that by bailing out from core scheduling synchronization in case
of pending RCU work. Additionally the RCU softirq is now required to
be of higher priority than the scheduling softirqs in order to do
RCU processing before entering the scheduler again, as bailing out from
the core scheduling synchronization requires to raise another softirq
SCHED_SLAVE, which would bypass RCU processing again.

Reported-by: Sergey Dyasli <sergey.dyasli@citrix.com>
Tested-by: Sergey Dyasli <sergey.dyasli@citrix.com>
Signed-off-by: Juergen Gross <jgross@suse.com>
Acked-by: Dario Faggioli <dfaggioli@suse.com>
xen/common/sched/core.c
xen/include/xen/softirq.h