提交 8b6649c5 编写于 作者: K Kyle McMartin 提交者: Kyle McMartin

parisc: convert cpu_check_affinity to new cpumask api

cpumask arg to the affinity function is now const, sort
that out through the irq_desc implementations.
Signed-off-by: NKyle McMartin <kyle@mcmartin.ca>
上级 9dfe914d
...@@ -49,7 +49,7 @@ extern unsigned long txn_alloc_addr(unsigned int); ...@@ -49,7 +49,7 @@ extern unsigned long txn_alloc_addr(unsigned int);
extern unsigned long txn_affinity_addr(unsigned int irq, int cpu); extern unsigned long txn_affinity_addr(unsigned int irq, int cpu);
extern int cpu_claim_irq(unsigned int irq, struct irq_chip *, void *); extern int cpu_claim_irq(unsigned int irq, struct irq_chip *, void *);
extern int cpu_check_affinity(unsigned int irq, cpumask_t *dest); extern int cpu_check_affinity(unsigned int irq, const struct cpumask *dest);
/* soft power switch support (power.c) */ /* soft power switch support (power.c) */
extern struct tasklet_struct power_tasklet; extern struct tasklet_struct power_tasklet;
......
...@@ -112,7 +112,7 @@ void cpu_end_irq(unsigned int irq) ...@@ -112,7 +112,7 @@ void cpu_end_irq(unsigned int irq)
} }
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
int cpu_check_affinity(unsigned int irq, cpumask_t *dest) int cpu_check_affinity(unsigned int irq, const struct cpumask *dest)
{ {
int cpu_dest; int cpu_dest;
...@@ -126,17 +126,19 @@ int cpu_check_affinity(unsigned int irq, cpumask_t *dest) ...@@ -126,17 +126,19 @@ int cpu_check_affinity(unsigned int irq, cpumask_t *dest)
/* whatever mask they set, we just allow one CPU */ /* whatever mask they set, we just allow one CPU */
cpu_dest = first_cpu(*dest); cpu_dest = first_cpu(*dest);
*dest = cpumask_of_cpu(cpu_dest);
return 0; return cpu_dest;
} }
static void cpu_set_affinity_irq(unsigned int irq, const struct cpumask *dest) static void cpu_set_affinity_irq(unsigned int irq, const struct cpumask *dest)
{ {
if (cpu_check_affinity(irq, dest)) int cpu_dest;
cpu_dest = cpu_check_affinity(irq, dest);
if (cpu_dest < 0)
return; return;
cpumask_copy(&irq_desc[irq].affinity, dest); cpumask_copy(&irq_desc[irq].affinity, &cpumask_of_cpu(cpu_dest));
} }
#endif #endif
......
...@@ -708,11 +708,14 @@ static void iosapic_set_affinity_irq(unsigned int irq, ...@@ -708,11 +708,14 @@ static void iosapic_set_affinity_irq(unsigned int irq,
struct vector_info *vi = iosapic_get_vector(irq); struct vector_info *vi = iosapic_get_vector(irq);
u32 d0, d1, dummy_d0; u32 d0, d1, dummy_d0;
unsigned long flags; unsigned long flags;
int dest_cpu;
if (cpu_check_affinity(irq, dest)) dest_cpu = cpu_check_affinity(irq, dest);
if (dest_cpu < 0)
return; return;
vi->txn_addr = txn_affinity_addr(irq, cpumask_first(dest)); irq_desc[irq].affinity = cpumask_of_cpu(dest_cpu);
vi->txn_addr = txn_affinity_addr(irq, dest_cpu);
spin_lock_irqsave(&iosapic_lock, flags); spin_lock_irqsave(&iosapic_lock, flags);
/* d1 contains the destination CPU, so only want to set that /* d1 contains the destination CPU, so only want to set that
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册