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