[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Null scheduler and vwfi native problem



On 1/22/21 3:02 PM, Julien Grall wrote:
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,

I applied the patch above. No change. The function complete_domain_destroy function is not call when I destroy the domain.

/Anders




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.