Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:GA
xen.787
554b6589-cpupool-assigning-a-CPU-to-a-pool-can-...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 554b6589-cpupool-assigning-a-CPU-to-a-pool-can-fail.patch of Package xen.787
# Commit d415a81b2245ac4b27f8cbf4e314449ef275333a # Date 2015-05-07 15:15:53 +0200 # Author Dario Faggioli <dario.faggioli@citrix.com> # Committer Jan Beulich <jbeulich@suse.com> cpupool: assigning a CPU to a pool can fail which means such an event must be handled at the call sites of cpupool_assign_cpu_locked(), and the error, if occurring, properly propagated. Signed-off-by: Dario Faggioli <dario.faggioli@citrix.com> Reviewed-by: Juergen Gross <jgross@suse.com> --- a/xen/common/cpupool.c +++ b/xen/common/cpupool.c @@ -457,8 +457,10 @@ void cpupool_rm_domain(struct domain *d) * unless we are resuming from S3, in which case we put the cpu back * in the cpupool it was in prior to suspend. */ -static void cpupool_cpu_add(unsigned int cpu) +static int cpupool_cpu_add(unsigned int cpu) { + int ret = -EINVAL; + spin_lock(&cpupool_lock); cpumask_clear_cpu(cpu, &cpupool_locked_cpus); cpumask_set_cpu(cpu, &cpupool_free_cpus); @@ -471,15 +473,20 @@ static void cpupool_cpu_add(unsigned int { if ( cpumask_test_cpu(cpu, (*c)->cpu_suspended ) ) { - cpupool_assign_cpu_locked(*c, cpu); + ret = cpupool_assign_cpu_locked(*c, cpu); + if ( ret ) + goto out; cpumask_clear_cpu(cpu, (*c)->cpu_suspended); } } } if ( cpumask_test_cpu(cpu, &cpupool_free_cpus) ) - cpupool_assign_cpu_locked(cpupool0, cpu); + ret = cpupool_assign_cpu_locked(cpupool0, cpu); + out: spin_unlock(&cpupool_lock); + + return ret; } /* @@ -703,7 +710,7 @@ static int cpu_callback( { case CPU_DOWN_FAILED: case CPU_ONLINE: - cpupool_cpu_add(cpu); + rc = cpupool_cpu_add(cpu); break; case CPU_DOWN_PREPARE: rc = cpupool_cpu_remove(cpu);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor