On Wed, Sep 14, 2016 at 04:18:48PM +0200, Christoph Hellwig wrote:
> +/**
> + * irq_calc_affinity_vectors - Calculate to optimal number of vectors for a 
> given affinity mask
> + * @affinity:                The affinity mask to spread. If NULL 
> cpu_online_mask
> + *                   is used
> + * @maxvec:          The maximum number of vectors available
> + */
> +int irq_calc_affinity_vectors(const struct cpumask *affinity, int maxvec)
> +{
> +     int cpus, ret;
> +
> +     /* Stabilize the cpumasks */
> +     get_online_cpus();
> +     /* If the supplied affinity mask is NULL, use cpu online mask */
> +     if (!affinity)
> +             affinity = cpu_online_mask;
> +
> +     cpus = cpumask_weight(affinity);

Should not we consider the result of AND of affinity and cpu_online_mask?

> +     ret = (cpus < maxvec) ? cpus : maxvec;
> +
> +     put_online_cpus();
> +     return ret;
> +}
> +
>  static int get_first_sibling(unsigned int cpu)
>  {
>       unsigned int ret;
> -- 
> 2.1.4
> 

Reply via email to