[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 1/3] xen/sched: introduce cpupool_update_node_affinity()
On 15.08.2022 13:04, Juergen Gross wrote: > For updating the node affinities of all domains in a cpupool add a new > function cpupool_update_node_affinity(). > > In order to avoid multiple allocations of cpumasks carve out memory > allocation and freeing from domain_update_node_affinity() into new > helpers, which can be used by cpupool_update_node_affinity(). > > Modify domain_update_node_affinity() to take an additional parameter > for passing the allocated memory in and to allocate and free the memory > via the new helpers in case NULL was passed. > > This will help later to pre-allocate the cpumasks in order to avoid > allocations in stop-machine context. > > Signed-off-by: Juergen Gross <jgross@xxxxxxxx> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> with the observation that ... > --- a/xen/common/sched/core.c > +++ b/xen/common/sched/core.c > @@ -1824,9 +1824,28 @@ int vcpu_affinity_domctl(struct domain *d, uint32_t > cmd, > return ret; > } > > -void domain_update_node_affinity(struct domain *d) > +bool update_node_aff_alloc(struct affinity_masks *affinity) > { > - cpumask_var_t dom_cpumask, dom_cpumask_soft; > + if ( !alloc_cpumask_var(&affinity->hard) ) > + return false; > + if ( !alloc_cpumask_var(&affinity->soft) ) > + { > + free_cpumask_var(affinity->hard); > + return false; > + } > + > + return true; > +} > + > +void update_node_aff_free(struct affinity_masks *affinity) > +{ > + free_cpumask_var(affinity->soft); > + free_cpumask_var(affinity->hard); > +} > + > +void domain_update_node_aff(struct domain *d, struct affinity_masks > *affinity) > +{ > + struct affinity_masks masks = { }; ... the initializer doesn't really look to be needed here, just like you don't have one in cpupool_update_node_affinity(). The one thing I'm not sure about is whether old gcc might mis-report a potentially uninitialized variable with the initializer dropped ... Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |