linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
To: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Cc: Geller Sandor <wildy@petra.hos.u-szeged.hu>,
	Andrew Morton <akpm@linux-foundation.org>,
	linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org
Subject: Re: HPT374 IDE problem with 2.6.21.* kernels
Date: Fri, 8 Jun 2007 14:33:24 +0200	[thread overview]
Message-ID: <200706081433.25181.bzolnier@gmail.com> (raw)
In-Reply-To: <46655AEA.4020906@ru.mvista.com>

On Tuesday 05 June 2007, Sergei Shtylyov wrote:
> Hello.
> 
> Bartlomiej Zolnierkiewicz wrote:
> 
> >>>>>>>The log of a typical IDE reset is available here:
> 
> >>>>>>>http://petra.hos.u-szeged.hu/~wildy/syslog.gz
> 
> >>>>>>>This was the worst case: the IDE bus was resetted during the system 
> >>>>>>>boot.
> 
> >>>>>>  Could you try setting HPT374_ALLOW_ATA133_6 to 0 in
> >>>>>>drivers/ide/pci/hpt366.c and rebuild/reboot the kernel?
> 
> >>>>>Hi Sergei,
> 
> >>>>>This looks promising. Using a vanilla 2.6.22-rc3 I was able to reproduce
> >>>>>the problem within a few seconds. With the above modification the 
> >>>>>machine
> >>>>>is running under heavy disk I/O without problems since 30 minutes...
> 
> >>>>Did it fix the problem for good?
> 
> >>>It seems so far. There hasn't been any problem since I've applied the fix.
> 
> >>>>Sergei, do we need to disallow UDMA6 completely on HPT734 or
> >>>>is it only an issue with some problematic devices (=> blacklist)?
> 
> >>    Note that I didn't change what the old code was doing in this regard -- 
> >>although the HPT374 spec does *not* say that UDMA6 is supported, it had been 
> >>enabled. What have *really* changed for HPT374 was:
> 
> >>- in 2.6.20-rc1, the driver switched to using the actual 33 MHz timing table
> >>   instead of the old one, matching 50 MHz (and so, severely underclocked);
> 
> >>- in 2.6.2-rc1, the driver switched from 33 MHz PCI to 66 MHz DPLL clock.
> 
> >>    Disallowing UDMA6 would clock the chip with 50 MHz DPLL, howewer, the 
> 
> > I felt inspired by this explanation (thanks!) and took a look at
> > hpt374-opensource-v2.10 vendor driver.  Here is something interesting:
> 
> > glbdata.c:
> 
> > ...
> > #ifdef CLOCK_66MHZ
> > ULONG setting370_66[] = {
> >         0xd029d5e,  0xd029d26,  0xc829ca6,  0xc829c84,  0xc829c62,
> >         0x2c829d2c, 0x2c829c66, 0x2c829c62,
> >         0x1c829c62, 0x1c9a9c62, 0x1c929c62, 0x1c8e9c62, 0x1c8a9c62,
> >         0x1c8a9c62/*0x1cae9c62*/, 0x1c869c62, 0x1c869c62,
> > };
> > ...
> 
> > hpt366.c:
> 
> > ...
> > static u32 sixty_six_base_hpt37x[] = {
> >         /* XFER_UDMA_6 */       0x1c869c62,
> >         /* XFER_UDMA_5 */       0x1cae9c62,     /* 0x1c8a9c62 */
> > ...
> 
> > So we are using Dual ATA Clock for UDMA5 whereas vendor driver doesn't
> 
>     This is so in all other HPT drivers (and HPT371N datasheet has the same 
> figures -- this chip is the only one supporting UDMA6 and having the default 
> DPLL clock > 50 MHz).  Note that it means that there's no actual UDMA5 since 
> the timing exactly matches that one used for UDMA4.
> 
> > (the only other mode which uses Dual ATA Clock, in both drivers, is rarely
> > used UDMA3).
> 
>     And UDMA4 with 50 MHz clock.
> 
> > Thanks to this UDMA cycle time should be equal 22.5ns instead of 30ns
> > (spec defines it at 16.8ns, ide_timings[] uses 20ns) when using 66 MHz DPLL
> > clock.  In theory everything should play nice but the data manual for HPT374
> 
>     And it does -- on other chips.

My beautiful theory failed... Oh, well... ;)

> > contains weird note that Dual ATA Clock is meant to implement ATA100 read
> > and write at different clocks (there is no more explanation to this).
> 
>     That's the thing that keeps me confused in the other datasheets too -- 
> from my interpretation of their timing figures it seemed to control 2x ATA 
> clock multipler. HPT370 datasheet just gives different timings and SCR2 values 
> for reads/writes in UDMA5 (I've disabled this mode on HPT370 from which the 
> read performance only gained -- not sure if it makes sense to restore the old 
> clock turnaround hack).
> 
> > Geller reported that the problems started after migrating from 2.6.20.7 to
> > 2.6.21.1 (the affected disks are using UDMA5) and at the same time the driver
> > switched from 33 MHz PCI to 66 MHz DPLL clock.  Also the issue is completely
> > fixed by using 50 MHz DPLL clock (UDMA5 timing for 50 MHz DPLL clock is
> > 0x12848242 so UDMA cycle time equals 20ns and is smaller than the one
> > obtained using 66 MHz DPLL clock).
> 
> 
> > It all makes me wonder whether it is really safe to use Dual ATA Clock for
> > UDMA5 and whether we should just be using "the offical" timing instead...
> 
>     Not sure. I had no problems with this on the HPT371N/302 and 371N was 
> clocked by 66 MHz DPLL from the start (its default clock is 75 MHz however).
>     I'm still holding to my hypothesis that HPT374 simply can't tolerate 66 
> MHz DPLL clock, and the UDMA5 timing figures that you've cited seem to prove that.
>     I'm going to post a patch today -- how about completely prohibiting UDMA6 
> on HPT374?

Sounds fine, in case somebody misses it we can introduce something like
hpt374_allow_66mhz_dpll module parameter...

Thanks,
Bart

  parent reply	other threads:[~2007-06-08 13:09 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <Pine.LNX.4.62.0705301112170.1260@petra.hos.u-szeged.hu>
2007-06-01 20:46 ` HPT374 IDE problem with 2.6.21.* kernels Andrew Morton
2007-06-01 20:53   ` Sergei Shtylyov
2007-06-01 21:13     ` Geller Sandor
2007-06-01 21:26       ` Sergei Shtylyov
2007-06-01 22:41         ` Geller Sandor
2007-06-02 23:38           ` Bartlomiej Zolnierkiewicz
2007-06-03 10:37             ` Geller Sandor
2007-06-03 17:36               ` Sergei Shtylyov
2007-06-05  1:00                 ` Bartlomiej Zolnierkiewicz
2007-06-05 12:45                   ` Sergei Shtylyov
2007-06-05 14:14                     ` Sergei Shtylyov
2007-06-08 12:33                     ` Bartlomiej Zolnierkiewicz [this message]
2007-06-09 10:13                       ` Sergei Shtylyov
2007-06-05 20:08                 ` Sergei Shtylyov

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=200706081433.25181.bzolnier@gmail.com \
    --to=bzolnier@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sshtylyov@ru.mvista.com \
    --cc=wildy@petra.hos.u-szeged.hu \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).