Dan Williams
8a4aeec8d2
libata/ahci: accommodate tag ordered controllers
...
The AHCI spec allows implementations to issue commands in tag order
rather than FIFO order:
5.3.2.12 P:SelectCmd
HBA sets pSlotLoc = (pSlotLoc + 1) mod (CAP.NCS + 1)
or HBA selects the command to issue that has had the
PxCI bit set to '1' longer than any other command
pending to be issued.
The result is that commands posted sequentially (time-wise) may play out
of sequence when issued by hardware.
This behavior has likely been hidden by drives that arrange for commands
to complete in issue order. However, it appears recent drives (two from
different vendors that we have found so far) inflict out-of-order
completions as a matter of course. So, we need to take care to maintain
ordered submission, otherwise we risk triggering a drive to fall out of
sequential-io automation and back to random-io processing, which incurs
large latency and degrades throughput.
This issue was found in simple benchmarks where QD=2 seq-write
performance was 30-50% *greater* than QD=32 seq-write performance.
Tagging for -stable and making the change globally since it has a low
risk-to-reward ratio. Also, word is that recent versions of an unnamed
OS also does it this way now. So, drives in the field are already
experienced with this tag ordering scheme.
Cc: <stable@vger.kernel.org>
Cc: Dave Jiang <dave.jiang@intel.com>
Cc: Ed Ciechanowski <ed.ciechanowski@intel.com>
Reviewed-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2014-04-18 15:56:03 -04:00
..
accessibility
acpi
PCI changes for the v3.15 merge window:
2014-04-01 15:14:04 -07:00
amba
ata
libata/ahci: accommodate tag ordered controllers
2014-04-18 15:56:03 -04:00
atm
auxdisplay
base
Driver core / sysfs patches for 3.15-rc1
2014-04-01 16:28:19 -07:00
bcma
block
Merge branch 'for-3.15/drivers' of git://git.kernel.dk/linux-block
2014-04-01 19:43:53 -07:00
bluetooth
bus
cdrom
char
clk
Single fix for a clock driver merged in 3.14-rc1. Without this fix the
2014-03-08 10:51:30 -08:00
clocksource
Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2014-04-01 11:00:07 -07:00
connector
cpufreq
ACPI and power management updates for 3.15-rc1
2014-04-01 12:48:54 -07:00
cpuidle
Merge branch 'for-3.15/core' of git://git.kernel.dk/linux-block
2014-04-01 19:19:15 -07:00
crypto
dca
devfreq
PM / devfreq: Rewrite devfreq_update_status() to fix multiple bugs
2014-03-21 11:16:30 +09:00
dio
dma
edac
A bunch of EDAC updates all over the place:
2014-04-01 13:54:00 -07:00
eisa
extcon
extcon: Move OF helper function to extcon core and change function name
2014-03-19 14:41:58 +09:00
firewire
Merge branch 'for-3.14-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
2014-03-08 11:51:13 -08:00
firmware
Driver core / sysfs patches for 3.15-rc1
2014-04-01 16:28:19 -07:00
fmc
gpio
gpu
Driver core / sysfs patches for 3.15-rc1
2014-04-01 16:28:19 -07:00
hid
USB patches for 3.15-rc1
2014-04-01 17:06:09 -07:00
hsi
hv
Char/Misc driver patches for 3.15-rc1
2014-04-01 16:13:21 -07:00
hwmon
hwmon: (pmbus/ltc2978) Add support for LTM4676
2014-03-19 18:59:40 -07:00
hwspinlock
i2c
i2c: cpm: Fix build by adding of_address.h and of_irq.h
2014-03-24 14:54:21 +01:00
ide
idle
iio
Staging driver pull request for 3.15-rc1
2014-04-01 16:45:00 -07:00
infiniband
Merge git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending
2014-03-09 13:50:14 -07:00
input
ACPI and power management updates for 3.15-rc1
2014-04-01 12:48:54 -07:00
iommu
PCI changes for the v3.15 merge window:
2014-04-01 15:14:04 -07:00
ipack
irqchip
irqchip: sun7i/sun6i: Disable NMI before registering the handler
2014-03-31 11:12:57 +02:00
isdn
isdn/capi: Make Middleware depend on CAPI2.0
2014-03-18 15:02:57 -04:00
leds
lguest
macintosh
mailbox
mcb
drivers: mcb: Fix build error discovered by 0-day bot
2014-03-09 10:22:46 -07:00
md
Merge branch 'for-3.15/drivers' of git://git.kernel.dk/linux-block
2014-04-01 19:43:53 -07:00
media
Staging driver pull request for 3.15-rc1
2014-04-01 16:45:00 -07:00
memory
memstick
message
PCI changes for the v3.15 merge window:
2014-04-01 15:14:04 -07:00
mfd
regulator: Updates for v3.15
2014-04-01 13:17:46 -07:00
misc
Staging driver pull request for 3.15-rc1
2014-04-01 16:45:00 -07:00
mmc
workqueue: remove deprecated WQ_NON_REENTRANT
2014-03-29 09:33:03 -04:00
mtd
Char/Misc driver patches for 3.15-rc1
2014-04-01 16:13:21 -07:00
net
Merge branch 'for-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
2014-03-31 15:08:51 -07:00
nfc
ntb
nubus
of
Staging driver pull request for 3.15-rc1
2014-04-01 16:45:00 -07:00
oprofile
parisc
parport
pci
Driver core / sysfs patches for 3.15-rc1
2014-04-01 16:28:19 -07:00
pcmcia
PCI changes for the v3.15 merge window:
2014-04-01 15:14:04 -07:00
phy
PHY: add APM X-Gene SoC 15Gbps Multi-purpose PHY driver
2014-03-09 12:45:13 +05:30
pinctrl
Pin control bulk changes for the v3.15 series, no new core
2014-04-01 13:10:49 -07:00
platform
sound updates for 3.15-rc1
2014-04-01 15:38:47 -07:00
pnp
Merge branch 'x86-asmlinkage-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2014-03-31 14:13:25 -07:00
power
powercap
pps
ps3
ptp
pwm
rapidio
regulator
Merge remote-tracking branches 'regulator/topic/tps65218', 'regulator/topic/tps6524x', 'regulator/topic/tps6586x', 'regulator/topic/tps65910', 'regulator/topic/tps80031', 'regulator/topic/wm831x', 'regulator/topic/wm8350' and 'regulator/topic/wm8994' into regulator-next
2014-03-26 16:58:25 +00:00
remoteproc
reset
rpmsg
rtc
s390
Driver core / sysfs patches for 3.15-rc1
2014-04-01 16:28:19 -07:00
sbus
scsi
Merge branch 'for-3.15/core' of git://git.kernel.dk/linux-block
2014-04-01 19:19:15 -07:00
sfi
sh
sn
spi
Merge remote-tracking branches 'spi/topic/xilinx' and 'spi/topic/xtfpga' into spi-next
2014-03-30 00:51:48 +00:00
spmi
spmi: pm: drop bus-level PM suspend/resume routines
2014-03-08 22:15:52 -08:00
ssb
staging
Staging driver pull request for 3.15-rc1
2014-04-01 16:45:00 -07:00
target
tc
thermal
tty
TTY/Serial driver update for 3.15-rc1
2014-04-01 16:55:57 -07:00
uio
usb
USB patches for 3.15-rc1
2014-04-01 17:06:09 -07:00
uwb
vfio
PCI changes for the v3.15 merge window:
2014-04-01 15:14:04 -07:00
vhost
vhost: validate vhost_get_vq_desc return value
2014-03-28 16:10:35 -04:00
video
Char/Misc driver patches for 3.15-rc1
2014-04-01 16:13:21 -07:00
virt
virtio
vlynq
vme
w1
watchdog
watchdog: Fix Elan SC520 dependencies
2014-03-31 13:36:12 +02:00
xen
ACPI and power management updates for 3.15-rc1
2014-04-01 12:48:54 -07:00
zorro
Kconfig
Makefile