Skip to content

Commit

Permalink
powerpc/mpic: Cleanup mpic_find() implementation
Browse files Browse the repository at this point in the history
mpic_find() was overloaded to do two things, finding the mpic instance
for a given interrupt and returning if it's an IPI. Instead we introduce
mpic_is_ipi() and simplify mpic_find() to just return the mpic instance

Also silences the warning:
arch/powerpc/sysdev/mpic.c: In function 'mpic_irq_set_priority':
arch/powerpc/sysdev/mpic.c:1382: warning: 'is_ipi' may be used uninitialized in this function

Signed-off-by: Tony Breeds <[email protected]>
Acked-by: Michael Ellerman <[email protected]>
Signed-off-by: Benjamin Herrenschmidt <[email protected]>
  • Loading branch information
tbreeds authored and ozbenh committed May 21, 2009
1 parent 805e324 commit d69a78d
Showing 1 changed file with 11 additions and 12 deletions.
23 changes: 11 additions & 12 deletions arch/powerpc/sysdev/mpic.c
Original file line number Diff line number Diff line change
Expand Up @@ -613,23 +613,23 @@ static int irq_choose_cpu(unsigned int virt_irq)
#define mpic_irq_to_hw(virq) ((unsigned int)irq_map[virq].hwirq)

/* Find an mpic associated with a given linux interrupt */
static struct mpic *mpic_find(unsigned int irq, unsigned int *is_ipi)
static struct mpic *mpic_find(unsigned int irq)
{
unsigned int src = mpic_irq_to_hw(irq);
struct mpic *mpic;

if (irq < NUM_ISA_INTERRUPTS)
return NULL;

mpic = irq_desc[irq].chip_data;
return irq_desc[irq].chip_data;
}

if (is_ipi)
*is_ipi = (src >= mpic->ipi_vecs[0] &&
src <= mpic->ipi_vecs[3]);
/* Determine if the linux irq is an IPI */
static unsigned int mpic_is_ipi(struct mpic *mpic, unsigned int irq)
{
unsigned int src = mpic_irq_to_hw(irq);

return mpic;
return (src >= mpic->ipi_vecs[0] && src <= mpic->ipi_vecs[3]);
}


/* Convert a cpu mask from logical to physical cpu numbers. */
static inline u32 mpic_physmask(u32 cpumask)
{
Expand Down Expand Up @@ -1381,8 +1381,7 @@ void __init mpic_set_serial_int(struct mpic *mpic, int enable)

void mpic_irq_set_priority(unsigned int irq, unsigned int pri)
{
unsigned int is_ipi;
struct mpic *mpic = mpic_find(irq, &is_ipi);
struct mpic *mpic = mpic_find(irq);
unsigned int src = mpic_irq_to_hw(irq);
unsigned long flags;
u32 reg;
Expand All @@ -1391,7 +1390,7 @@ void mpic_irq_set_priority(unsigned int irq, unsigned int pri)
return;

spin_lock_irqsave(&mpic_lock, flags);
if (is_ipi) {
if (mpic_is_ipi(mpic, irq)) {
reg = mpic_ipi_read(src - mpic->ipi_vecs[0]) &
~MPIC_VECPRI_PRIORITY_MASK;
mpic_ipi_write(src - mpic->ipi_vecs[0],
Expand Down

0 comments on commit d69a78d

Please sign in to comment.