mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
genirq/affinity: Handle pre/post vectors in irq_calc_affinity_vectors()
Only calculate the affinity for the main I/O vectors, and skip the pre or post vectors specified by struct irq_affinity. Also remove the irq_affinity cpumask argument that has never been used. If we ever need it in the future we can pass it through struct irq_affinity. Signed-off-by: Christoph Hellwig <[email protected]> Reviewed-by: Hannes Reinecke <[email protected]> Acked-by: Jens Axboe <[email protected]> Cc: [email protected] Cc: [email protected] Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Thomas Gleixner <[email protected]>
This commit is contained in:
parent
20e407e195
commit
212bd84622
3 changed files with 16 additions and 20 deletions
|
|
@ -131,24 +131,20 @@ out:
|
|||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
* irq_calc_affinity_vectors - Calculate the optimal number of vectors
|
||||
* @maxvec: The maximum number of vectors available
|
||||
* @affd: Description of the affinity requirements
|
||||
*/
|
||||
int irq_calc_affinity_vectors(const struct cpumask *affinity, int maxvec)
|
||||
int irq_calc_affinity_vectors(int maxvec, const struct irq_affinity *affd)
|
||||
{
|
||||
int cpus, ret;
|
||||
int resv = affd->pre_vectors + affd->post_vectors;
|
||||
int vecs = maxvec - resv;
|
||||
int cpus;
|
||||
|
||||
/* 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);
|
||||
ret = (cpus < maxvec) ? cpus : maxvec;
|
||||
|
||||
cpus = cpumask_weight(cpu_online_mask);
|
||||
put_online_cpus();
|
||||
return ret;
|
||||
|
||||
return min(cpus, vecs) + resv;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue