* [PATCH] Withdraw IGN_SERR_INTERNAL for SB800 SATA
@ 2008-11-18 9:27 Shane Huang
2008-11-18 16:09 ` Tejun Heo
0 siblings, 1 reply; 5+ messages in thread
From: Shane Huang @ 2008-11-18 9:27 UTC (permalink / raw)
To: jgarzik; +Cc: linux-ide, htejun, shane.huang
There is an issue in ATI SB600/SB700 SATA that PxSERR.E should not be
set on some conditions, which will lead to many SATA ODD error messages.
commit 55a61604cd1354e1783364e1c901034f2f474b7d is the workaround.
Since SB800 fixed this HW issue, IGN_SERR_INTERNAL should be withdrawn
for SB800.
Signed-off-by: Shane Huang <shane.huang@amd.com>
diff -ruN c/drivers/ata/ahci.c d/drivers/ata/ahci.c
--- c/drivers/ata/ahci.c 2008-11-07 11:23:24.000000000 +0800
+++ d/drivers/ata/ahci.c 2008-11-07 11:23:28.000000000 +0800
@@ -105,7 +105,7 @@
board_ahci_ign_iferr = 2,
board_ahci_sb600 = 3,
board_ahci_mv = 4,
- board_ahci_sb700 = 5,
+ board_ahci_sb700 = 5, /* for SB700 and SB800 */
board_ahci_mcp65 = 6,
board_ahci_nopmp = 7,
@@ -439,7 +439,7 @@
.udma_mask = ATA_UDMA6,
.port_ops = &ahci_ops,
},
- /* board_ahci_sb700 */
+ /* board_ahci_sb700, for SB700 and SB800 */
{
AHCI_HFLAGS (AHCI_HFLAG_IGN_SERR_INTERNAL),
.flags = AHCI_FLAG_COMMON,
@@ -2610,6 +2610,10 @@
(pdev->revision == 0xa1 || pdev->revision == 0xa2))
hpriv->flags |= AHCI_HFLAG_NO_MSI;
+ /* SB800 does NOT need the workaround to ignore SERR_INTERNAL */
+ if (board_id == board_ahci_sb700 && pdev->revision >= 0x40)
+ hpriv->flags &= ~AHCI_HFLAG_IGN_SERR_INTERNAL;
+
if ((hpriv->flags & AHCI_HFLAG_NO_MSI) || pci_enable_msi(pdev))
pci_intx(pdev, 1);
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH] Withdraw IGN_SERR_INTERNAL for SB800 SATA
2008-11-18 9:27 [PATCH] Withdraw IGN_SERR_INTERNAL for SB800 SATA Shane Huang
@ 2008-11-18 16:09 ` Tejun Heo
2008-11-19 2:41 ` Huang, Shane
0 siblings, 1 reply; 5+ messages in thread
From: Tejun Heo @ 2008-11-18 16:09 UTC (permalink / raw)
To: Shane Huang; +Cc: jgarzik, linux-ide
Shane Huang wrote:
> There is an issue in ATI SB600/SB700 SATA that PxSERR.E should not be
> set on some conditions, which will lead to many SATA ODD error messages.
> commit 55a61604cd1354e1783364e1c901034f2f474b7d is the workaround.
> Since SB800 fixed this HW issue, IGN_SERR_INTERNAL should be withdrawn
> for SB800.
>
> Signed-off-by: Shane Huang <shane.huang@amd.com>
>
> diff -ruN c/drivers/ata/ahci.c d/drivers/ata/ahci.c
> --- c/drivers/ata/ahci.c 2008-11-07 11:23:24.000000000 +0800
> +++ d/drivers/ata/ahci.c 2008-11-07 11:23:28.000000000 +0800
> @@ -105,7 +105,7 @@
> board_ahci_ign_iferr = 2,
> board_ahci_sb600 = 3,
> board_ahci_mv = 4,
> - board_ahci_sb700 = 5,
> + board_ahci_sb700 = 5, /* for SB700 and SB800 */
> board_ahci_mcp65 = 6,
> board_ahci_nopmp = 7,
>
> @@ -439,7 +439,7 @@
> .udma_mask = ATA_UDMA6,
> .port_ops = &ahci_ops,
> },
> - /* board_ahci_sb700 */
> + /* board_ahci_sb700, for SB700 and SB800 */
> {
> AHCI_HFLAGS (AHCI_HFLAG_IGN_SERR_INTERNAL),
> .flags = AHCI_FLAG_COMMON,
> @@ -2610,6 +2610,10 @@
> (pdev->revision == 0xa1 || pdev->revision == 0xa2))
> hpriv->flags |= AHCI_HFLAG_NO_MSI;
>
> + /* SB800 does NOT need the workaround to ignore SERR_INTERNAL */
> + if (board_id == board_ahci_sb700 && pdev->revision >= 0x40)
> + hpriv->flags &= ~AHCI_HFLAG_IGN_SERR_INTERNAL;
> +
> if ((hpriv->flags & AHCI_HFLAG_NO_MSI) || pci_enable_msi(pdev))
> pci_intx(pdev, 1);
Great, but please use separate board_ahci_* entry. ie.
board_ahci_sb700_ign_serr for the ones with the problem and
board_ahci_sb700 for other sb700s and sb800s.
Thanks.
--
tejun
^ permalink raw reply [flat|nested] 5+ messages in thread* RE: [PATCH] Withdraw IGN_SERR_INTERNAL for SB800 SATA
2008-11-18 16:09 ` Tejun Heo
@ 2008-11-19 2:41 ` Huang, Shane
2008-11-19 2:48 ` Tejun Heo
0 siblings, 1 reply; 5+ messages in thread
From: Huang, Shane @ 2008-11-19 2:41 UTC (permalink / raw)
To: Tejun Heo; +Cc: jgarzik, linux-ide, Huang, Shane
Hi Tejun,
> -----Original Message-----
> From: Tejun Heo [mailto:htejun@gmail.com]
> >
> > + /* SB800 does NOT need the workaround to ignore SERR_INTERNAL */
> > + if (board_id == board_ahci_sb700 && pdev->revision >= 0x40)
> > + hpriv->flags &= ~AHCI_HFLAG_IGN_SERR_INTERNAL;
> > +
> > if ((hpriv->flags & AHCI_HFLAG_NO_MSI) || pci_enable_msi(pdev))
> > pci_intx(pdev, 1);
>
> Great, but please use separate board_ahci_* entry. ie.
> board_ahci_sb700_ign_serr for the ones with the problem and
> board_ahci_sb700 for other sb700s and sb800s.
Thanks for your suggestion.
Different SATA controller revisions with/without the problem have SAME
PCI device ID,
so it's difficult to distinguish them with board_ahci_sb700_ign_serr and
board_ahci_sb700 at the beginning.
Although we can distinguish them in ahci_init_one() and reevaluate
board_id
as well as ent->driver_data, I still suggest we keep my submitted patch
because it seems to be neater. :-)
And I also added some comments for better maintainance like
/* board_ahci_sb700, for SB700 and SB800 */
/* SB800 does NOT need the workaround to ignore SERR_INTERNAL */
It should be much clear to us now...
Thanks
Shane
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] Withdraw IGN_SERR_INTERNAL for SB800 SATA
2008-11-19 2:41 ` Huang, Shane
@ 2008-11-19 2:48 ` Tejun Heo
0 siblings, 0 replies; 5+ messages in thread
From: Tejun Heo @ 2008-11-19 2:48 UTC (permalink / raw)
To: Huang, Shane; +Cc: jgarzik, linux-ide
Huang, Shane wrote:
> Hi Tejun,
>
>
>> -----Original Message-----
>> From: Tejun Heo [mailto:htejun@gmail.com]
>>>
>>> + /* SB800 does NOT need the workaround to ignore SERR_INTERNAL */
>>> + if (board_id == board_ahci_sb700 && pdev->revision >= 0x40)
>>> + hpriv->flags &= ~AHCI_HFLAG_IGN_SERR_INTERNAL;
>>> +
>>> if ((hpriv->flags & AHCI_HFLAG_NO_MSI) || pci_enable_msi(pdev))
>>> pci_intx(pdev, 1);
>> Great, but please use separate board_ahci_* entry. ie.
>> board_ahci_sb700_ign_serr for the ones with the problem and
>> board_ahci_sb700 for other sb700s and sb800s.
>
> Thanks for your suggestion.
>
> Different SATA controller revisions with/without the problem have SAME
> PCI device ID,
> so it's difficult to distinguish them with board_ahci_sb700_ign_serr and
> board_ahci_sb700 at the beginning.
>
> Although we can distinguish them in ahci_init_one() and reevaluate
> board_id
> as well as ent->driver_data, I still suggest we keep my submitted patch
> because it seems to be neater. :-)
>
> And I also added some comments for better maintainance like
> /* board_ahci_sb700, for SB700 and SB800 */
> /* SB800 does NOT need the workaround to ignore SERR_INTERNAL */
> It should be much clear to us now...
Ah.. right, can't match revision. Yeap, then,
Acked-by: Tejun Heo <tj@kernel.org>
Thanks.
--
tejun
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] Withdraw IGN_SERR_INTERNAL for SB800 SATA
@ 2008-12-30 2:53 Shane Huang
0 siblings, 0 replies; 5+ messages in thread
From: Shane Huang @ 2008-12-30 2:53 UTC (permalink / raw)
To: jgarzik, htejun; +Cc: linux-ide, Huang, Shane
Re-sending this patch as Tejun suggested in case Jeff lost it.
=== CUT HERE ===
There is an issue in ATI SB600/SB700 SATA that PxSERR.E should not be
set on some conditions, which will lead to many SATA ODD error messages.
commit 55a61604cd1354e1783364e1c901034f2f474b7d is the workaround.
Since SB800 fixed this HW issue, IGN_SERR_INTERNAL should be withdrawn
for SB800.
Signed-off-by: Shane Huang <shane.huang@amd.com>
diff -ruN c/drivers/ata/ahci.c d/drivers/ata/ahci.c
--- c/drivers/ata/ahci.c 2008-11-07 11:23:24.000000000 +0800
+++ d/drivers/ata/ahci.c 2008-11-07 11:23:28.000000000 +0800
@@ -105,7 +105,7 @@
board_ahci_ign_iferr = 2,
board_ahci_sb600 = 3,
board_ahci_mv = 4,
- board_ahci_sb700 = 5,
+ board_ahci_sb700 = 5, /* for SB700 and SB800 */
board_ahci_mcp65 = 6,
board_ahci_nopmp = 7,
@@ -439,7 +439,7 @@
.udma_mask = ATA_UDMA6,
.port_ops = &ahci_ops,
},
- /* board_ahci_sb700 */
+ /* board_ahci_sb700, for SB700 and SB800 */
{
AHCI_HFLAGS (AHCI_HFLAG_IGN_SERR_INTERNAL),
.flags = AHCI_FLAG_COMMON,
@@ -2610,6 +2610,10 @@
(pdev->revision == 0xa1 || pdev->revision == 0xa2))
hpriv->flags |= AHCI_HFLAG_NO_MSI;
+ /* SB800 does NOT need the workaround to ignore SERR_INTERNAL */
+ if (board_id == board_ahci_sb700 && pdev->revision >= 0x40)
+ hpriv->flags &= ~AHCI_HFLAG_IGN_SERR_INTERNAL;
+
if ((hpriv->flags & AHCI_HFLAG_NO_MSI) || pci_enable_msi(pdev))
pci_intx(pdev, 1);
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-12-30 2:54 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-18 9:27 [PATCH] Withdraw IGN_SERR_INTERNAL for SB800 SATA Shane Huang
2008-11-18 16:09 ` Tejun Heo
2008-11-19 2:41 ` Huang, Shane
2008-11-19 2:48 ` Tejun Heo
-- strict thread matches above, loose matches on Subject: below --
2008-12-30 2:53 Shane Huang
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).