cpumask: make irq_set_affinity() take a const struct cpumask
Impact: change existing irq_chip API Not much point with gentle transition here: the struct irq_chip's setaffinity method signature needs to change. Fortunately, not widely used code, but hits a few architectures. Note: In irq_select_affinity() I save a temporary in by mangling irq_desc[irq].affinity directly. Ingo, does this break anything? (Folded in fix from KOSAKI Motohiro) Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Mike Travis <travis@sgi.com> Reviewed-by: Grant Grundler <grundler@parisc-linux.org> Acked-by: Ingo Molnar <mingo@redhat.com> Cc: ralf@linux-mips.org Cc: grundler@parisc-linux.org Cc: jeremy@xensource.com Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
This commit is contained in:
@@ -133,7 +133,6 @@ unsigned int vectors_in_migration[NR_IRQS];
|
||||
*/
|
||||
static void migrate_irqs(void)
|
||||
{
|
||||
cpumask_t mask;
|
||||
irq_desc_t *desc;
|
||||
int irq, new_cpu;
|
||||
|
||||
@@ -152,15 +151,14 @@ static void migrate_irqs(void)
|
||||
if (desc->status == IRQ_PER_CPU)
|
||||
continue;
|
||||
|
||||
cpus_and(mask, irq_desc[irq].affinity, cpu_online_map);
|
||||
if (any_online_cpu(mask) == NR_CPUS) {
|
||||
if (cpumask_any_and(&irq_desc[irq].affinity, cpu_online_mask)
|
||||
>= nr_cpu_ids) {
|
||||
/*
|
||||
* Save it for phase 2 processing
|
||||
*/
|
||||
vectors_in_migration[irq] = irq;
|
||||
|
||||
new_cpu = any_online_cpu(cpu_online_map);
|
||||
mask = cpumask_of_cpu(new_cpu);
|
||||
|
||||
/*
|
||||
* Al three are essential, currently WARN_ON.. maybe panic?
|
||||
@@ -168,7 +166,8 @@ static void migrate_irqs(void)
|
||||
if (desc->chip && desc->chip->disable &&
|
||||
desc->chip->enable && desc->chip->set_affinity) {
|
||||
desc->chip->disable(irq);
|
||||
desc->chip->set_affinity(irq, mask);
|
||||
desc->chip->set_affinity(irq,
|
||||
cpumask_of(new_cpu));
|
||||
desc->chip->enable(irq);
|
||||
} else {
|
||||
WARN_ON((!(desc->chip) || !(desc->chip->disable) ||
|
||||
|
Reference in New Issue
Block a user