Author: mav
Date: Wed Apr 24 19:22:19 2013
New Revision: 249850
URL: http://svnweb.freebsd.org/changeset/base/249850

Log:
  MFC r248687:
  No need to erase all 64 bytes of CFIS area if we never use more then 16.

Modified:
  stable/9/sys/dev/ahci/ahci.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/dev/   (props changed)

Modified: stable/9/sys/dev/ahci/ahci.c
==============================================================================
--- stable/9/sys/dev/ahci/ahci.c        Wed Apr 24 19:00:45 2013        
(r249849)
+++ stable/9/sys/dev/ahci/ahci.c        Wed Apr 24 19:22:19 2013        
(r249850)
@@ -1266,8 +1266,8 @@ ahci_dmainit(device_t dev)
            NULL, NULL, AHCI_WORK_SIZE, 1, AHCI_WORK_SIZE,
            0, NULL, NULL, &ch->dma.work_tag))
                goto error;
-       if (bus_dmamem_alloc(ch->dma.work_tag, (void **)&ch->dma.work, 0,
-           &ch->dma.work_map))
+       if (bus_dmamem_alloc(ch->dma.work_tag, (void **)&ch->dma.work,
+           BUS_DMA_ZERO, &ch->dma.work_map))
                goto error;
        if (bus_dmamap_load(ch->dma.work_tag, ch->dma.work_map, ch->dma.work,
            AHCI_WORK_SIZE, ahci_dmasetupc_cb, &dcba, 0) || dcba.error) {
@@ -2671,7 +2671,7 @@ ahci_setup_fis(device_t dev, struct ahci
        struct ahci_channel *ch = device_get_softc(dev);
        u_int8_t *fis = &ctp->cfis[0];
 
-       bzero(ctp->cfis, 64);
+       bzero(ctp->cfis, 16);
        fis[0] = 0x27;                  /* host to device */
        fis[1] = (ccb->ccb_h.target_id & 0x0f);
        if (ccb->ccb_h.func_code == XPT_SCSI_IO) {
@@ -2686,10 +2686,10 @@ ahci_setup_fis(device_t dev, struct ahci
                }
                fis[7] = ATA_D_LBA;
                fis[15] = ATA_A_4BIT;
-               bzero(ctp->acmd, 32);
                bcopy((ccb->ccb_h.flags & CAM_CDB_POINTER) ?
                    ccb->csio.cdb_io.cdb_ptr : ccb->csio.cdb_io.cdb_bytes,
                    ctp->acmd, ccb->csio.cdb_len);
+               bzero(ctp->acmd + ccb->csio.cdb_len, 32 - ccb->csio.cdb_len);
        } else if ((ccb->ataio.cmd.flags & CAM_ATAIO_CONTROL) == 0) {
                fis[1] |= 0x80;
                fis[2] = ccb->ataio.cmd.command;
_______________________________________________
svn-src-stable-9@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-stable-9
To unsubscribe, send any mail to "svn-src-stable-9-unsubscr...@freebsd.org"

Reply via email to