public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Ross Biro <rossb@google.com>
To: alan@lxorguk.ukuu.org.uk, andre@linux-ide.org, marcelo@conectiva.com.br
Cc: linux-kernel@vger.kernel.org
Subject: PATCH: [2.4.21-pre3] Fix for Promise PIO Lockup
Date: Mon, 13 Jan 2003 17:33:03 -0800	[thread overview]
Message-ID: <3E2368CF.6050608@google.com> (raw)


Newer kernels will lock up when a drive command (SMART, hdparm -I, etc.) 
is issued to a drive connected to a Promise 20265 or 20267 controller 
while the controller is in DMA mode.  The problem appears to be that 
tune_chipset incorrectly clears the high PIO bit thinking that it is a 
"PIO force on" bit.  The documentation I have access to does not seem to 
mention a PIO force bit.  Not changing that bit seems to fix the problem 
with drive commands on a promise controller.

The documentation I have also says the values for the TB and TC 
variables should be the same for all UDMA modes and they are not. 
 However the driver seems to work anyway, so I left them the way they are.

To reproduce this problem make sure your drive is set to a DMA mode, eg 
hdparm -X 67 and then issue a drive command, e.g. hdparm -I.

This problem may also be present in the drivers for other Promise chips.

This change has only been minimally tested.

------ snip here -------
diff -durbB linux-2.4.20-p2/drivers/ide/pci/pdc202xx_old.c 
linux-2.4.20-p3/drivers/ide/pci/pdc202xx_old.c
--- linux-2.4.20-p2/drivers/ide/pci/pdc202xx_old.c    Wed Jan  8 
15:44:11 2003
+++ linux-2.4.20-p3/drivers/ide/pci/pdc202xx_old.c    Fri Jan 10 
15:05:28 2003
@@ -268,7 +268,9 @@
         if ((BP & 0xF0) && (CP & 0x0F)) {
             /* clear DMA modes of upper 842 bits of B Register */
             /* clear PIO forced mode upper 1 bit of B Register */
-            pci_write_config_byte(dev, (drive_pci)|0x01, BP &~0xF0);
+                        /* The documentation I have access to says there
+                           is no PIO forced mode bit. -- RAB 01/10/03 */
+            pci_write_config_byte(dev, (drive_pci)|0x01, BP &~0xE0);
             pci_read_config_byte(dev, (drive_pci)|0x01, &BP);
 
             /* clear DMA modes of lower 8421 bits of C Register */



             reply	other threads:[~2003-01-14  1:25 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-01-14  1:33 Ross Biro [this message]
2003-01-15 14:21 ` PATCH: [2.4.21-pre3] Fix for Promise PIO Lockup Mikael Pettersson

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=3E2368CF.6050608@google.com \
    --to=rossb@google.com \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=andre@linux-ide.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marcelo@conectiva.com.br \
    /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