Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ioat3: disable cacheline-unaligned transfers for raid operations

There are cases where cacheline-unaligned raid operations can hang the
dma channel. Simply disable these operations by increasing the
alignment constraints published to async_tx. The raid456 driver always
issues page aligned requests, so the only in-kernel user of the ioatdma
driver that is affected by this change is dmatest.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>

+3 -3
+3 -3
drivers/dma/ioat/dma_v3.c
··· 1175 1175 if (cap & IOAT_CAP_XOR) { 1176 1176 is_raid_device = true; 1177 1177 dma->max_xor = 8; 1178 - dma->xor_align = 2; 1178 + dma->xor_align = 6; 1179 1179 1180 1180 dma_cap_set(DMA_XOR, dma->cap_mask); 1181 1181 dma->device_prep_dma_xor = ioat3_prep_xor; ··· 1186 1186 if (cap & IOAT_CAP_PQ) { 1187 1187 is_raid_device = true; 1188 1188 dma_set_maxpq(dma, 8, 0); 1189 - dma->pq_align = 2; 1189 + dma->pq_align = 6; 1190 1190 1191 1191 dma_cap_set(DMA_PQ, dma->cap_mask); 1192 1192 dma->device_prep_dma_pq = ioat3_prep_pq; ··· 1196 1196 1197 1197 if (!(cap & IOAT_CAP_XOR)) { 1198 1198 dma->max_xor = 8; 1199 - dma->xor_align = 2; 1199 + dma->xor_align = 6; 1200 1200 1201 1201 dma_cap_set(DMA_XOR, dma->cap_mask); 1202 1202 dma->device_prep_dma_xor = ioat3_prep_pqxor;