Date: Wed, 26 Jan 2011 06:37:51 +0000 (UTC) From: Alexander Motin <mav@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r217874 - head/sys/cam/ata Message-ID: <201101260637.p0Q6bpra065997@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201101260637.p0Q6bpra065997>