]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
For ATA_PASSTHROUGH commands, pretend isci(4) supports multiword DMA
authorjimharris <jimharris@FreeBSD.org>
Wed, 26 Jun 2013 22:08:45 +0000 (22:08 +0000)
committerjimharris <jimharris@FreeBSD.org>
Wed, 26 Jun 2013 22:08:45 +0000 (22:08 +0000)
commit02bac7d9704bfc60277b722c5e4f4b5f6d22444e
treeea684feb33ee0d0d8acdf5c904f382d1af9df8dd
parente7f9e472fe57a341b8332bd98447ab01e94e65a3
For ATA_PASSTHROUGH commands, pretend isci(4) supports multiword DMA
by treating it as UDMA.

This fixes a problem introduced in r249933/r249939, where CAM sends
ATA_DSM_TRIM to SATA devices using ATA_PASSTHROUGH_16.  scsi_ata_trim()
sets protocol as DMA (not UDMA) which is for multi-word DMA, even
though no such mode is selected for the device.  isci(4) would fail
these commands which is the correct behavior but not consistent with
other HBAs, namely LSI's.

smh@ did some further testing on an LSI controller, which rejected
ATA_PASSTHROUGH_16 commands with mode=UDMA_OUT, even though only
a UDMA mode was selected on the device.  So this precludes adding
any kind of mode detection in CAM to determine which mode to use on
a per-device basis.

Sponsored by: Intel
Discussed with: scottl, smh
Reported by: scottl
Tested by: scottl
MFC after: 3 days
sys/dev/isci/scil/sati_passthrough.c