Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 243218
b: refs/heads/master
c: f9ba447
h: refs/heads/master
v: v3
  • Loading branch information
Thomas Gleixner committed Mar 28, 2011
1 parent 1a45d73 commit 1382d21
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 50 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 0521c8fbb3da45c2a58cd551ca6e9644983f6028
refs/heads/master: f9ba4475f95b135e6f68e74d59bba92fd35ca835
1 change: 1 addition & 0 deletions trunk/arch/powerpc/platforms/cell/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ config PPC_CELL_COMMON
select PPC_INDIRECT_IO
select PPC_NATIVE
select PPC_RTAS
select IRQ_EDGE_EOI_HANDLER

config PPC_CELL_NATIVE
bool
Expand Down
50 changes: 1 addition & 49 deletions trunk/arch/powerpc/platforms/cell/interrupt.c
Original file line number Diff line number Diff line change
Expand Up @@ -235,54 +235,6 @@ static int iic_host_match(struct irq_host *h, struct device_node *node)
"IBM,CBEA-Internal-Interrupt-Controller");
}

extern int noirqdebug;

static void handle_iic_irq(unsigned int irq, struct irq_desc *desc)
{
struct irq_chip *chip = get_irq_desc_chip(desc);

raw_spin_lock(&desc->lock);

desc->status &= ~(IRQ_REPLAY | IRQ_WAITING);

/*
* If we're currently running this IRQ, or its disabled,
* we shouldn't process the IRQ. Mark it pending, handle
* the necessary masking and go out
*/
if (unlikely((desc->status & (IRQ_INPROGRESS | IRQ_DISABLED)) ||
!desc->action)) {
desc->status |= IRQ_PENDING;
goto out_eoi;
}

kstat_incr_irqs_this_cpu(irq, desc);

/* Mark the IRQ currently in progress.*/
desc->status |= IRQ_INPROGRESS;

do {
struct irqaction *action = desc->action;
irqreturn_t action_ret;

if (unlikely(!action))
goto out_eoi;

desc->status &= ~IRQ_PENDING;
raw_spin_unlock(&desc->lock);
action_ret = handle_IRQ_event(irq, action);
if (!noirqdebug)
note_interrupt(irq, desc, action_ret);
raw_spin_lock(&desc->lock);

} while ((desc->status & (IRQ_PENDING | IRQ_DISABLED)) == IRQ_PENDING);

desc->status &= ~IRQ_INPROGRESS;
out_eoi:
chip->irq_eoi(&desc->irq_data);
raw_spin_unlock(&desc->lock);
}

static int iic_host_map(struct irq_host *h, unsigned int virq,
irq_hw_number_t hw)
{
Expand All @@ -295,7 +247,7 @@ static int iic_host_map(struct irq_host *h, unsigned int virq,
handle_iic_irq);
break;
default:
set_irq_chip_and_handler(virq, &iic_chip, handle_iic_irq);
set_irq_chip_and_handler(virq, &iic_chip, handle_edge_eoi_irq);
}
return 0;
}
Expand Down

0 comments on commit 1382d21

Please sign in to comment.