linux_dsm_epyc7002/drivers
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