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

Re: [Xen-devel] [PATCH] constify vcpu_set_affinity()'s second parameter



Acked-by: Keir Fraser <keir@xxxxxxx>

On 13/10/2011 08:16, "Jan Beulich" <JBeulich@xxxxxxxx> wrote:

> 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@xxxxxxxx>
> 
> --- a/xen/arch/x86/cpu/mcheck/vmce.c
> +++ b/xen/arch/x86/cpu/mcheck/vmce.c
> @@ -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
> --- a/xen/arch/x86/traps.c
> +++ b/xen/arch/x86/traps.c
> @@ -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
>                   !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));
>              }
>          }
>      }
> --- a/xen/common/schedule.c
> +++ b/xen/common/schedule.c
> @@ -587,9 +587,9 @@ int cpu_disable_scheduler(unsigned int c
>      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, cp
>  
>      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);
>  
> --- a/xen/include/xen/sched.h
> +++ b/xen/include/xen/sched.h
> @@ -617,7 +617,7 @@ void scheduler_free(struct scheduler *sc
>  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);
> 
> 
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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