[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC V2 24/45] xen: let vcpu_create() select processor
>>> On 16.05.19 at 14:46, <jgross@xxxxxxxx> wrote: > On 16/05/2019 14:20, Jan Beulich wrote: >>>>> On 06.05.19 at 08:56, <jgross@xxxxxxxx> wrote: >>> --- a/xen/common/schedule.c >>> +++ b/xen/common/schedule.c >>> @@ -314,14 +314,42 @@ static struct sched_item *sched_alloc_item(struct >>> vcpu *v) >>> return NULL; >>> } >>> >>> -int sched_init_vcpu(struct vcpu *v, unsigned int processor) >>> +static unsigned int sched_select_initial_cpu(struct vcpu *v) >>> +{ >>> + struct domain *d = v->domain; >>> + nodeid_t node; >>> + cpumask_t cpus; >> >> To be honest, I'm not happy to see new on-stack instances of >> cpumask_t appear. Seeing ... >> >>> + cpumask_clear(&cpus); >>> + for_each_node_mask ( node, d->node_affinity ) >>> + cpumask_or(&cpus, &cpus, &node_to_cpumask(node)); >>> + cpumask_and(&cpus, &cpus, cpupool_domain_cpumask(d)); >>> + if ( cpumask_empty(&cpus) ) >>> + cpumask_copy(&cpus, cpupool_domain_cpumask(d)); >> >> ... this fallback you use anyway, is there any issue with it also >> serving the case where zalloc_cpumask_var() fails? > > Either that, or: > > - just fail to create the vcpu in that case, as chances are rather > high e.g. the following arch_vcpu_create() will fail anyway Ah, right, this is for vCPU creation only anyway. > - take the scheduling lock and use cpumask_scratch > - (ab)use one of the available cpumasks in struct sched_unit which > are not in use yet > > My preference would be using cpumask_scratch. I'm actually fine with any of the variants, including that of simply returning -ENOMEM. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |