constify vcpu_set_affinity()'s second parameter
authorJan Beulich <jbeulich@suse.com>
Thu, 13 Oct 2011 08:00:13 +0000 (10:00 +0200)
committerJan Beulich <jbeulich@suse.com>
Thu, 13 Oct 2011 08:00:13 +0000 (10:00 +0200)
None of the callers actually make use of the function's returning of
the old affinity through its second parameter, and eliminating this
capability allows some callers to no longer use a local variable here,
reducing their stack footprint significantly when building with large
NR_CPUS.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
xen/arch/x86/cpu/mcheck/vmce.c
xen/arch/x86/traps.c
xen/common/schedule.c
xen/include/xen/sched.h

index 0b8f4ba400db6a79dc521710e654bbea6ede1577..d764d57d20c15657af12985829c92a7fb830c7dd 100644 (file)
@@ -304,7 +304,6 @@ int vmce_wrmsr(u32 msr, u64 val)
 int inject_vmce(struct domain *d)
 {
     int cpu = smp_processor_id();
-    cpumask_t affinity;
 
     /* PV guest and HVM guest have different vMCE# injection methods. */
     if ( !test_and_set_bool(d->vcpu[0]->mce_pending) )
@@ -323,11 +322,9 @@ int inject_vmce(struct domain *d)
             {
                 cpumask_copy(d->vcpu[0]->cpu_affinity_tmp,
                              d->vcpu[0]->cpu_affinity);
-                cpus_clear(affinity);
-                cpu_set(cpu, affinity);
                 mce_printk(MCE_VERBOSE, "MCE: CPU%d set affinity, old %d\n",
                            cpu, d->vcpu[0]->processor);
-                vcpu_set_affinity(d->vcpu[0], &affinity);
+                vcpu_set_affinity(d->vcpu[0], cpumask_of(cpu));
                 vcpu_kick(d->vcpu[0]);
             }
             else
index 0203613b530dcefa2d574a6a3ef45fd12d338b60..e22e6d86fc3881ebfda288d288651b9632c8947e 100644 (file)
@@ -3113,7 +3113,6 @@ static void nmi_mce_softirq(void)
 {
     int cpu = smp_processor_id();
     struct softirq_trap *st = &per_cpu(softirq_trap, cpu);
-    cpumask_t affinity;
 
     BUG_ON(st == NULL);
     BUG_ON(st->vcpu == NULL);
@@ -3129,9 +3128,7 @@ static void nmi_mce_softirq(void)
          * Make sure to wakeup the vcpu on the
          * specified processor.
          */
-        cpus_clear(affinity);
-        cpu_set(st->processor, affinity);
-        vcpu_set_affinity(st->vcpu, &affinity);
+        vcpu_set_affinity(st->vcpu, cpumask_of(st->processor));
 
         /* Affinity is restored in the iret hypercall. */
     }
@@ -3201,14 +3198,11 @@ void async_exception_cleanup(struct vcpu *curr)
                  !test_and_set_bool(curr->mce_pending) )
             {
                 int cpu = smp_processor_id();
-                cpumask_t affinity;
 
                 cpumask_copy(curr->cpu_affinity_tmp, curr->cpu_affinity);
-                cpus_clear(affinity);
-                cpu_set(cpu, affinity);
                 printk(XENLOG_DEBUG "MCE: CPU%d set affinity, old %d\n",
                        cpu, curr->processor);
-                vcpu_set_affinity(curr, &affinity);
+                vcpu_set_affinity(curr, cpumask_of(cpu));
             }
         }
     }
index 105961ed5b287fb58c38477e17837e06629daeaf..e909eec39d2e763ee027267a1333ac442125af05 100644 (file)
@@ -587,9 +587,9 @@ int cpu_disable_scheduler(unsigned int cpu)
     return ret;
 }
 
-int vcpu_set_affinity(struct vcpu *v, cpumask_t *affinity)
+int vcpu_set_affinity(struct vcpu *v, const cpumask_t *affinity)
 {
-    cpumask_t online_affinity, old_affinity;
+    cpumask_t online_affinity;
     cpumask_t *online;
 
     if ( v->domain->is_pinned )
@@ -601,9 +601,7 @@ int vcpu_set_affinity(struct vcpu *v, cpumask_t *affinity)
 
     vcpu_schedule_lock_irq(v);
 
-    cpumask_copy(&old_affinity, v->cpu_affinity);
     cpumask_copy(v->cpu_affinity, affinity);
-    cpumask_copy(affinity, &old_affinity);
     if ( !cpumask_test_cpu(v->processor, v->cpu_affinity) )
         set_bit(_VPF_migrating, &v->pause_flags);
 
index 784bcecdab60fc66447d26dbf4abe9fd6c1bdbe6..4b9dc56cfe1c2d3afcfdfb3ada6af054d020ae21 100644 (file)
@@ -617,7 +617,7 @@ void scheduler_free(struct scheduler *sched);
 int schedule_cpu_switch(unsigned int cpu, struct cpupool *c);
 void vcpu_force_reschedule(struct vcpu *v);
 int cpu_disable_scheduler(unsigned int cpu);
-int vcpu_set_affinity(struct vcpu *v, cpumask_t *affinity);
+int vcpu_set_affinity(struct vcpu *v, const cpumask_t *affinity);
 
 void vcpu_runstate_get(struct vcpu *v, struct vcpu_runstate_info *runstate);
 uint64_t get_cpu_idle_time(unsigned int cpu);