|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: Null scheduler and vwfi native problem
Hi Dario, On 21/01/2021 23:35, Dario Faggioli wrote: On Thu, 2021-01-21 at 19:40 +0000, Julien Grall wrote:Hi Dario,Hi!On 21/01/2021 18:32, Dario Faggioli wrote:On Thu, 2021-01-21 at 11:54 +0100, Anders Törnqvist wrote:https://lists.xenproject.org/archives/html/xen-devel/2018-09/msg01213.html.Right. Back then, PCI passthrough was involved, if I remember correctly. Is it the case for you as well?PCI passthrough is not yet supported on Arm :). However, the bug was reported with platform device passthrough.Yeah, well... That! Which indeed is not PCI. Sorry for the terminology mismatch. :-)Well, I'll think about it. >Starting the system without "sched=null vwfi=native" does not result in the problem.Ok, how about, if you're up for some more testing: - booting with "sched=null" but not with "vwfi=native" - booting with "sched=null vwfi=native" but not doing the IRQ passthrough that you mentioned above ?I think we can skip the testing as the bug was fully diagnostics back then. Unfortunately, I don't think a patch was ever posted.True. But an hackish debug patch was provided and, back then, it worked. OTOH, Anders seems to be reporting that such a patch did not work here. I also continue to think that we're facing the same or a very similar problem... But I'm curious why applying the patch did not help this time. And that's why I asked for more testing. I wonder if this is because your patch doesn't modify rsinterval. So even if we call force_quiescent_state(), the softirq would only be raised for the current CPU.
I guess the following HACK could confirm the theory:
diff --git a/xen/common/rcupdate.c b/xen/common/rcupdate.c
index a5a27af3def0..50020bc34ddf 100644
--- a/xen/common/rcupdate.c
+++ b/xen/common/rcupdate.c
@@ -250,7 +250,7 @@ static void force_quiescent_state(struct rcu_data *rdp,
{
cpumask_t cpumask;
raise_softirq(RCU_SOFTIRQ);
- if (unlikely(rdp->qlen - rdp->last_rs_qlen > rsinterval)) {
+ if (1 || unlikely(rdp->qlen - rdp->last_rs_qlen > rsinterval)) {
rdp->last_rs_qlen = rdp->qlen;
/*
* Don't send IPI to itself. With irqs disabled,
Cheers,
--
Julien Grall
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |