On 01/29/2014 01:16 AM, Jayamohan Kallickal wrote:
> +
> + if (msix_vec) {
> + if (cpu_online(cpu_index))
> + cpumask_set_cpu(cpu_index,
> + &phba->msix_cpu_map[
> + cpu_index].affinity_mask);
> + else
> + cpumask_copy(&phba->msix_cpu_map[
> + cpu_index].affinity_mask,
> + cpu_online_mask);
> +
I think this code works, but I am not sure if this what you wanted to do.
It seems we set num_cpus in find_num_cpus. It can be the number of
online or some driver limited value. We then loop for (i = 0; i <
num_cpus i++). Above, then if the cpu is not online then you just set it
to the online cpu mask instead of a specific cpu.
Is it possible num_cpus can be 7, but it is possible the online cpus are
0 to 5 and 8. So, when you loop the last vec is set to all online cpus
instead of 8 when it is possible to set it to a specific cpu?
Do you want to be doing a for_each_online_cpu to loop instead?
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html