HomeFreeBSD

smartpqi: Change alignment for dma tags

Description

smartpqi: Change alignment for dma tags

Problem: Under certain I/O conditions, a program doing large block disk
reads can cause a controller to crash.

Root Cause: The SCSI read request and destination address in the BDMA
descriptor is incorrect, causing the BDMA engine in the controller to
assert.

Fix: Change the alignment for creating bus_dma_tags in the driver from
PAGE_SIZE (4k) to 1, which allows the controller to manage it's own
address range for BDMA transactions.

Risk: Medium

Exposure: This reverts a change first made to support NVMe drives on
Excalibur. At that time a 4k alignment was necessary. This no longer
seems to be the case.

PR: 259541
Reported by: Ka Ho Ng <khng@freebsd.org>
Reviewed by: imp
Differential Revision: https://reviews.freebsd.org/D41619

(cherry picked from commit f07b267d8cc87e88be3c78aa69504b5ebc6571ee)
(cherry picked from commit 01619a8fafcfd99d1811b2c14a92bac1a48c6d31)
Approved-by: re (gjb)

Details

Provenance
john.hall_microchip.comAuthored on Oct 19 2023, 3:25 AM
impCommitted on Oct 19 2023, 9:37 PM
Reviewer
imp
Differential Revision
D41619: smartpqi: Change alignment for dma tags
Parents
rG8fe059425a09: smartpqi: Drop spinlock before freeing memory
Branches
Unknown
Tags
Unknown