[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] x86/S3: Restore broken vcpu affinity on resume
>>> On 26.03.13 at 18:20, Ben Guthro <benjamin.guthro@xxxxxxxxxx> wrote: > +void restore_vcpu_affinity() > +{ > + struct domain *d; > + struct vcpu *v; > + struct cpupool **c; > + > + for_each_cpupool(c) > + { > + for_each_domain_in_cpupool ( d, *c ) On a second look, I wonder why the two loops above can't be replaced by for_each_domain(), avoiding the need to widen the scopes of the two CPU pool specific items. Furthermore the function could then take a domain pointer (rather than itself looping over all domains), and be called from thaw_domains() right before the call to domain_unpause(). Jan > + { > + for_each_vcpu ( d, v ) > + { > + vcpu_schedule_lock_irq(v); > + > + if (v->affinity_broken) > + { > + printk("Restoring vcpu affinity for domain %d vcpu %d\n", > + v->domain->domain_id, v->vcpu_id); > + cpumask_copy(v->cpu_affinity, v->cpu_affinity_saved); > + v->affinity_broken = 0; > + } > + > + if ( v->processor == smp_processor_id() ) > + { > + set_bit(_VPF_migrating, &v->pause_flags); > + vcpu_schedule_unlock_irq(v); > + vcpu_sleep_nosync(v); > + vcpu_migrate(v); > + } > + else > + { > + vcpu_schedule_unlock_irq(v); > + } > + } > + > + domain_update_node_affinity(d); > + } > + } > +} _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |