[PATCH 2.6.11+] ppc32: Make the Powerstack II Pro4000 boot again
Leigh Brown
leigh at solinno.co.uk
Sat Apr 9 21:33:17 EST 2005
On Fri, 8 Apr 2005 07:54:31 -0700 Tom Rini wrote:
> On Fri, Apr 08, 2005 at 12:36:02PM +0100, Leigh Brown wrote:
> > Tom Rini said:
> > > On Wed, Apr 06, 2005 at 03:47:13AM +0200, Christian wrote:
> > >> Tom Rini wrote:
> > >> > Can either of you verify that say 2.6.11.6 w/ "noresidual" on the
> > >> > command-line works? Thanks.
> > >>
> > >> i booted vanilla 2.6.11.6 with noresidual (and "nopresidual" too, as
> > >> Sven sugggested), but the scsi errors did not went away :(
> > >>
> > >> on a side note, and perhaps totally unrelated: i always have
> > >> PROC_PREPRESIDUAL=y in my .config, but i never had /proc/residual as
> > >> promised from the help text.
> > >
> > > Odd. I thought that only happened if you had no residual data at all
> > > (which can happen on Powerstacks, esp if netbooting the kernel). But
> > > in that case the new code shouldn't be hit at all. Leigh?
> >
> > Hi, I'm back from my holidays, and have had a look at this. As I spent
> > lots of time understanding the horrendous mess that was
> > prep_pcibios_fixup(), I'd be loath to back out the changes I made
> > (especially as they work so well for me ;-) ).
> >
> > It turns out that prep_pib_init() is the culprit. Although it would
> > appear to be coded for the non-openpic case, it obviously doesn't work.
> > The old version of prep_pcibios_fixup() only called it if there is an
> > openpic on the machine. We can restore that behaviour with the
> > following patch:
> >
> > --- prep_pci.c.orig 2005-04-08 11:49:25.743718088 +0000
> > +++ prep_pci.c 2005-04-08 12:23:00.541422280 +0000
> > @@ -1245,8 +1245,13 @@
> > pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq);
> > }
> >
> > - /* Setup the Winbond or Via PIB */
> > - prep_pib_init();
> > + /* Setup the Winbond or Via PIB - prep_pib_init() is coded for
> > + * the non-openpic case, but it breaks (at least) the Utah
> > + * (Powerstack II Pro4000), so only call it if we have an
> > + * openpic.
> > + */
> > + if (have_openpic)
> > + prep_pib_init();
> > }
> >
> > static void __init
> >
> > I've no idea even what machines would be affected by this, but it
> > fixes Sven's problem and restores the old behaviour, so that
> > can't be bad.
> >
> > I guess fixing prep_pib_init() would be the better solution but
> > I wouldn't know where to start. If this band-aid is good enough
> > I can submit a proper patch, if you like.
>
> If this works, I'd like to see this get into 2.6.12. Please re-send to
> akpm / this list. Assuming it's just the above:
> Acked-by: Tom Rini <trini at kernel.crashing.org>
On Fri, 8 Apr 2005 08:57:17 -0700, Tom Rini wrote:
> On Fri, Apr 08, 2005 at 05:51:40PM +0200, Christian wrote:
> > Tom Rini wrote:
> > >
> > > If this works, I'd like to see this get into 2.6.12. Please re-send to
> > > akpm / this list. Assuming it's just the above:
> > > Acked-by: Tom Rini <trini at kernel.crashing.org>
> >
> > yes! i just applied Leigh's patch (thanks!) to a pristine 2.6.11.6 and my
> > PReP here booted fine:
> > http://www.nerdbynature.de/bits/hal/2.6.11.6/leigh/
>
> Great. Leigh, can you also submit to gregkh for 2.6.11.7? Thanks.
This patch restores the original behaviour of prep_pcibios_fixup() to
only call prep_pib_init() on machines with an openpic. This allows
the Powerstack II Pro4000 to boot again.
Signed-off-by: Leigh Brown <leigh at solinno.co.uk>
--- linux-2.6/arch/ppc/platforms/prep_pci.c.orig 2005-04-08 16:55:53.336800298 +0200
+++ linux-2.6/arch/ppc/platforms/prep_pci.c 2005-04-08 16:56:01.818070165 +0200
@@ -1245,8 +1245,13 @@
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq);
}
- /* Setup the Winbond or Via PIB */
- prep_pib_init();
+ /* Setup the Winbond or Via PIB - prep_pib_init() is coded for
+ * the non-openpic case, but it breaks (at least) the Utah
+ * (Powerstack II Pro4000), so only call it if we have an
+ * openpic.
+ */
+ if (have_openpic)
+ prep_pib_init();
}
static void __init
More information about the Linuxppc-dev
mailing list