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

Re: [Xen-devel] [PATCH 2/3] xen: cpupool: assigning a CPU to a pool can fail



On 05/06/2015 05:10 PM, Dario Faggioli wrote:
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@xxxxxxxxxx>
Cc: Juergen Gross <jgross@xxxxxxxx>
Cc: George Dunlap <George.Dunlap@xxxxxxxxxxxxx>
Cc: Jan Beulich <jbeulich@xxxxxxxx>
Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Cc: Keir Fraser <keir@xxxxxxx>

Reviewed-by: Juergen Gross <jgross@xxxxxxxx>

---
  xen/common/cpupool.c |   15 +++++++++++----
  1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/xen/common/cpupool.c b/xen/common/cpupool.c
index a947c24..cabaccd 100644
--- a/xen/common/cpupool.c
+++ b/xen/common/cpupool.c
@@ -458,8 +458,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);
@@ -472,15 +474,20 @@ static void cpupool_cpu_add(unsigned int cpu)
          {
              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;
  }

  /*
@@ -715,7 +722,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);




_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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