]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blob - src/patches/suse-2.6.27.25/patches.drivers/libata-ahci-Withdraw-IGN_SERR_INTERNAL-for-SB800
Updated xen patches taken from suse.
[people/teissler/ipfire-2.x.git] / src / patches / suse-2.6.27.25 / patches.drivers / libata-ahci-Withdraw-IGN_SERR_INTERNAL-for-SB800
1 From e427fe042cf90c0652eed9a85e57a8fd8af89890 Mon Sep 17 00:00:00 2001
2 From: Shane Huang <shane.huang@amd.com>
3 Date: Tue, 30 Dec 2008 10:53:41 +0800
4 Subject: ahci: Withdraw IGN_SERR_INTERNAL for SB800 SATA
5 References: bnc#449873
6
7 There is an issue in ATI SB600/SB700 SATA that PxSERR.E should not be
8 set on some conditions, which will lead to many SATA ODD error messages.
9 commit 55a61604cd1354e1783364e1c901034f2f474b7d is the workaround.
10 Since SB800 fixed this HW issue, IGN_SERR_INTERNAL should be withdrawn
11 for SB800.
12
13 Signed-off-by: Shane Huang <shane.huang@amd.com>
14 Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
15 Signed-off-by: Tejun Heo <teheo@suse.de>
16 ---
17 drivers/ata/ahci.c | 8 ++++++--
18 1 file changed, 6 insertions(+), 2 deletions(-)
19
20 Index: linux-2.6.27-SLE11_BRANCH/drivers/ata/ahci.c
21 ===================================================================
22 --- linux-2.6.27-SLE11_BRANCH.orig/drivers/ata/ahci.c
23 +++ linux-2.6.27-SLE11_BRANCH/drivers/ata/ahci.c
24 @@ -95,7 +95,7 @@ enum {
25 board_ahci_ign_iferr = 2,
26 board_ahci_sb600 = 3,
27 board_ahci_mv = 4,
28 - board_ahci_sb700 = 5,
29 + board_ahci_sb700 = 5, /* for SB700 and SB800 */
30 board_ahci_mcp65 = 6,
31 board_ahci_nopmp = 7,
32
33 @@ -428,7 +428,7 @@ static const struct ata_port_info ahci_p
34 .udma_mask = ATA_UDMA6,
35 .port_ops = &ahci_ops,
36 },
37 - /* board_ahci_sb700 */
38 + /* board_ahci_sb700, for SB700 and SB800 */
39 {
40 AHCI_HFLAGS (AHCI_HFLAG_IGN_SERR_INTERNAL),
41 .flags = AHCI_FLAG_COMMON,
42 @@ -2631,6 +2631,10 @@ static int ahci_init_one(struct pci_dev
43 (pdev->revision == 0xa1 || pdev->revision == 0xa2))
44 hpriv->flags |= AHCI_HFLAG_NO_MSI;
45
46 + /* SB800 does NOT need the workaround to ignore SERR_INTERNAL */
47 + if (board_id == board_ahci_sb700 && pdev->revision >= 0x40)
48 + hpriv->flags &= ~AHCI_HFLAG_IGN_SERR_INTERNAL;
49 +
50 if ((hpriv->flags & AHCI_HFLAG_NO_MSI) || pci_enable_msi(pdev))
51 pci_intx(pdev, 1);
52