Hello! Thank you very much, this patch works me too. Maybe this patch will be in the debian kernel someday? Thank you: blackluck Michael Ellerman wrote: On Wed, 2009-06-24 at 15:56 +1000, Benjamin Herrenschmidt wrote:On Wed, 2009-06-24 at 15:53 +1000, Michael Ellerman wrote:Doesn't fix my machine :/That doesn't make sense ... What if you remove the bit inside the ifdef CONFIG_MPIC_BROKEN_REGREAD in _mpic_read() ? If that makes a difference, then it would be interesting to add a printk in there that prints what the original value "val" is and what we have in the shadow...With this patch it boots: diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c index 2353adc..fc17289 100644 --- a/arch/powerpc/sysdev/mpic.c +++ b/arch/powerpc/sysdev/mpic.c @@ -231,13 +231,16 @@ static inline u32 _mpic_irq_read(struct mpic *mpic, unsign unsigned int isu = src_no >> mpic->isu_shift; unsigned int idx = src_no & mpic->isu_mask; unsigned int val; + unsigned int shadow; val = _mpic_read(mpic->reg_type, &mpic->isus[isu], reg + (idx * MPIC_INFO(IRQ_STRIDE))); #ifdef CONFIG_MPIC_BROKEN_REGREAD - if (reg == 0) - val = (val & (MPIC_VECPRI_MASK | MPIC_VECPRI_ACTIVITY)) | + if (reg == 0) { + shadow = (val & (MPIC_VECPRI_MASK | MPIC_VECPRI_ACTIVITY)) | mpic->isu_reg0_shadow[idx]; + printk("%s: val 0x%x shadow 0x%x\n", __func__, val, shadow); + } #endif return val; } And I see: sym53c8xx 0000:00:0c.0: enabling device (0140 -> 0143) sym0: <896> rev 0x7 at pci 0000:00:0c.0 irq 17 sym0: No NVRAM, ID 7, Fast-40, SE, parity checking _mpic_irq_read: val 0x80480004 shadow 0x80080014 _mpic_irq_read: val 0x480004 shadow 0x480004 cheers |
Attachment:
signature.asc
Description: OpenPGP digital signature