Skip to content

Commit

Permalink
parisc: convert cpu_check_affinity to new cpumask api
Browse files Browse the repository at this point in the history
cpumask arg to the affinity function is now const, sort
that out through the irq_desc implementations.

Signed-off-by: Kyle McMartin <kyle@mcmartin.ca>
  • Loading branch information
Kyle McMartin authored and Kyle McMartin committed Mar 13, 2009
1 parent 9dfe914 commit 8b6649c
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 8 deletions.
2 changes: 1 addition & 1 deletion arch/parisc/include/asm/irq.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ extern unsigned long txn_alloc_addr(unsigned int);
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_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) */
extern struct tasklet_struct power_tasklet;
Expand Down
12 changes: 7 additions & 5 deletions arch/parisc/kernel/irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ void cpu_end_irq(unsigned int irq)
}

#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;

Expand All @@ -126,17 +126,19 @@ int cpu_check_affinity(unsigned int irq, cpumask_t *dest)

/* whatever mask they set, we just allow one CPU */
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)
{
if (cpu_check_affinity(irq, dest))
int cpu_dest;

cpu_dest = cpu_check_affinity(irq, dest);
if (cpu_dest < 0)
return;

cpumask_copy(&irq_desc[irq].affinity, dest);
cpumask_copy(&irq_desc[irq].affinity, &cpumask_of_cpu(cpu_dest));
}
#endif

Expand Down
7 changes: 5 additions & 2 deletions drivers/parisc/iosapic.c
Original file line number Diff line number Diff line change
Expand Up @@ -708,11 +708,14 @@ static void iosapic_set_affinity_irq(unsigned int irq,
struct vector_info *vi = iosapic_get_vector(irq);
u32 d0, d1, dummy_d0;
unsigned long flags;
int dest_cpu;

if (cpu_check_affinity(irq, dest))
dest_cpu = cpu_check_affinity(irq, dest);
if (dest_cpu < 0)
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);
/* d1 contains the destination CPU, so only want to set that
Expand Down

0 comments on commit 8b6649c

Please sign in to comment.