On 21.10.19 11:51, Sergey Dyasli wrote:
Hello,
While testing pv-shim from a snapshot of staging 4.13 branch (with core-
scheduling patches applied), some sort of scheduling issues were uncovered
which usually leads to a guest lockup (sometimes with soft lockup messages
from Linux kernel).
This happens more frequently on SandyBridge CPUs. After enabling
CONFIG_DEBUG in pv-shim, the following assertions failed:
Null scheduler:
Assertion 'lock == get_sched_res(i->res->master_cpu)->schedule_lock'
failed at ...are/xen-dir/xen-root/xen/include/xen/sched-if.h:278
(full crash log: https://paste.debian.net/1108861/ )
Credit1 scheduler:
Assertion 'cpumask_cycle(cpu, unit->cpu_hard_affinity) == cpu' failed at
sched_credit.c:383
(full crash log: https://paste.debian.net/1108862/ )
I'm currently investigation those, but would appreciate any help or
suggestions.
And now a more sane patch to try.
Juergen
>From 205b7622b84bc678f8a0d6ac121dff14439fe331 Mon Sep 17 00:00:00 2001
From: Juergen Gross <jgr...@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeul...@suse.com>
Cc: Andrew Cooper <andrew.coop...@citrix.com>
Cc: Wei Liu <w...@xen.org>
Cc: "Roger Pau Monné" <roger....@citrix.com>
Date: Tue, 22 Oct 2019 11:14:08 +0200
Subject: [PATCH] xen/pvhsim: fix cpu onlining
Since commit 8d3c326f6756d1 ("xen: let vcpu_create() select processor")
the initial processor for all pv-shim vcpus will be 0, as no other cpus
are online when the vcpus are created. Before that commit the vcpus
would have processors set not being online yet, which worked just by
chance.
When the pv-shim vcpu becomes active it will have a hard affinity
not matching its initial processor assignment leading to failing
ASSERT()s or other problems depending on the selected scheduler.
Fix that by redoing the affinity setting after onlining the cpu but
before taking the vcpu up.
Fixes: 8d3c326f6756d1 ("xen: let vcpu_create() select processor")
Reported-by: Sergey Dyasli <sergey.dya...@citrix.com>
Signed-off-by: Juergen Gross <jgr...@suse.com>
---
xen/arch/x86/pv/shim.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/xen/arch/x86/pv/shim.c b/xen/arch/x86/pv/shim.c
index 5edbcd9ac5..4329eaaefe 100644
--- a/xen/arch/x86/pv/shim.c
+++ b/xen/arch/x86/pv/shim.c
@@ -837,6 +837,8 @@ long pv_shim_cpu_up(void *data)
v->vcpu_id, rc);
return rc;
}
+
+ vcpu_set_hard_affinity(v, cpumask_of(v->vcpu_id));
}
wake = test_and_clear_bit(_VPF_down, &v->pause_flags);
--
2.16.4
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel