Mikulas Patocka
9bd7496f5d
ide: Serialize CMD643 and CMD646 to fix a hardware bug with SSD
...
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>
2009-10-29 03:02:06 -07:00
..
accessibility
acpi
x86: Trivial whitespace cleanups
2009-09-20 20:18:57 +02:00
amba
ata
trivial: fix comment typo in drivers/ata/pata_hpt37x.c
2009-09-21 15:15:53 +02:00
atm
auxdisplay
base
mm: oom analysis: add shmem vmstat
2009-09-22 07:17:27 -07:00
block
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2009-09-22 07:51:45 -07:00
bluetooth
cdrom
const: make block_device_operations const
2009-09-22 07:17:25 -07:00
char
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2009-09-22 07:51:45 -07:00
clocksource
connector
cpufreq
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq
2009-09-18 09:16:57 -07:00
cpuidle
cpuidle: menu governor: reduce latency on exit
2009-09-22 07:17:45 -07:00
crypto
dca
dio
dma
edac
trivial: fix typo "for for" in multiple files
2009-09-21 15:14:54 +02:00
eisa
firewire
firmware
mm: don't use alloc_bootmem_low() where not strictly needed
2009-09-22 07:17:38 -07:00
gpio
trivial: add __init/__exit macros in drivers/gpio/bt8xxgpio.c
2009-09-21 15:14:59 +02:00
gpu
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2009-09-22 07:51:45 -07:00
hid
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
2009-09-22 07:51:28 -07:00
hwmon
hwmon: applesmc: restore accelerometer and keyboard backlight on resume
2009-09-22 07:17:49 -07:00
i2c
[PATCH] i2c-imx: make bus available early
2009-09-19 23:36:56 +01:00
ide
ide: Serialize CMD643 and CMD646 to fix a hardware bug with SSD
2009-10-29 03:02:06 -07:00
idle
ieee1394
ieee802154
infiniband
trivial: fix typo "for for" in multiple files
2009-09-21 15:14:54 +02:00
input
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2009-09-22 07:51:45 -07:00
isdn
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2009-09-22 07:51:45 -07:00
leds
lguest
trivial: fix typo "to to" in multiple files
2009-09-21 15:14:55 +02:00
macintosh
trivial: remove unnecessary semicolons
2009-09-21 15:14:58 +02:00
mca
md
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2009-09-22 07:51:45 -07:00
media
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2009-09-22 07:51:45 -07:00
memstick
const: make block_device_operations const
2009-09-22 07:17:25 -07:00
message
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2009-09-22 07:51:45 -07:00
mfd
drivers/mfd/ab3100-core.c: fix powerpc build error
2009-09-22 07:17:24 -07:00
misc
const: mark remaining super_operations const
2009-09-22 07:17:24 -07:00
mmc
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2009-09-22 07:51:45 -07:00
mtd
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2009-09-22 07:51:45 -07:00
net
trivial: remove unnecessary semicolons
2009-09-21 15:14:58 +02:00
nubus
of
oprofile
const: mark remaining super_operations const
2009-09-22 07:17:24 -07:00
parisc
mm: replace various uses of num_physpages by totalram_pages
2009-09-22 07:17:38 -07:00
parport
pci
Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6
2009-09-16 07:49:54 -07:00
pcmcia
pcmcia: cleanup/fixup patch for sa1100_jornada_pcmcia driver
2009-09-22 07:17:42 -07:00
platform
pnp
pnp: add a shutdown method to pnp drivers
2009-09-22 07:17:49 -07:00
power
pps
ps3
rapidio
regulator
regulator: Voltage count for AB3100
2009-09-17 15:48:24 +02:00
rtc
trivial: remove unnecessary semicolons
2009-09-21 15:14:58 +02:00
s390
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2009-09-22 07:51:45 -07:00
sbus
const: make block_device_operations const
2009-09-22 07:17:25 -07:00
scsi
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2009-09-22 07:51:45 -07:00
serial
uartlite: support shared interrupt lines
2009-09-19 13:13:38 -07:00
sh
sn
spi
trivial: remove unnecessary semicolons
2009-09-21 15:14:58 +02:00
ssb
ssb/sdio: fix printk format warnings
2009-09-16 16:21:00 -04:00
staging
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2009-09-22 07:51:45 -07:00
tc
telephony
thermal
uio
Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6
2009-09-18 09:43:09 -07:00
usb
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2009-09-22 07:51:45 -07:00
uwb
trivial: remove unnecessary semicolons
2009-09-21 15:14:58 +02:00
video
trivial: remove unnecessary semicolons
2009-09-21 15:14:58 +02:00
virtio
vlynq
w1
watchdog
[WATCHDOG] sizeof cleanup
2009-09-18 08:39:37 +00:00
xen
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2009-09-22 07:51:45 -07:00
zorro
Kconfig
Makefile