On Wed, 2009-06-24 at 07:57 +1000, Benjamin Herrenschmidt wrote: > > I tried on a POWER3 box I have here "IBM,7044-170" and things work fine > > here with current upstream. (I suspect a much smaller machine). > > > > I will really need an actual bisection here... In the meantime, I'll see > > if I can get my hand on one of these machines here. > > Ok so I think we may have found it... looks like > CONFIG_MPIC_BROKEN_REGREAD is what breaks it which is enabled by PA-Semi > support in the .config. > > Can you verify that disabling PA-Semi support removes that option from > your .config and that once removed, it works again ? > > We don't know yet -why- it breaks it, still investigating.
Do the following patch also fix it ? Index: linux-work/arch/powerpc/sysdev/mpic.c =================================================================== --- linux-work.orig/arch/powerpc/sysdev/mpic.c 2009-06-24 09:24:51.000000000 +1000 +++ linux-work/arch/powerpc/sysdev/mpic.c 2009-06-24 09:26:45.000000000 +1000 @@ -230,14 +230,16 @@ static inline u32 _mpic_irq_read(struct { unsigned int isu = src_no >> mpic->isu_shift; unsigned int idx = src_no & mpic->isu_mask; + unsigned int val; + val = _mpic_read(mpic->reg_type, &mpic->isus[isu], + reg + (idx * MPIC_INFO(IRQ_STRIDE))); #ifdef CONFIG_MPIC_BROKEN_REGREAD if (reg == 0) - return mpic->isu_reg0_shadow[idx]; - else + val = (val & (MPIC_VECPRI_MASK | MPIC_VECPRI_ACTIVITY)) | + mpic->isu_reg0_shadow[idx]; #endif - return _mpic_read(mpic->reg_type, &mpic->isus[isu], - reg + (idx * MPIC_INFO(IRQ_STRIDE))); + return val; } static inline void _mpic_irq_write(struct mpic *mpic, unsigned int src_no, @@ -251,7 +253,8 @@ static inline void _mpic_irq_write(struc #ifdef CONFIG_MPIC_BROKEN_REGREAD if (reg == 0) - mpic->isu_reg0_shadow[idx] = value; + mpic->isu_reg0_shadow[idx] = + value & ~(MPIC_VECPRI_MASK | MPIC_VECPRI_ACTIVITY); #endif } -- To UNSUBSCRIBE, email to debian-powerpc-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org