[kernel] r9345 - in dists/etch/linux-2.6/debian: . patches/features/all patches/series
Dann Frazier
dannf at alioth.debian.org
Wed Aug 22 05:28:59 UTC 2007
Author: dannf
Date: Wed Aug 22 05:28:59 2007
New Revision: 9345
Log:
add workaround for sb600 hw error
Added:
dists/etch/linux-2.6/debian/patches/features/all/ahci-ignore-sb600-internal-error.patch
Modified:
dists/etch/linux-2.6/debian/changelog
dists/etch/linux-2.6/debian/patches/series/14
Modified: dists/etch/linux-2.6/debian/changelog
==============================================================================
--- dists/etch/linux-2.6/debian/changelog (original)
+++ dists/etch/linux-2.6/debian/changelog Wed Aug 22 05:28:59 2007
@@ -4,13 +4,14 @@
* [bluetooth] Fix panic caused by race between RFCOMM socket layer and
RFCOMM TTY layer. Thanks to Mikko Rapeli. (closes: #394742)
* Add support for AMD/ATI SB700 hardware, see #429622
+ ***THIS PATCH HAS NOT YET BEEN VERIFIED TO FIX THIS BUG***
* Add pci ids for Intel ICH9 controllers, see #435877
* [hppa] remove misuse of global_ack_eiem, fixing a race condition that
resulted in frequent lockups on SMP systems. See: #435878
* Fix intel-agp hang on large memory systems. (closes: #438458)
***THIS PATCH HAS NOT YET BEEN VERIFIED TO FIX THIS BUG***
- -- dann frazier <dannf at debian.org> Mon, 20 Aug 2007 19:16:19 -0600
+ -- dann frazier <dannf at debian.org> Tue, 21 Aug 2007 18:46:53 -0600
linux-2.6 (2.6.18.dfsg.1-13etch1) stable-security; urgency=high
Added: dists/etch/linux-2.6/debian/patches/features/all/ahci-ignore-sb600-internal-error.patch
==============================================================================
--- (empty file)
+++ dists/etch/linux-2.6/debian/patches/features/all/ahci-ignore-sb600-internal-error.patch Wed Aug 22 05:28:59 2007
@@ -0,0 +1,115 @@
+From: Conke Hu <conke.hu at gmail.com>
+Date: Tue, 27 Mar 2007 10:33:05 +0000 (+0800)
+Subject: ahci.c: walkaround for SB600 SATA internal error issue
+X-Git-Tag: v2.6.21~206^2~3
+X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=55a61604cd1354e1783364e1c901034f2f474b7d
+
+ahci.c: walkaround for SB600 SATA internal error issue
+
+ There is a HW issue in ATI SB600 SATA that PxSERR.E should not be
+set on some conditions, for example, when there is no media in SATA
+CD/DVD drive or media is not ready, AHCI controller fails to execute
+ATAPI commands and reports PORT_IRQ_TF_ERR, but ATI SB600 SATA
+controller sets PxSERR.E 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:
+ ----------- cut from dmesg -----------
+ata9: soft resetting port
+ata9: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
+ata9.00: configured for UDMA/33
+ata9: EH complete
+ata9.00: exception Emask 0x40 SAct 0x0 SErr 0x800 action 0x2
+ata9.00: (irq_stat 0x40000001)
+ata9.00: cmd a0/00:00:00:00:20/00:00:00:00:00/a0 tag 0 cdb 0x0 data 0
+ res 51/24:03:00:00:20/00:00:00:00:00/a0 Emask 0x40 (internal error)
+ata9: soft resetting port
+ata9: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
+ata9.00: configured for UDMA/33
+ata9: EH complete
+ata9.00: exception Emask 0x40 SAct 0x0 SErr 0x800 action 0x2
+ata9.00: (irq_stat 0x40000001)
+ata9.00: cmd a0/01:00:00:00:00/00:00:00:00:00/a0 tag 0 cdb 0x43 data 12 in
+ res 51/24:03:00:00:00/00:00:00:00:00/a0 Emask 0x40 (internal error)
+ -------- end cut ---------
+
+Signed-off-by: Conke Hu <conke.hu at amd.com>
+Signed-off-by: Jeff Garzik <jeff at garzik.org>
+---
+
+Backported to Debian's 2.6.18 by dann frazier <dannf at debian.org>
+
+--- linux-source-2.6.18/drivers/scsi/ahci.c.orig 2007-08-21 12:50:10.000000000 -0600
++++ linux-source-2.6.18/drivers/scsi/ahci.c 2007-08-21 18:39:09.000000000 -0600
+@@ -78,6 +78,7 @@ enum {
+
+ board_ahci = 0,
+ board_ahci_vt8251 = 1,
++ board_ahci_sb600 = 2,
+
+ /* global controller registers */
+ HOST_CAP = 0x00, /* host capabilities */
+@@ -168,6 +169,7 @@ enum {
+ /* ap->flags bits */
+ AHCI_FLAG_RESET_NEEDS_CLO = (1 << 24),
+ AHCI_FLAG_NO_NCQ = (1 << 25),
++ AHCI_FLAG_IGN_SERR_INTERNAL = (1 << 27), /* ignore SERR_INTERNAL */
+ };
+
+ struct ahci_cmd_hdr {
+@@ -295,6 +297,18 @@ static const struct ata_port_info ahci_p
+ .udma_mask = 0x7f, /* udma0-6 ; FIXME */
+ .port_ops = &ahci_ops,
+ },
++ /* board_ahci_sb600 */
++ {
++ .sht = &ahci_sht,
++ .flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
++ ATA_FLAG_MMIO | ATA_FLAG_PIO_DMA |
++ ATA_FLAG_SKIP_D2H_BSY |
++ AHCI_FLAG_IGN_SERR_INTERNAL,
++ .pio_mask = 0x1f, /* pio0-4 */
++ .udma_mask = 0x7f, /* udma0-6 ; FIXME */
++ .port_ops = &ahci_ops,
++ },
++
+ };
+
+ static const struct pci_device_id ahci_pci_tbl[] = {
+@@ -344,17 +358,17 @@ static const struct pci_device_id ahci_p
+
+ /* ATI */
+ { PCI_VENDOR_ID_ATI, 0x4380, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+- board_ahci }, /* ATI SB600 non-raid */
++ board_ahci_sb600 }, /* ATI SB600 non-raid */
+ { PCI_VENDOR_ID_ATI, 0x4381, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+ board_ahci }, /* ATI SB600 raid */
+ { PCI_VENDOR_ID_ATI, 0x4390, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+- board_ahci }, /* ATI SB700 IDE */
++ board_ahci_sb600 }, /* ATI SB700 IDE */
+ { PCI_VENDOR_ID_ATI, 0x4391, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+- board_ahci }, /* ATI SB700 AHCI */
++ board_ahci_sb600 }, /* ATI SB700 AHCI */
+ { PCI_VENDOR_ID_ATI, 0x4392, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+- board_ahci }, /* ATI SB700 nraid5 */
++ board_ahci_sb600 }, /* ATI SB700 nraid5 */
+ { PCI_VENDOR_ID_ATI, 0x4393, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+- board_ahci }, /* ATI SB700 raid5 */
++ board_ahci_sb600 }, /* ATI SB700 raid5 */
+
+ /* VIA */
+ { PCI_VENDOR_ID_VIA, 0x3349, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+@@ -993,8 +1007,11 @@ static void ahci_error_intr(struct ata_p
+ /* analyze @irq_stat */
+ ata_ehi_push_desc(ehi, "irq_stat 0x%08x", irq_stat);
+
+- if (irq_stat & PORT_IRQ_TF_ERR)
++ if (irq_stat & PORT_IRQ_TF_ERR) {
+ err_mask |= AC_ERR_DEV;
++ if (ap->flags & AHCI_FLAG_IGN_SERR_INTERNAL)
++ serror &= ~SERR_INTERNAL;
++ }
+
+ if (irq_stat & (PORT_IRQ_HBUS_ERR | PORT_IRQ_HBUS_DATA_ERR)) {
+ err_mask |= AC_ERR_HOST_BUS;
Modified: dists/etch/linux-2.6/debian/patches/series/14
==============================================================================
--- dists/etch/linux-2.6/debian/patches/series/14 (original)
+++ dists/etch/linux-2.6/debian/patches/series/14 Wed Aug 22 05:28:59 2007
@@ -7,4 +7,5 @@
+ features/all/drivers/i2c-piix4-sb600.patch
+ features/all/drivers/i2c-piix4-sb700.patch
+ features/all/drivers/ata_piix-ich9-ide-mode.patch
++ features/all/ahci-ignore-sb600-internal-error.patch
+ bugfix/intel-agp-i965-memory-map.patch
More information about the Kernel-svn-changes
mailing list