linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tejun Heo <htejun@gmail.com>
To: Jan Gutter <jang@lucidview.net>
Cc: linux-ide@vger.kernel.org
Subject: Re: ICH7m problem using libata
Date: Wed, 20 Dec 2006 09:18:12 +0900	[thread overview]
Message-ID: <45888144.9070608@gmail.com> (raw)
In-Reply-To: <1165253799.16504.37.camel@laundromat.jangutter.com>

[-- Attachment #1: Type: text/plain, Size: 771 bytes --]

Jan Gutter wrote:
> Our company has recently purchased two Acer 5632WSMi laptops and we're
> running Gentoo x86 unstable on them. The most hindering problem that's
> currently plaguing us is the IDE chipset. 
> 
> Without the combined_mode=libata on the command line, DMA is disabled
> and the hard drive just uses PIO. With libata, it hangs up randomly,
> causing the driver to eventually clock down to PIO mode too.
> 
> I'd be willing to test patches (like really INSANE ones), because the
> laptop's not too critical currently. I can post the full dmesg and lspci
> -vvnn if it might be of use. I have no idea whether this problem has
> been solved or reported before.

Please apply the attached patch over 2.6.19 and report what the kernel says.

Thanks.

-- 
tejun

[-- Attachment #2: patch --]
[-- Type: text/plain, Size: 2496 bytes --]

diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index 02b2b27..bbbec75 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -1433,16 +1433,47 @@ static void ata_eh_report(struct ata_port *ap)
 	}
 
 	for (tag = 0; tag < ATA_MAX_QUEUE; tag++) {
+		static const char *dma_str[] = {
+			[DMA_BIDIRECTIONAL]	= "bidi",
+			[DMA_TO_DEVICE]		= "out",
+			[DMA_FROM_DEVICE]	= "in",
+			[DMA_NONE]		= "",
+		};
 		struct ata_queued_cmd *qc = __ata_qc_from_tag(ap, tag);
+		struct ata_taskfile *cmd = &qc->tf, *res = &qc->result_tf;
+		const u8 *c = qc->cdb;
+		unsigned int nbytes;
 
 		if (!(qc->flags & ATA_QCFLAG_FAILED) || !qc->err_mask)
 			continue;
 
-		ata_dev_printk(qc->dev, KERN_ERR, "tag %d cmd 0x%x "
-			       "Emask 0x%x stat 0x%x err 0x%x (%s)\n",
-			       qc->tag, qc->tf.command, qc->err_mask,
-			       qc->result_tf.command, qc->result_tf.feature,
-			       ata_err_string(qc->err_mask));
+		nbytes = qc->nbytes;
+		if (!nbytes)
+			nbytes = qc->nsect << 9;
+
+		ata_dev_printk(qc->dev, KERN_ERR,
+			"cmd %02x/%02x:%02x:%02x:%02x:%02x/%02x:%02x:%02x:%02x:%02x/%02x "
+			"tag %d cdb 0x%x data %u %s\n         "
+			"res %02x/%02x:%02x:%02x:%02x:%02x/%02x:%02x:%02x:%02x:%02x/%02x "
+			"Emask 0x%x (%s)\n",
+			cmd->command, cmd->feature, cmd->nsect,
+			cmd->lbal, cmd->lbam, cmd->lbah,
+			cmd->hob_feature, cmd->hob_nsect,
+			cmd->hob_lbal, cmd->hob_lbam, cmd->hob_lbah,
+			cmd->device, qc->tag, qc->cdb[0], nbytes,
+			dma_str[qc->dma_dir],
+			res->command, res->feature, res->nsect,
+			res->lbal, res->lbam, res->lbah,
+			res->hob_feature, res->hob_nsect,
+			res->hob_lbal, res->hob_lbam, res->hob_lbah,
+			res->device, qc->err_mask, ata_err_string(qc->err_mask));
+
+		ata_dev_printk(qc->dev, KERN_ERR,
+			       "CDB: %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x "
+			       "%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x p=%d\n",
+			       c[0], c[1], c[2], c[3], c[4], c[5], c[6], c[7],
+			       c[8], c[9], c[10], c[11], c[12], c[13], c[14], c[15],
+			       cmd->protocol);
 	}
 }
 
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index 3ac4890..f018e49 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -191,6 +191,7 @@ int scsi_execute(struct scsi_device *sdev, const unsigned char *cmd,
 		goto out;
 
 	req->cmd_len = COMMAND_SIZE(cmd[0]);
+	memset(req->cmd, 0, BLK_MAX_CDB); /* ATAPI hates garbage after CDB */
 	memcpy(req->cmd, cmd, req->cmd_len);
 	req->sense = sense;
 	req->sense_len = 0;

  reply	other threads:[~2006-12-20  0:18 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-12-04 17:36 ICH7m problem using libata Jan Gutter
2006-12-20  0:18 ` Tejun Heo [this message]
2007-01-03  3:07   ` Matthew Stapleton
2007-01-03  3:44     ` Tejun Heo
2007-01-09 22:17       ` Matthew Stapleton
2007-01-15  5:20         ` Tejun Heo
2007-01-15 23:58           ` Matthew Stapleton
2007-01-16  8:56             ` Tejun Heo
2007-01-16 11:31               ` Jan Gutter
2007-01-16 11:42                 ` Tejun Heo
2007-01-16 13:53                   ` Jan Gutter
2007-01-17  5:11                     ` Tejun Heo
2007-01-17 13:25                       ` Jan Gutter
2007-01-17 13:41                         ` Tejun Heo
2007-01-18  2:13                           ` Matthew Stapleton
  -- strict thread matches above, loose matches on Subject: below --
2006-12-19  0:40 Matthew Stapleton
2007-01-16 14:11 Mikael Pettersson
2007-01-16 14:51 ` Jan Gutter

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=45888144.9070608@gmail.com \
    --to=htejun@gmail.com \
    --cc=jang@lucidview.net \
    --cc=linux-ide@vger.kernel.org \
    /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).