genirq/affinity: Remove old irq spread infrastructure
No more users. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: Christoph Hellwig <hch@lst.de> Cc: axboe@fb.com Cc: keith.busch@intel.com Cc: agordeev@redhat.com Cc: linux-block@vger.kernel.org Link: http://lkml.kernel.org/r/1473862739-15032-5-git-send-email-hch@lst.de Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
Родитель
e75eafb9b0
Коммит
44082fd670
|
@ -278,7 +278,6 @@ extern int irq_set_affinity_hint(unsigned int irq, const struct cpumask *m);
|
||||||
extern int
|
extern int
|
||||||
irq_set_affinity_notifier(unsigned int irq, struct irq_affinity_notify *notify);
|
irq_set_affinity_notifier(unsigned int irq, struct irq_affinity_notify *notify);
|
||||||
|
|
||||||
struct cpumask *irq_create_affinity_mask(unsigned int *nr_vecs);
|
|
||||||
struct cpumask *irq_create_affinity_masks(const struct cpumask *affinity, int nvec);
|
struct cpumask *irq_create_affinity_masks(const struct cpumask *affinity, int nvec);
|
||||||
int irq_calc_affinity_vectors(const struct cpumask *affinity, int maxvec);
|
int irq_calc_affinity_vectors(const struct cpumask *affinity, int maxvec);
|
||||||
|
|
||||||
|
@ -313,12 +312,6 @@ irq_set_affinity_notifier(unsigned int irq, struct irq_affinity_notify *notify)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct cpumask *irq_create_affinity_mask(unsigned int *nr_vecs)
|
|
||||||
{
|
|
||||||
*nr_vecs = 1;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline struct cpumask *
|
static inline struct cpumask *
|
||||||
irq_create_affinity_masks(const struct cpumask *affinity, int nvec)
|
irq_create_affinity_masks(const struct cpumask *affinity, int nvec)
|
||||||
{
|
{
|
||||||
|
|
|
@ -152,61 +152,3 @@ int irq_calc_affinity_vectors(const struct cpumask *affinity, int maxvec)
|
||||||
put_online_cpus();
|
put_online_cpus();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int get_first_sibling(unsigned int cpu)
|
|
||||||
{
|
|
||||||
unsigned int ret;
|
|
||||||
|
|
||||||
ret = cpumask_first(topology_sibling_cpumask(cpu));
|
|
||||||
if (ret < nr_cpu_ids)
|
|
||||||
return ret;
|
|
||||||
return cpu;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Take a map of online CPUs and the number of available interrupt vectors
|
|
||||||
* and generate an output cpumask suitable for spreading MSI/MSI-X vectors
|
|
||||||
* so that they are distributed as good as possible around the CPUs. If
|
|
||||||
* more vectors than CPUs are available we'll map one to each CPU,
|
|
||||||
* otherwise we map one to the first sibling of each socket.
|
|
||||||
*
|
|
||||||
* If there are more vectors than CPUs we will still only have one bit
|
|
||||||
* set per CPU, but interrupt code will keep on assigning the vectors from
|
|
||||||
* the start of the bitmap until we run out of vectors.
|
|
||||||
*/
|
|
||||||
struct cpumask *irq_create_affinity_mask(unsigned int *nr_vecs)
|
|
||||||
{
|
|
||||||
struct cpumask *affinity_mask;
|
|
||||||
unsigned int max_vecs = *nr_vecs;
|
|
||||||
|
|
||||||
if (max_vecs == 1)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
affinity_mask = kzalloc(cpumask_size(), GFP_KERNEL);
|
|
||||||
if (!affinity_mask) {
|
|
||||||
*nr_vecs = 1;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
get_online_cpus();
|
|
||||||
if (max_vecs >= num_online_cpus()) {
|
|
||||||
cpumask_copy(affinity_mask, cpu_online_mask);
|
|
||||||
*nr_vecs = num_online_cpus();
|
|
||||||
} else {
|
|
||||||
unsigned int vecs = 0, cpu;
|
|
||||||
|
|
||||||
for_each_online_cpu(cpu) {
|
|
||||||
if (cpu == get_first_sibling(cpu)) {
|
|
||||||
cpumask_set_cpu(cpu, affinity_mask);
|
|
||||||
vecs++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (--max_vecs == 0)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
*nr_vecs = vecs;
|
|
||||||
}
|
|
||||||
put_online_cpus();
|
|
||||||
|
|
||||||
return affinity_mask;
|
|
||||||
}
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче