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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html