immortalwrt/target/linux
Daniel Golle ecb18e33cc
oxnas: reduce size of ATA DMA descriptor space
After years of trying to find the reason for random kernel crashes
while both CPU and SATA are under load it has been found.
Some odd commented-out #defines in kref's single-port driver [1] which
were copied from the vendor driver made me develop a theory:
The IO-mapped memory area for DMA descriptors apparetly got some holes
just before the alignment boundaries.
This feels like an off-by-one bug in the hardware or maybe those fields
are used internally by the SATA controller's firmware.
Whatever the cause is: they cannot be used and trying to use them
results in reading back unexpected stuff and ends up with oopsing
Unable to handle kernel paging request at virtual address d085c004

Work around the issue by reducing the area used for bmdma descriptors.
This reduces SATA performance (iops) quite a bit, but finally makes
things work reliably. Possibly one could optimize this much more by
really just skipping the holes in that memory area -- however, that
seems to be non-trivial with the driver and libata in it's current form
(suggestions are welcome).
The 'proper' way to have good SATA performance would be to make use of
the hardware RAID features (one can use the JBOD mode to access even
just a single disc transparently through the RAID controller integrated
in the SATA host instead of accessing the SATA ports 'raw' as we do
now).

[1]: https://github.com/kref/linux-oxnas/blob/master/drivers/ata/sata_oxnas.c#L25

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2020-08-11 18:15:51 +08:00
..
apm821xx kernel: unify CONFIG_GPIO_SYSFS in kernel configs 2020-08-07 18:08:33 +08:00
ar7
ar71xx kernel: unify CONFIG_GPIO_SYSFS in kernel configs 2020-08-07 18:08:33 +08:00
arc770 arc770: update kernel version to 5.4 2020-07-28 20:49:14 +08:00
archs38 kernel: unify CONFIG_GPIO_SYSFS in kernel configs 2020-08-07 18:08:33 +08:00
armvirt kernel: Move CONFIG_IONIC to generic kernel config 2020-08-11 18:15:38 +08:00
at91 kernel: unify CONFIG_GPIO_SYSFS in kernel configs 2020-08-07 18:08:33 +08:00
ath25 kernel: unify CONFIG_GPIO_SYSFS in kernel configs 2020-08-07 18:08:33 +08:00
ath79 ath79: drop redundant kmods-leds-gpio 2020-08-09 23:56:45 +08:00
bcm27xx kernel: Move CONFIG_IONIC to generic kernel config 2020-08-11 18:15:38 +08:00
bcm47xx kernel: unify CONFIG_GPIO_SYSFS in kernel configs 2020-08-07 18:08:33 +08:00
bcm53xx kernel: unify CONFIG_GPIO_SYSFS in kernel configs 2020-08-07 18:08:33 +08:00
bcm63xx bcm63xx: switch to upstream CFE detection patch 2020-08-11 18:13:21 +08:00
cns3xxx kernel: unify CONFIG_GPIO_SYSFS in kernel configs 2020-08-07 18:08:33 +08:00
gemini Merge Mainline 2020-08-03 00:45:53 +08:00
generic kernel: Move CONFIG_IONIC to generic kernel config 2020-08-11 18:15:38 +08:00
imx6 kernel: unify CONFIG_GPIO_SYSFS in kernel configs 2020-08-07 18:08:33 +08:00
ipq40xx ipq40xx: simplified source code 2020-08-10 22:29:04 +08:00
ipq806x ipq806x: replace patches with upstream version 2020-08-09 23:57:55 +08:00
ipq807x kernel: unify CONFIG_GPIO_SYSFS in kernel configs 2020-08-07 18:08:33 +08:00
ixp4xx kernel: bump 4.9 to 4.9.220 2020-04-25 08:06:59 +08:00
kirkwood kernel: unify CONFIG_GPIO_SYSFS in kernel configs 2020-08-07 18:08:33 +08:00
lantiq kernel: unify CONFIG_GPIO_SYSFS in kernel configs 2020-08-07 18:08:33 +08:00
layerscape kernel: Move CONFIG_IONIC to generic kernel config 2020-08-11 18:15:38 +08:00
malta kernel: Move CONFIG_IONIC to generic kernel config 2020-08-11 18:15:38 +08:00
mediatek kernel: Move CONFIG_IONIC to generic kernel config 2020-08-11 18:15:38 +08:00
mpc85xx kernel: unify CONFIG_GPIO_SYSFS in kernel configs 2020-08-07 18:08:33 +08:00
mvebu kernel: Move CONFIG_IONIC to generic kernel config 2020-08-11 18:15:38 +08:00
mxs kernel: unify CONFIG_GPIO_SYSFS in kernel configs 2020-08-07 18:08:33 +08:00
octeon kernel: Move CONFIG_IONIC to generic kernel config 2020-08-11 18:15:38 +08:00
octeontx kernel: Move CONFIG_IONIC to generic kernel config 2020-08-11 18:15:38 +08:00
omap kernel: unify CONFIG_GPIO_SYSFS in kernel configs 2020-08-07 18:08:33 +08:00
orion
oxnas oxnas: reduce size of ATA DMA descriptor space 2020-08-11 18:15:51 +08:00
pistachio kernel: unify CONFIG_GPIO_SYSFS in kernel configs 2020-08-07 18:08:33 +08:00
ramips ramips: improve ramoops support 2020-08-10 22:09:18 +08:00
rb532 kernel: unify CONFIG_GPIO_SYSFS in kernel configs 2020-08-07 18:08:33 +08:00
rockchip kernel: Move CONFIG_IONIC to generic kernel config 2020-08-11 18:15:38 +08:00
samsung kernel: Update kernel 4.14 to version 4.14.187 2020-07-05 11:53:32 +08:00
sunxi kernel: unify CONFIG_GPIO_SYSFS in kernel configs 2020-08-07 18:08:33 +08:00
tegra kernel: unify CONFIG_GPIO_SYSFS in kernel configs 2020-08-07 18:08:33 +08:00
uml
x86 kernel: Move CONFIG_IONIC to generic kernel config 2020-08-11 18:15:38 +08:00
zynq kernel: unify CONFIG_GPIO_SYSFS in kernel configs 2020-08-07 18:08:33 +08:00
Makefile build: add 'make kernel_xconfig' command 2020-07-09 12:03:26 +08:00