openwrt/target/linux/oxnas
Daniel Golle 5a1e4a7fdb 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>
(cherry picked from commit 5793112f75,
including fixup commit d75e753063)
2020-08-29 01:17:26 +01:00
..
base-files oxnas: move service file to correct place 2020-04-27 22:38:34 +02:00
files oxnas: reduce size of ATA DMA descriptor space 2020-08-29 01:17:26 +01:00
image oxnas: install wireless driver on pogoplugpro 2019-03-12 14:18:42 +01:00
ox810se oxnas: bring in new oxnas target 2018-06-01 15:45:06 +02:00
ox820 oxnas: remove uboot-oxnas-ox820 from default package selection 2019-03-01 04:09:00 +01:00
patches-4.14 kernel: Update kernel 4.14 to version 4.14.187 2020-07-04 19:22:23 +02:00
config-4.14 oxnas: build with 8021Q VLAN support 2020-06-09 16:53:51 +01:00
Makefile oxnas: bring in new oxnas target 2018-06-01 15:45:06 +02:00
modules.mk oxnas: bring in new oxnas target 2018-06-01 15:45:06 +02:00