]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
aacraid: reduce max I/O size to avoid DMA issues
authorLeandro Lupori <luporl@FreeBSD.org>
Mon, 21 Jun 2021 18:04:43 +0000 (15:04 -0300)
committerLeandro Lupori <luporl@FreeBSD.org>
Fri, 23 Jul 2021 11:28:58 +0000 (08:28 -0300)
commit572e3575dba591f372633a38d76ce7904d1a1b2e
tree7c71b50ed984643ca476e4312a9de82c615fa970
parent06887e06864706ee0b550df9815427805b1a5261
aacraid: reduce max I/O size to avoid DMA issues

Reserve one page for the DMA subsystem, that may need it when the I/O
buffer is not page aligned.

Without this change, writes with the maximum allowed size failed, if:
- physical memory was fragmented, making it necessary to use one DMA
  segment for each page
- the buffer to be written was not page aligned, causing the DMA
  subsystem to need one extra segment

In the scenario above, the DMA subsystem would run out of segments,
resulting in a write with no SG segments, that would fail.

Reviewed by: imp
Sponsored by: Instituto de Pesquisas Eldorado (eldorado.org.br)
Differential Revision: https://reviews.freebsd.org/D30798

(cherry picked from commit 9c2c6353193b53deb337777c2a06a2648b364f8b)
sys/dev/aacraid/aacraid.c
sys/dev/aacraid/aacraid_cam.c
sys/dev/aacraid/aacraid_var.h