Hi Dario, 2015-05-12 10:06 GMT-04:00 Dario Faggioli <dario.faggi...@citrix.com>: > In fact, printing the cpupool's CPU online mask > for each vCPU is just redundant, as that is the > same for all the vCPUs of all the domains in the > same cpupool, while hard affinity is already part > of the output of dumping domains info. > > Instead, print the intersection between hard > affinity and online CPUs, which is --in case of this > scheduler-- the effective affinity always used for > the vCPUs. > > This change also takes the chance to add a scratch > cpumask area, to avoid having to either put one > (more) cpumask_t on the stack, or dynamically > allocate it within the dumping routine. (The former > being bad because hypervisor stack size is limited, > the latter because dynamic allocations can fail, if > the hypervisor was built for a large enough number > of CPUs.) We allocate such scratch area, for all pCPUs, > when the first instance of the RTDS scheduler is > activated and, in order not to loose track/leak it > if other instances are activated in new cpupools, > and when the last instance is deactivated, we (sort > of) refcount it. > > Such scratch area can be used to kill most of the > cpumasks{_var}_t local variables in other functions > in the file, but that is *NOT* done in this chage. > > Finally, convert the file to use keyhandler scratch, > instead of open coded string buffers. > > Signed-off-by: Dario Faggioli <dario.faggi...@citrix.com> > Cc: George Dunlap <george.dun...@eu.citrix.com> > Cc: Meng Xu <xumengpa...@gmail.com> > Cc: Jan Beulich <jbeul...@suse.com> > Cc: Keir Fraser <k...@xen.org> > --- > Changes from v3: > * coding style and '!' vs '==NULL' consistency improved, > as requested during review > > Changes from v2: > * added refcounting, to avoid leaking the scratch cpumasks > * added some ASSERT()s to validate the refcounting > > Changes from v1: > * improved changelog; > * made a local variable to point to the correct > scratch mask, as suggested during review. > --- > xen/common/sched_rt.c | 66 > ++++++++++++++++++++++++++++++++++++++++++------- > 1 file changed, 57 insertions(+), 9 deletions(-) > > diff --git a/xen/common/sched_rt.c b/xen/common/sched_rt.c > index 7c39a9e..59ead57 100644 > --- a/xen/common/sched_rt.c > +++ b/xen/common/sched_rt.c > @@ -124,6 +124,24 @@ > #define TRC_RTDS_BUDGET_REPLENISH TRC_SCHED_CLASS_EVT(RTDS, 4) > #define TRC_RTDS_SCHED_TASKLET TRC_SCHED_CLASS_EVT(RTDS, 5) > > + /* > + * Useful to avoid too many cpumask_var_t on the stack. > + */ > +static cpumask_t **_cpumask_scratch; > +#define cpumask_scratch _cpumask_scratch[smp_processor_id()]
The cpumask_scratch seems never used in this patch.. Did I miss anything? If it's not used in any other places, do we really need this #define? Thanks, Meng ----------- Meng Xu PhD Student in Computer and Information Science University of Pennsylvania http://www.cis.upenn.edu/~mengxu/ _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel