aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/ahci/ahci.c
diff options
context:
space:
mode:
authorWarner Losh <imp@FreeBSD.org>2014-08-30 02:13:09 +0000
committerWarner Losh <imp@FreeBSD.org>2014-08-30 02:13:09 +0000
commit0375d6f5f9f27448298624c52d5ae94c6b40ec80 (patch)
tree2ffd51ea7dc3c8c798a20d72b79b4bf90e99775b /sys/dev/ahci/ahci.c
parent2da8d262e01eca7dc4cb58fc30aa8016106d8e1f (diff)
downloadsrc-0375d6f5f9f27448298624c52d5ae94c6b40ec80.tar.gz
src-0375d6f5f9f27448298624c52d5ae94c6b40ec80.zip
We were returning 20 bytes as the FIS size to send, but only
initializing 16. Initialize all 20 so we don't send garbage in the Auxiliary register. The SATA standard mandates a 5 dword length for the Host to Device FIS. Sponsored by: Netflix
Notes
Notes: svn path=/head/; revision=270833
Diffstat (limited to 'sys/dev/ahci/ahci.c')
-rw-r--r--sys/dev/ahci/ahci.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/dev/ahci/ahci.c b/sys/dev/ahci/ahci.c
index 0691b77489fd..b2148339e5b1 100644
--- a/sys/dev/ahci/ahci.c
+++ b/sys/dev/ahci/ahci.c
@@ -2764,7 +2764,7 @@ ahci_setup_fis(device_t dev, struct ahci_cmd_tab *ctp, union ccb *ccb, int tag)
struct ahci_channel *ch = device_get_softc(dev);
u_int8_t *fis = &ctp->cfis[0];
- bzero(ctp->cfis, 16);
+ bzero(fis, 20);
fis[0] = 0x27; /* host to device */
fis[1] = (ccb->ccb_h.target_id & 0x0f);
if (ccb->ccb_h.func_code == XPT_SCSI_IO) {