All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hartvig Ekner <hartvig@ekner.info>
To: Pete Popov <ppopov@mvista.com>
Cc: Linux MIPS mailing list <linux-mips@linux-mips.org>
Subject: Re: Patch to disable PCI coherency on AU1500 platforms
Date: Tue, 01 Apr 2003 22:07:23 +0200	[thread overview]
Message-ID: <3E89F17B.5EFA2E37@ekner.info> (raw)
In-Reply-To: 1049221843.26884.256.camel@zeus.mvista.com

Sure, no problem waiting - I don't have the problem  any more :-) However, if you don't have this
fix in your kernel, you should see massive PCI transfer errors (as I did), which can explain why your "cp -a" fails.
OTOH, I can't explain why you don't see the same problem on the older 2.4.18 kernel you mentioned
was working just fine.

HPT371 also works here (== it boots without crashing midstream during boot) after updating to the
latest CVS with the new IDE code. I will run some stress tests to see if the residual errors (even
with PCI_CFG[NC] set) also occur on this controller, or only on the Promise.

/Hartvig

Pete Popov wrote:

> I have a Pb1500 but like I said, I won't be able to get to it until end
> of the month. I would really like to run some stress tests before
> applying such core patches.  Can you wait until I get back?
>
> Pete
>
> On Tue, 2003-04-01 at 04:30, Hartvig Ekner wrote:
> > The patch below sets the NC bit in the PCI_CFG register to disable HW coherency when
> > running non-coherent. Until now, this bit was cleared which means corruption when using PCI
> > DMA masters, even if the kernel was correctly compiled with CONFIG_NONCOHERENT_IO.
> >
> > Pb1500 specific notes: I don't have a PB1500, so I cannot test if it works there. Note: I also
> > removed what I think was an extraneous write to the PCI_CMEM register, so if somebody
> > could test this on a PB1500 it would be great.
> >
> > /Hartvig
> >
> >
> >
> > ______________________________________________________________________
> >
> > Index: db1x00/setup.c
> > ===================================================================
> > RCS file: /home/cvs/linux/arch/mips/au1000/db1x00/Attic/setup.c,v
> > retrieving revision 1.1.2.4
> > diff -u -r1.1.2.4 setup.c
> > --- db1x00/setup.c    21 Mar 2003 19:00:46 -0000      1.1.2.4
> > +++ db1x00/setup.c    1 Apr 2003 12:14:54 -0000
> > @@ -78,9 +78,8 @@
> >  void __init au1x00_setup(void)
> >  {
> >       char *argptr;
> > -     u32 pin_func, static_cfg0;
> > -     u32 sys_freqctrl, sys_clksrc;
> > -     u32 prid = read_c0_prid();
> > +     u32 pin_func;
> > +//   u32 prid = read_c0_prid();
> >
> >       argptr = prom_getcmdline();
> >
> > @@ -187,6 +186,19 @@
> >
> >  #ifdef CONFIG_BLK_DEV_IDE
> >       ide_ops = &std_ide_ops;
> > +#endif
> > +
> > +#ifdef CONFIG_PCI
> > +     /* Although YAMON has setup the PCI controller, some things
> > +        may need to change. Eventually, all the PCI initialization
> > +        should be done here (as in eg. ../pb1500/setup.c)
> > +     */
> > +
> > +#ifdef CONFIG_NONCOHERENT_IO
> > +     /* Must disable PCI coherency if running non-coherent */
> > +
> > +     au_writel(au_readl(Au1500_PCI_CFG) | (1<<16), Au1500_PCI_CFG);
> > +#endif
> >  #endif
> >
> >  #if 0
> > Index: pb1500/setup.c
> > ===================================================================
> > RCS file: /home/cvs/linux/arch/mips/au1000/pb1500/setup.c,v
> > retrieving revision 1.1.2.12
> > diff -u -r1.1.2.12 setup.c
> > --- pb1500/setup.c    21 Mar 2003 19:00:47 -0000      1.1.2.12
> > +++ pb1500/setup.c    1 Apr 2003 12:14:54 -0000
> > @@ -35,6 +35,7 @@
> >  #include <linux/console.h>
> >  #include <linux/mc146818rtc.h>
> >  #include <linux/delay.h>
> > +#include <linux/proc_fs.h>
> >
> >  #include <asm/cpu.h>
> >  #include <asm/bootinfo.h>
> > @@ -90,6 +91,7 @@
> >       char *argptr;
> >       u32 pin_func, static_cfg0;
> >       u32 sys_freqctrl, sys_clksrc;
> > +     u32 pcicfg;
> >
> >       argptr = prom_getcmdline();
> >
> > @@ -232,15 +234,25 @@
> >
> >  #ifdef CONFIG_PCI
> >       // Setup PCI bus controller
> > -     au_writel(0, Au1500_PCI_CMEM);
> > -     au_writel(0x00003fff, Au1500_CFG_BASE);
> > +
> > +     au_writel(0x00003fff, Au1500_PCI_CMEM);
> > +
> >  #if defined(__MIPSEB__)
> > -     au_writel(0xf | (2<<6) | (1<<4), Au1500_PCI_CFG);
> > +     pcicfg = 0xf | (2<<6) | (1<<4);
> >  #else
> > -     au_writel(0xf, Au1500_PCI_CFG);
> > +     pcicfg = 0xf;
> >  #endif
> > +
> > +#ifdef CONFIG_NONCOHERENT_IO
> > +     /* Must disable PCI coherency if running non-coherent */
> > +
> > +     pcicfg |= (1<<16);
> > +#endif
> > +
> > +     au_writel(pcicfg,     Au1500_PCI_CFG);
> > +
> >       au_writel(0xf0000000, Au1500_PCI_MWMASK_DEV);
> > -     au_writel(0, Au1500_PCI_MWBASE_REV_CCL);
> > +     au_writel(0,          Au1500_PCI_MWBASE_REV_CCL);
> >       au_writel(0x02a00356, Au1500_PCI_STATCMD);
> >       au_writel(0x00003c04, Au1500_PCI_HDRTYPE);
> >       au_writel(0x00000008, Au1500_PCI_MBAR);

  reply	other threads:[~2003-04-01 20:00 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-04-01 12:30 Patch to disable PCI coherency on AU1500 platforms Hartvig Ekner
2003-04-01 18:30 ` Pete Popov
2003-04-01 20:07   ` Hartvig Ekner [this message]
2003-04-01 20:40     ` Pete Popov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3E89F17B.5EFA2E37@ekner.info \
    --to=hartvig@ekner.info \
    --cc=linux-mips@linux-mips.org \
    --cc=ppopov@mvista.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.