|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen stable-4.13] sched: fix resuming from S3 with smt=0
commit 3baeeedc9f796f6ef5595c2999a4135f28e1a4ab
Author: Juergen Gross <jgross@xxxxxxxx>
AuthorDate: Wed Jan 15 14:24:09 2020 +0100
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Wed Jan 15 14:24:09 2020 +0100
sched: fix resuming from S3 with smt=0
When resuming from S3 and smt=0 or maxcpus= are specified we must not
do anything in cpu_schedule_callback(). This is not true today for
taking down a cpu during resume.
If anything goes wrong during resume all the scheduler related error
handling is in cpupool.c, so we can just bail out early from
cpu_schedule_callback() when suspending or resuming.
This fixes commit 0763cd2687897b55e7 ("xen/sched: don't disable
scheduler on cpus during suspend").
Reported-by: Marek Marczykowski-Górecki <marmarek@xxxxxxxxxxxxxxxxxxxxxx>
Tested-by: Marek Marczykowski-Górecki <marmarek@xxxxxxxxxxxxxxxxxxxxxx>
Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
Acked-by: George Dunlap <george.dunlap@xxxxxxxxxx>
master commit: d7f3c76317108ee9989f00545d394fa495fba752
master date: 2020-01-08 14:59:25 +0100
---
xen/common/schedule.c | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/xen/common/schedule.c b/xen/common/schedule.c
index e70cc70a65..54a07ff9e8 100644
--- a/xen/common/schedule.c
+++ b/xen/common/schedule.c
@@ -2562,6 +2562,13 @@ static int cpu_schedule_callback(
unsigned int cpu = (unsigned long)hcpu;
int rc = 0;
+ /*
+ * All scheduler related suspend/resume handling needed is done in
+ * cpupool.c.
+ */
+ if ( system_state > SYS_STATE_active )
+ return NOTIFY_DONE;
+
rcu_read_lock(&sched_res_rculock);
/*
@@ -2589,8 +2596,7 @@ static int cpu_schedule_callback(
switch ( action )
{
case CPU_UP_PREPARE:
- if ( system_state != SYS_STATE_resume )
- rc = cpu_schedule_up(cpu);
+ rc = cpu_schedule_up(cpu);
break;
case CPU_DOWN_PREPARE:
rcu_read_lock(&domlist_read_lock);
@@ -2598,13 +2604,10 @@ static int cpu_schedule_callback(
rcu_read_unlock(&domlist_read_lock);
break;
case CPU_DEAD:
- if ( system_state == SYS_STATE_suspend )
- break;
sched_rm_cpu(cpu);
break;
case CPU_UP_CANCELED:
- if ( system_state != SYS_STATE_resume )
- cpu_schedule_down(cpu);
+ cpu_schedule_down(cpu);
break;
default:
break;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13
_______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |