[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen staging] sched: fix resuming from S3 with smt=0
commit d7f3c76317108ee9989f00545d394fa495fba752 Author: Juergen Gross <jgross@xxxxxxxx> AuthorDate: Wed Jan 8 14:59:25 2020 +0100 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Wed Jan 8 14:59:25 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> --- 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#staging _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |