<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-2" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Hello!<br>
<br>
Thank you very much, this patch works me too.<br>
<br>
Maybe this patch will be in the debian kernel someday?<br>
<br>
Thank you: blackluck<br>
<br>
Michael Ellerman wrote:
<blockquote cite="mid:1245824392.9237.85.camel@concordia" type="cite">
  <pre wrap="">On Wed, 2009-06-24 at 15:56 +1000, Benjamin Herrenschmidt wrote:
  </pre>
  <blockquote type="cite">
    <pre wrap="">On Wed, 2009-06-24 at 15:53 +1000, Michael Ellerman wrote:
    </pre>
    <blockquote type="cite">
      <pre wrap="">Doesn't fix my machine :/

      </pre>
    </blockquote>
    <pre wrap="">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...
    </pre>
  </blockquote>
  <pre wrap=""><!---->
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 &gt;&gt; mpic-&gt;isu_shift;
        unsigned int    idx = src_no &amp; mpic-&gt;isu_mask;
        unsigned int    val;
+       unsigned int    shadow;
 
        val = _mpic_read(mpic-&gt;reg_type, &amp;mpic-&gt;isus[isu],
                         reg + (idx * MPIC_INFO(IRQ_STRIDE)));  
 #ifdef CONFIG_MPIC_BROKEN_REGREAD
-       if (reg == 0)
-               val = (val &amp; (MPIC_VECPRI_MASK | MPIC_VECPRI_ACTIVITY)) |
+       if (reg == 0) {
+               shadow = (val &amp; (MPIC_VECPRI_MASK | MPIC_VECPRI_ACTIVITY)) |
                        mpic-&gt;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 -&gt; 0143)
sym0: &lt;896&gt; 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
  </pre>
</blockquote>
</body>
</html>