svn commit: r325453 - head/sys/powerpc/mpc85xx
Justin Hibbits
jhibbits at FreeBSD.org
Sun Nov 5 22:10:00 UTC 2017
Author: jhibbits
Date: Sun Nov 5 22:09:59 2017
New Revision: 325453
URL: https://svnweb.freebsd.org/changeset/base/325453
Log:
Fix an off-by-one error missed in the initial commit of this driver
When the segment count is > 16 it spills into an 'indirect descriptor list',
which immediately follows the main table, but the indirect list is entry 15, so
needs to be skipped for the general list.
Modified:
head/sys/powerpc/mpc85xx/fsl_sata.c
Modified: head/sys/powerpc/mpc85xx/fsl_sata.c
==============================================================================
--- head/sys/powerpc/mpc85xx/fsl_sata.c Sun Nov 5 22:00:54 2017 (r325452)
+++ head/sys/powerpc/mpc85xx/fsl_sata.c Sun Nov 5 22:09:59 2017 (r325453)
@@ -988,11 +988,12 @@ fsl_sata_dmasetprd(void *arg, bus_dma_segment_t *segs,
prd[j].dba = FSL_SATA_CTP_BUS(ch, slot) +
FSL_SATA_PRD_OFFSET(j+1);
j++;
+ extlen = 0;
}
len = segs[i].ds_len;
len = roundup2(len, sizeof(uint32_t));
- prd[i].dba = htole32((uint32_t)segs[i].ds_addr);
- prd[i].dwc_flg = htole32(FSL_SATA_PRD_SNOOP | len);
+ prd[j].dba = htole32((uint32_t)segs[i].ds_addr);
+ prd[j].dwc_flg = htole32(FSL_SATA_PRD_SNOOP | len);
slot->ttl += len;
if (j > FSL_SATA_PRD_MAX_DIRECT)
extlen += len;
More information about the svn-src-all
mailing list