Author: mav Date: Wed Jan 26 06:37:51 2011 New Revision: 217874 URL: http://svn.freebsd.org/changeset/base/217874
Log: Make device initialization sequence shorter when possible. Do not enable/ disable already enabled/disabled SATA features. Modified: head/sys/cam/ata/ata_xpt.c Modified: head/sys/cam/ata/ata_xpt.c ============================================================================== --- head/sys/cam/ata/ata_xpt.c Wed Jan 26 06:36:14 2011 (r217873) +++ head/sys/cam/ata/ata_xpt.c Wed Jan 26 06:37:51 2011 (r217874) @@ -988,7 +988,9 @@ noerror: cts.xport_specific.sata.valid = CTS_SATA_VALID_CAPS; xpt_action((union ccb *)&cts); softc->caps = caps; - if (ident_buf->satasupport & ATA_SUPPORT_IFPWRMNGT) { + if ((ident_buf->satasupport & ATA_SUPPORT_IFPWRMNGT) && + (!(softc->caps & CTS_SATA_CAPS_H_PMREQ)) != + (!(ident_buf->sataenabled & ATA_SUPPORT_IFPWRMNGT))) { PROBE_SET_ACTION(softc, PROBE_SETPM); xpt_release_ccb(done_ccb); xpt_schedule(periph, priority); @@ -997,7 +999,9 @@ noerror: /* FALLTHROUGH */ case PROBE_SETPM: if (ident_buf->satacapabilities != 0xffff && - ident_buf->satacapabilities & ATA_SUPPORT_DAPST) { + (ident_buf->satacapabilities & ATA_SUPPORT_DAPST) && + (!(softc->caps & CTS_SATA_CAPS_H_APST)) != + (!(ident_buf->sataenabled & ATA_ENABLED_DAPST))) { PROBE_SET_ACTION(softc, PROBE_SETAPST); xpt_release_ccb(done_ccb); xpt_schedule(periph, priority); @@ -1005,7 +1009,9 @@ noerror: } /* FALLTHROUGH */ case PROBE_SETAPST: - if (ident_buf->satasupport & ATA_SUPPORT_AUTOACTIVATE) { + if ((ident_buf->satasupport & ATA_SUPPORT_AUTOACTIVATE) && + (!(softc->caps & CTS_SATA_CAPS_H_DMAAA)) != + (!(ident_buf->sataenabled & ATA_SUPPORT_AUTOACTIVATE))) { PROBE_SET_ACTION(softc, PROBE_SETDMAAA); xpt_release_ccb(done_ccb); xpt_schedule(periph, priority); _______________________________________________ svn-src-head@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"