svn commit: r207770 - stable/8/sys/cam/ata

Alexander Motin mav at FreeBSD.org
Sat May 8 12:58:22 UTC 2010


Author: mav
Date: Sat May  8 12:58:22 2010
New Revision: 207770
URL: http://svn.freebsd.org/changeset/base/207770

Log:
  MFC r207428:
  Report PMP absence using target 15, same as for precence (not a wildcard),
  to not confuse target ID checks at SIMs.

Modified:
  stable/8/sys/cam/ata/ata_xpt.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/xen/xenpci/   (props changed)
  stable/8/sys/geom/sched/   (props changed)

Modified: stable/8/sys/cam/ata/ata_xpt.c
==============================================================================
--- stable/8/sys/cam/ata/ata_xpt.c	Sat May  8 12:40:38 2010	(r207769)
+++ stable/8/sys/cam/ata/ata_xpt.c	Sat May  8 12:58:22 2010	(r207770)
@@ -1118,13 +1118,13 @@ ata_scan_bus(struct cam_periph *periph, 
 		work_ccb = request_ccb;
 		/* Reuse the same CCB to query if a device was really found */
 		scan_info = (ata_scan_bus_info *)work_ccb->ccb_h.ppriv_ptr0;
-		/* Free the current request path- we're done with it. */
-		xpt_free_path(work_ccb->ccb_h.path);
 		/* If there is PMP... */
 		if ((scan_info->cpi->hba_inquiry & PI_SATAPM) &&
 		    (scan_info->counter == scan_info->cpi->max_target)) {
 			if (work_ccb->ccb_h.status == CAM_REQ_CMP) {
-				/* everything else willbe probed by it */
+				/* everything else will be probed by it */
+				/* Free the current request path- we're done with it. */
+				xpt_free_path(work_ccb->ccb_h.path);
 				goto done;
 			} else {
 				struct ccb_trans_settings cts;
@@ -1132,7 +1132,7 @@ ata_scan_bus(struct cam_periph *periph, 
 				/* Report SIM that PM is absent. */
 				bzero(&cts, sizeof(cts));
 				xpt_setup_ccb(&cts.ccb_h,
-				    scan_info->request_ccb->ccb_h.path, 1);
+				    work_ccb->ccb_h.path, CAM_PRIORITY_NONE);
 				cts.ccb_h.func_code = XPT_SET_TRAN_SETTINGS;
 				cts.type = CTS_TYPE_CURRENT_SETTINGS;
 				cts.xport_specific.sata.pm_present = 0;
@@ -1140,6 +1140,8 @@ ata_scan_bus(struct cam_periph *periph, 
 				xpt_action((union ccb *)&cts);
 			}
 		}
+		/* Free the current request path- we're done with it. */
+		xpt_free_path(work_ccb->ccb_h.path);
 		if (scan_info->counter ==
 		    ((scan_info->cpi->hba_inquiry & PI_SATAPM) ?
 		    0 : scan_info->cpi->max_target)) {


More information about the svn-src-stable-8 mailing list