All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tejun Heo <htejun@gmail.com>
To: Conke Hu <conke.hu@gmail.com>
Cc: Jeff Garzik <jeff@garzik.org>, Alan <alan@lxorguk.ukuu.org.uk>,
	Andrew Morton <akpm@osdl.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] ahci.c: fix ati sb600 sata IRQ_TF_ERR
Date: Wed, 14 Mar 2007 21:17:45 +0900	[thread overview]
Message-ID: <45F7E7E9.6010703@gmail.com> (raw)
In-Reply-To: <5767b9100703140222k79dbed9dq6419b4f35d276242@mail.gmail.com>

Hello,

Conke Hu wrote:
>    When there is no media in SATA CD/DVD drive or media is not ready,
> AHCI controller fails to execute the ATAPI commands TEST_UNIT_READY,
> READ_CAPACITY or READ_TOC and reports PORT_IRQ_TF_ERR. But ATI SB600
> SATA controller sets SERR_INTERNAL bit in the error register at the
> same time, which is not necessary. This patch is just to ignore the
> INTERNAL ERROR in such case. Without this patch, ahci error handler
> will report many errors as below:

Whoa, SERR_INTERNAL on ATAPI check condition?  Just for fun, here's what
the spec says about SERR_INTERNAL.

E  Internal error: The host bus adapter experienced an internal error
that caused the operation to fail and may have put the host bus adapter
into an error state. Host software should reset the interface before
re-trying the operation. If the condition persists, the host bus adapter
may suffer from a design issue rendering it incompatible with the
attached device.

Anyways thanks for fixing this.  Just a few comments.

> --- linux-2.6.21-rc3-git8/drivers/ata/ahci.c.orig    2007-03-25
> 20:57:31.000000000 +0800
> +++ linux-2.6.21-rc3-git8/drivers/ata/ahci.c    2007-03-25
> 21:03:54.000000000 +0800
> @@ -80,6 +80,7 @@ enum {
>     board_ahci_pi        = 1,
>     board_ahci_vt8251    = 2,
>     board_ahci_ign_iferr    = 3,
> +    board_ahci_ati    = 4,
> 
>     /* global controller registers */
>     HOST_CAP        = 0x00, /* host capabilities */
> @@ -168,6 +169,7 @@ enum {
>     AHCI_FLAG_NO_NCQ        = (1 << 24),
>     AHCI_FLAG_IGN_IRQ_IF_ERR    = (1 << 25), /* ignore IRQ_IF_ERR */
>     AHCI_FLAG_HONOR_PI        = (1 << 26), /* honor PORTS_IMPL */
> +    AHCI_FLAG_TF_ERR_FIX    = (1 << 27), /* ignore INTERNAL ERROR on
> IRQ_TF_ERROR */

Can we use board_ahci_ign_interr and AHCI_FLAG_IGN_SERR_INTERNAL to keep
it more consistent with the other IGN flag?

> -    { PCI_VDEVICE(ATI, 0x4380), board_ahci }, /* ATI SB600 non-raid */
> +    { PCI_VDEVICE(ATI, 0x4380), board_ahci_ati }, /* ATI SB600 non-raid */
>     { PCI_VDEVICE(ATI, 0x4381), board_ahci }, /* ATI SB600 raid */

4381 isn't affected while 4380 is?

Hmmm... Okay, this is weird.  I'm feeling very strong deja vu.

Well, I must be getting alzheimer.  I did almost the same patch a month
ago and was waiting for verification to properly submit the patch.

  http://thread.gmane.org/gmane.linux.ide/16049/focus=16437

Anyways, Conke Hu, can you please take a look at my patch from a month
ago?  It's almost identical but SERR_INTERNAL is always ignored on both
SB600 PCI IDs, which I think is safer.  Does this fix what you're seeing?

Thanks.

-- 
tejun

  reply	other threads:[~2007-03-14 12:17 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-03-14  9:22 [PATCH] ahci.c: fix ati sb600 sata IRQ_TF_ERR Conke Hu
2007-03-14 12:17 ` Tejun Heo [this message]
2007-03-15 12:00   ` Conke Hu
2007-03-15 12:14     ` Tejun Heo
2007-03-27  9:53       ` Conke Hu
2007-08-22 21:02         ` Andreas John
2007-08-22 22:01           ` Andreas John
2007-08-23  0:44             ` Tejun Heo
2007-08-23 11:02             ` Andreas John
2007-08-25  2:24               ` Tejun Heo
2007-08-27  1:31                 ` Tejun Heo
     [not found]                   ` <46DDE7E7.5030605@net-lab.net>
2007-09-07  1:24                     ` Tejun Heo
2007-08-26 10:11               ` Andreas John
2007-08-26 16:02                 ` Ulrich

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=45F7E7E9.6010703@gmail.com \
    --to=htejun@gmail.com \
    --cc=akpm@osdl.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=conke.hu@gmail.com \
    --cc=jeff@garzik.org \
    --cc=linux-kernel@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 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.