Commit d0c6430b authored by Benjamin Herrenschmidt's avatar Benjamin Herrenschmidt Committed by Linus Torvalds

[PATCH] ppc64: Fix new mpic driver on some POWER3

On machines using the "ISU" mecanism for the MPIC, the new driver didn't properly
calculate the new interrupt count when an ISU was added. That would cause later on
failure to request interrupts in the offending range.
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent c7bf5976
...@@ -580,11 +580,13 @@ struct mpic * __init mpic_alloc(unsigned long phys_addr, ...@@ -580,11 +580,13 @@ struct mpic * __init mpic_alloc(unsigned long phys_addr,
void __init mpic_assign_isu(struct mpic *mpic, unsigned int isu_num, void __init mpic_assign_isu(struct mpic *mpic, unsigned int isu_num,
unsigned long phys_addr) unsigned long phys_addr)
{ {
unsigned int isu_first = isu_num * mpic->isu_size;
BUG_ON(isu_num >= MPIC_MAX_ISU); BUG_ON(isu_num >= MPIC_MAX_ISU);
mpic->isus[isu_num] = ioremap(phys_addr, MPIC_IRQ_STRIDE * mpic->isu_size); mpic->isus[isu_num] = ioremap(phys_addr, MPIC_IRQ_STRIDE * mpic->isu_size);
if ((isu_num + mpic->isu_size) > mpic->num_sources) if ((isu_first + mpic->isu_size) > mpic->num_sources)
mpic->num_sources = isu_num + mpic->isu_size; mpic->num_sources = isu_first + mpic->isu_size;
} }
void __init mpic_setup_cascade(unsigned int irq, mpic_cascade_t handler, void __init mpic_setup_cascade(unsigned int irq, mpic_cascade_t handler,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment