Messages in this thread | | | Date | Fri, 21 Mar 2008 11:03:32 -0400 | From | Mark Lord <> | Subject | Re: Linux 2.6.25-rc4 |
| |
Alan Cox wrote: > On Sun, 16 Mar 2008 12:39:43 -0700 (PDT) > Linus Torvalds <torvalds@linux-foundation.org> wrote: > >> >> On Sun, 16 Mar 2008, Alan Cox wrote: >>> No it doesn't. DRQ simply means "drive has more data for the controller >>> if you want it". Interrupts are controlled via IEN and the interrupt line. >> A _lot_ of chips require you to clear the DRQ by taking the data they >> have. > > Almost none and mostly very old ones. I'm not saying we shouldn't do it > (except where it hangs the hardware - hence the FIFO flag) but for the > traces presented and hardware reported it appears to be a bit of a red > herring. > >>> If the drive wants to give us data and we end the transaction that is >>> fine. In practice a tiny few devices crap themselves if we don't. >> More than a few tiny devices from what I remember. It tends to be the >> other way around - most devices do *not* want to get new commands until >> you've finished the previous one by draining the queues. > > Not in my experience having maintained a lot of ATA drivers for a very > long time. In fact the changes for draining the DRQ went into libata only > very recently because it was only when we had a distro sized userbase > with PATA devices that it became apparent that a few corner case problems > remained. ..
Err.. I have a fairly modern PATA drive (160GB seagate 2.5") that gets pissed if we leave DRQ hanging. So it's not just something for old/obsolete drives.
Or maybe it's the also-modern-ish ICH chipset that gets stuck. Whatever.
-ml
| |