mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
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>
This commit is contained in:
parent
074cc47679
commit
2adfc550b6
@ -1175,7 +1175,7 @@ int __devinit ioat3_dma_probe(struct ioatdma_device *device, int dca)
|
||||
if (cap & IOAT_CAP_XOR) {
|
||||
is_raid_device = true;
|
||||
dma->max_xor = 8;
|
||||
dma->xor_align = 2;
|
||||
dma->xor_align = 6;
|
||||
|
||||
dma_cap_set(DMA_XOR, dma->cap_mask);
|
||||
dma->device_prep_dma_xor = ioat3_prep_xor;
|
||||
@ -1186,7 +1186,7 @@ int __devinit ioat3_dma_probe(struct ioatdma_device *device, int dca)
|
||||
if (cap & IOAT_CAP_PQ) {
|
||||
is_raid_device = true;
|
||||
dma_set_maxpq(dma, 8, 0);
|
||||
dma->pq_align = 2;
|
||||
dma->pq_align = 6;
|
||||
|
||||
dma_cap_set(DMA_PQ, dma->cap_mask);
|
||||
dma->device_prep_dma_pq = ioat3_prep_pq;
|
||||
@ -1196,7 +1196,7 @@ int __devinit ioat3_dma_probe(struct ioatdma_device *device, int dca)
|
||||
|
||||
if (!(cap & IOAT_CAP_XOR)) {
|
||||
dma->max_xor = 8;
|
||||
dma->xor_align = 2;
|
||||
dma->xor_align = 6;
|
||||
|
||||
dma_cap_set(DMA_XOR, dma->cap_mask);
|
||||
dma->device_prep_dma_xor = ioat3_prep_pqxor;
|
||||
|
Loading…
Reference in New Issue
Block a user