kern/152817: [ahci] ahci doesn't find disk

Alexander Motin mav at FreeBSD.org
Mon Jan 24 10:00:22 UTC 2011


The following reply was made to PR kern/152817; it has been noted by GNATS.

From: Alexander Motin <mav at FreeBSD.org>
To: Julian Stecklina <js at alien8.de>
Cc: bug-followup at FreeBSD.org
Subject: Re: kern/152817: [ahci] ahci doesn't find disk
Date: Mon, 24 Jan 2011 11:49:21 +0200

 This is a multi-part message in MIME format.
 --------------060102030001030602070708
 Content-Type: text/plain; charset=KOI8-R
 Content-Transfer-Encoding: 7bit
 
 Julian Stecklina wrote:
 > Thus spake Alexander Motin <mav at FreeBSD.org>:
 >> Problem looks alike to one workarounded in CURRENT by SVN revision
 >> 217444, just with different feature. That patch with such addition
 >> should probably help:
 >>
 >> Try it please, as if it help, send me output of the `camcontrol
 >> identify ada0 -v` command for check.
 > 
 > Your fix works. :) All drives are detected. The camcontrol output is
 > from an 8.2ish userland, I hope this is ok.
 
 Thank you. Could you try this patch instead? It should be less noisy.
 
 -- 
 Alexander Motin
 
 --------------060102030001030602070708
 Content-Type: text/plain;
  name="mininit.patch"
 Content-Transfer-Encoding: 7bit
 Content-Disposition: inline;
  filename="mininit.patch"
 
 --- ata_xpt.c.prev	2011-01-15 11:43:26.000000000 +0200
 +++ ata_xpt.c	2011-01-24 11:42:36.000000000 +0200
 @@ -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);
 
 --------------060102030001030602070708--


More information about the freebsd-bugs mailing list