|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 1/3] xen/sched: allow rcu work to happen when syncing cpus in core scheduling
On 07.05.20 20:34, Dario Faggioli wrote: On Thu, 2020-04-30 at 17:15 +0200, Juergen Gross wrote: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@xxxxxxxxxx> Tested-by: Sergey Dyasli <sergey.dyasli@xxxxxxxxxx> Signed-off-by: Juergen Gross <jgross@xxxxxxxx>In general, I'm fine with this patch and it can have my: Acked-by: Dario Faggioli <dfaggioli@xxxxxxxx> I'd ask for one thing, but that doesn't affect the ack, as it's not "my" code. :-) That's reasonable. I was also thinking that, even better than a comment, would be a (build?) BUG_ON if RCU has no smaller value than SCHED_SLAVE and SLAVE. Not here, of course, but maybe close to some piece of code that relies on this assumption. Something that, if I tomorrow put the SCHED* ones on top again, would catch my attention and tell me that I either take care of that code path too, or I can't do it. However, I'm not sure whether, e.g., the other hunk of this patch would be a suitable place for something like this. And I can't, out of the top of my head, think of a really good place for where to put it. Therefore, I'm "only" asking for the comment... but if you (or others) have ideas, that'd be cool. :-) I think the other hunk is exactly where the BUILD_BUG_ON() should be. And this is a perfect place for the comment, too, as its placement will explain the context very well. Juergen
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |