From: Greg KH <gregkh@suse.de>
To: linux-kernel@vger.kernel.org, stable@kernel.org
Cc: stable-review@kernel.org, torvalds@linux-foundation.org,
akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk,
Mikulas Patocka <mpatocka@redhat.com>,
"David S. Miller" <davem@davemloft.net>
Subject: [43/90] ide: Serialize CMD643 and CMD646 to fix a hardware bug with SSD
Date: Wed, 16 Dec 2009 17:14:54 -0800 [thread overview]
Message-ID: <20091217011603.486845303@mini.kroah.org> (raw)
In-Reply-To: <20091217011835.GA20434@kroah.com>
2.6.31-stable review patch. If anyone has any objections, please let us know.
------------------
From: Mikulas Patocka <mpatocka@redhat.com>
[ Upstream commit 9bd7496f5dd488e109e91d9d5743915fb4dfbfde ]
CMD646 corrupts data on concurrent transfers on both channels when IDE SSD is
connected to one of the channels.
Setup that demonstrates this hardware bug: Ultra 5, onboard CMD646, rev 3.
/dev/hda is 8GB Seagate ST38410A in MWDMA2
/dev/hdd is 32GB SSD SiliconHardDisk in MWDMA2
- When reading /dev/hdd (for example with dd or fsck), reads from /dev/hda
are corrupted, there are twiddled single bits 1->0 and some full 32-bit
words corrupted, sometimes commands fail (which switches /dev/hda to
PIO mode but the corruptions happen even in PIO).
- Reads from /dev/hdd don't seem to be corrupted (i.e. fsck passes fine).
- When I connected normal rotating harddisk to /dev/hdd, there was no
corruption, so the corruption is something specific to SSD.
- I tried the same setup on a PCI card with CMD649 and saw no corruption.
This patch serializes the operation for CMD646 and 643 (I didn't test
CMD643 but it may have the same hw bug too because it's earlier design).
CMD649 is good. I don't know anything about CMD 648.
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Tested-by: Frans Pop <elendil@planet.nl>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/ide/cmd64x.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
--- a/drivers/ide/cmd64x.c
+++ b/drivers/ide/cmd64x.c
@@ -379,7 +379,8 @@ static const struct ide_port_info cmd64x
.enablebits = {{0x00,0x00,0x00}, {0x51,0x08,0x08}},
.port_ops = &cmd64x_port_ops,
.host_flags = IDE_HFLAG_CLEAR_SIMPLEX |
- IDE_HFLAG_ABUSE_PREFETCH,
+ IDE_HFLAG_ABUSE_PREFETCH |
+ IDE_HFLAG_SERIALIZE,
.pio_mask = ATA_PIO5,
.mwdma_mask = ATA_MWDMA2,
.udma_mask = 0x00, /* no udma */
@@ -389,7 +390,8 @@ static const struct ide_port_info cmd64x
.init_chipset = init_chipset_cmd64x,
.enablebits = {{0x51,0x04,0x04}, {0x51,0x08,0x08}},
.port_ops = &cmd648_port_ops,
- .host_flags = IDE_HFLAG_ABUSE_PREFETCH,
+ .host_flags = IDE_HFLAG_ABUSE_PREFETCH |
+ IDE_HFLAG_SERIALIZE,
.pio_mask = ATA_PIO5,
.mwdma_mask = ATA_MWDMA2,
.udma_mask = ATA_UDMA2,
next prev parent reply other threads:[~2009-12-17 1:38 UTC|newest]
Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-17 1:18 [00/90] 2.6.31.9-stable review Greg KH
2009-12-17 1:14 ` [01/90] USB: option: add pid for ZTE Greg KH
2009-12-17 1:14 ` [02/90] USB: usb-storage: fix bug in fill_inquiry Greg KH
2009-12-17 1:14 ` [03/90] firewire: ohci: handle receive packets with a data length of zero Greg KH
2009-12-17 1:14 ` [04/90] ALSA: hda - Terradici HDA controllers does not support 64-bit mode Greg KH
2009-12-17 1:14 ` [05/90] ALSA: hrtimer - Fix lock-up Greg KH
2009-12-17 1:14 ` [06/90] ath5k: allow setting txpower to 0 Greg KH
2009-12-17 1:14 ` [07/90] ath5k: enable EEPROM checksum check Greg KH
2009-12-17 1:14 ` [08/90] bsdacct: fix uid/gid misreporting Greg KH
2009-12-17 1:14 ` [09/90] debugfs: fix create mutex racy fops and private data Greg KH
2009-12-17 1:14 ` [10/90] devpts_get_tty() should validate inode Greg KH
2009-12-17 1:14 ` [11/90] futex: Take mmap_sem for get_user_pages in fault_in_user_writeable Greg KH
2009-12-17 1:14 ` [12/90] hfs: fix a potential buffer overflow Greg KH
2009-12-17 1:14 ` [13/90] hrtimer: Fix /proc/timer_list regression Greg KH
2009-12-17 1:14 ` [14/90] jbd2: dont wipe the journal on a failed journal checksum Greg KH
2009-12-17 1:14 ` [15/90] KVM: s390: Make psw available on all exits, not just a subset Greg KH
2009-12-17 1:14 ` [16/90] md/bitmap: protect against bitmap removal while being updated Greg KH
2009-12-17 1:14 ` [17/90] pata_hpt{37x|3x2n}: fix timing register masks (take 2) Greg KH
2009-12-17 1:14 ` [18/90] [ARM] pxa/em-x270: fix usb hub power up/reset sequence Greg KH
2009-12-17 1:14 ` [19/90] ssb: Fix range check in sprom write Greg KH
2009-12-17 1:14 ` [20/90] SUNRPC: IS_ERR/PTR_ERR confusion Greg KH
2009-12-17 1:14 ` [21/90] USB: Close usb_find_interface race v3 Greg KH
2009-12-17 1:14 ` [22/90] USB: musb_gadget_ep0: fix unhandled endpoint 0 IRQs, again Greg KH
2009-12-17 1:14 ` [23/90] USB: option.c: add support for D-Link DWM-162-U5 Greg KH
2009-12-17 1:14 ` [24/90] USB: usb-storage: add BAD_SENSE flag Greg KH
2009-12-17 1:14 ` [25/90] USB: usbtmc: repeat usb_bulk_msg until whole message is transfered Greg KH
2009-12-17 1:14 ` [26/90] V4L/DVB: Fix test in copy_reg_bits() Greg KH
2009-12-17 1:14 ` [27/90] x86: Add new Intel CPU cache size descriptors Greg KH
2009-12-17 1:14 ` [28/90] x86/amd-iommu: attach devices to pre-allocated domains early Greg KH
2009-12-17 1:14 ` [29/90] x86/amd-iommu: un__init iommu_setup_msi Greg KH
2009-12-17 1:14 ` [30/90] x86, apic: Enable lapic nmi watchdog on AMD Family 11h Greg KH
2009-12-17 1:14 ` [31/90] x86: ASUS P4S800 reboot=bios quirk Greg KH
2009-12-17 1:14 ` [32/90] x86, Calgary IOMMU quirk: Find nearest matching Calgary while walking up the PCI tree Greg KH
2009-12-17 1:14 ` [33/90] x86: Fix iommu=nodac parameter handling Greg KH
2009-12-17 1:14 ` [34/90] x86: Fix typo in Intel CPU cache size descriptor Greg KH
2009-12-17 1:14 ` [35/90] x86: GART: pci-gart_64.c: Use correct length in strncmp Greg KH
2009-12-17 1:14 ` [36/90] drm/radeon/kms: Add quirk for HIS X1300 board Greg KH
2009-12-17 1:14 ` [37/90] drm/radeon/kms: fix legacy crtc2 dpms Greg KH
2009-12-17 1:14 ` [38/90] mac80211: Fix bug in computing crc over dynamic IEs in beacon Greg KH
2009-12-17 1:14 ` [39/90] mm: hugetlb: fix hugepage memory leak in mincore() Greg KH
2009-12-17 1:14 ` [40/90] mm: hugetlb: fix hugepage memory leak in walk_page_range() Greg KH
2009-12-17 1:14 ` [41/90] powerpc: Fix usage of 64-bit instruction in 32-bit altivec code Greg KH
2009-12-17 1:14 ` [42/90] Serial: Do not read IIR in serial8250_start_tx when UART_BUG_TXEN Greg KH
2009-12-17 1:14 ` Greg KH [this message]
2009-12-17 1:14 ` [44/90] ide: fix ioctl to pass requested transfer mode to ide_find_dma_mode instead of UDMA6 Greg KH
2009-12-17 1:14 ` [45/90] Revert "ide: try to use PIO Mode 0 during probe if possible" Greg KH
2009-12-17 1:14 ` [46/90] slc90e66: fix UDMA handling Greg KH
2009-12-17 1:14 ` [47/90] Au1x00: fix crash when trying register_netdev() Greg KH
2009-12-17 1:14 ` [48/90] b44 WOL setup: one-bit-off stack corruption kernel panic fix Greg KH
2009-12-17 1:15 ` [49/90] b44: Fix wedge when using netconsole Greg KH
2009-12-17 1:15 ` [50/90] e100: Use pci pool to work around GFP_ATOMIC order 5 memory allocation failure Greg KH
2009-12-17 15:03 ` Roger Oksanen
2009-12-17 15:09 ` Greg KH
2009-12-17 15:16 ` Roger Oksanen
2009-12-17 1:15 ` [51/90] gro: Fix illegal merging of trailer trash Greg KH
2009-12-17 1:15 ` [52/90] ip_fragment: also adjust skb->truesize for packets not owned by a socket Greg KH
2009-12-17 1:15 ` [53/90] Revert "isdn: isdn_ppp: Use SKB list facilities instead of home-grown implementation." Greg KH
2009-12-17 1:15 ` [54/90] net: Fix the rollback test in dev_change_name() Greg KH
2009-12-17 1:15 ` [55/90] NET: smc91x: Fix irq flags Greg KH
2009-12-17 1:15 ` [56/90] smsc9420: prevent BUG() if ethtool is called with interface down Greg KH
2009-12-17 1:15 ` [57/90] vlan: Fix register_vlan_dev() error path Greg KH
2009-12-17 1:15 ` [58/90] sparc64: Fix definition of VMEMMAP_SIZE Greg KH
2009-12-17 1:15 ` [59/90] sunsab: Do not set sunsab_reg.cons right before registering minors Greg KH
2009-12-17 1:15 ` [60/90] sunsu: Fix detection of SU ports which are RSC console or control Greg KH
2009-12-17 1:15 ` [61/90] serial: suncore: Add ignore_line argument to sunserial_console_match() Greg KH
2009-12-17 1:15 ` [62/90] serial: suncore: Fix RSC/LOM handling in sunserial_console_termios() Greg KH
2009-12-17 1:15 ` [63/90] sunsu: Pass true ignore_line to console match when RSC or LOM console Greg KH
2009-12-17 1:15 ` [64/90] sunsu: Use sunserial_console_termios() in sunsu_console_setup() Greg KH
2009-12-17 1:15 ` [65/90] sparc64: Dont specify IRQF_SHARED for LDC interrupts Greg KH
2009-12-17 1:15 ` [66/90] sparc64: Fix overly strict range type matching for PCI devices Greg KH
2009-12-17 1:15 ` [67/90] sparc64: Fix stack debugging IRQ stack regression Greg KH
2009-12-17 1:15 ` [68/90] sparc: Set UTS_MACHINE correctly Greg KH
2009-12-17 1:15 ` [69/90] x86/mce: Set up timer unconditionally Greg KH
2009-12-17 1:15 ` [70/90] b43legacy: avoid PPC fault during resume Greg KH
2009-12-17 1:15 ` [71/90] p54usb: Remove DMA buffer from stack Greg KH
2009-12-17 1:15 ` [72/90] [PATCH .31-stable] x86: Under BIOS control, restore APs APIC_LVTTHMR to the BSP value Greg KH
2009-12-17 1:15 ` [73/90] ACPI: Use the ARB_DISABLE for the CPU which model id is less than 0x0f Greg KH
2009-12-17 1:15 ` [74/90] asus-laptop: change light sens default values Greg KH
2009-12-17 1:15 ` [75/90] backlight: lcd - Fix wrong sizeof Greg KH
2009-12-17 1:15 ` [76/90] drm/i915: Avoid NULL dereference with component_only tv_modes Greg KH
2009-12-17 1:15 ` [77/90] drm/i915: Fix CRT hotplug detect by checking really no channels attached Greg KH
2009-12-17 1:15 ` [78/90] drm/i915: Fix LVDS stability issue on Ironlake Greg KH
2009-12-17 1:15 ` [79/90] drm/i915: save/restore BLC histogram control reg across suspend/resume Greg KH
2009-12-17 1:15 ` [80/90] drm/i915: PineView only has LVDS and CRT ports Greg KH
2009-12-17 1:15 ` [81/90] ext3: Fix data / filesystem corruption when write fails to copy data Greg KH
2009-12-17 1:15 ` [82/90] ipvs: zero usvc and udest Greg KH
2009-12-17 1:15 ` [83/90] ipw2100: fix rebooting hang with driver loaded Greg KH
2009-12-17 1:15 ` [84/90] jffs2: Fix long-standing bug with symlink garbage collection Greg KH
2009-12-17 1:15 ` [85/90] matroxfb: fix problems with display stability Greg KH
2009-12-17 1:15 ` [86/90] net: Fix userspace RTM_NEWLINK notifications Greg KH
2009-12-17 1:15 ` [87/90] sysctl_max_map_count should be non-negative Greg KH
2009-12-17 1:15 ` [88/90] thinkpad-acpi: fix default brightness_mode for R50e/R51 Greg KH
2009-12-17 1:15 ` [89/90] thinkpad-acpi: preserve rfkill state across suspend/resume Greg KH
2009-12-17 1:15 ` [90/90] V4L/DVB (13116): gspca - ov519: Webcam 041e:4067 added Greg KH
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=20091217011603.486845303@mini.kroah.org \
--to=gregkh@suse.de \
--cc=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=davem@davemloft.net \
--cc=linux-kernel@vger.kernel.org \
--cc=mpatocka@redhat.com \
--cc=stable-review@kernel.org \
--cc=stable@kernel.org \
--cc=torvalds@linux-foundation.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
all inboxes | Powered by JetHome®