Print this page
4888 Undocument dma_req(9s)
4884 EOF scsi_hba_attach
4886 EOF ddi_dmae_getlim
4887 EOF ddi_iomin
4634 undocument scsi_hba_attach() and ddi_dma_lim(9s)
4630 clean stale references to ddi_iopb_alloc and ddi_iopb_free
   1 '\" te
   2 .\" Copyright (c) 2006 Sun Microsystems, Inc., All Rights Reserved

   3 .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
   4 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
   5 .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
   6 .TH SCSI_HBA_ATTACH_SETUP 9F "May 30, 2006"
   7 .SH NAME
   8 scsi_hba_attach_setup, scsi_hba_attach, scsi_hba_detach \- SCSI HBA attach and
   9 detach routines
  10 .SH SYNOPSIS
  11 .LP
  12 .nf
  13 #include <sys/scsi/scsi.h>
  14 
  15 
  16 
  17 \fBint\fR \fBscsi_hba_attach_setup\fR(\fBdev_info_t *\fR\fIdip\fR, \fBddi_dma_attr_t *\fR\fIhba_dma_attr\fR,
  18      \fBscsi_hba_tran_t *\fR\fIhba_tran\fR, \fBint\fR \fIhba_flags\fR);
  19 .fi
  20 
  21 .LP
  22 .nf
  23 \fBint\fR \fBscsi_hba_attach\fR(\fBdev_info_t *\fR\fIdip\fR, \fBddi_dma_lim_t *\fR\fIhba_lim\fR,
  24      \fBscsi_hba_tran_t *\fR\fIhba_tran\fR, \fBint\fR \fIhba_flags\fR, \fBvoid *\fR\fIhba_options\fR);
  25 .fi
  26 
  27 .LP
  28 .nf
  29 \fBint\fR \fBscsi_hba_detach\fR(\fBdev_info_t *\fR\fIdip\fR);
  30 .fi
  31 
  32 .SH INTERFACE LEVEL
  33 .sp
  34 .LP
  35 Solaris architecture specific (Solaris DDI).
  36 .SH PARAMETERS
  37 .sp
  38 .ne 2
  39 .na
  40 \fB\fIdip\fR\fR
  41 .ad
  42 .RS 16n
  43 Pointer to the \fBdev_info_t\fR structure that refers to the instance of the
  44 HBA device.
  45 .RE
  46 
  47 .sp
  48 .ne 2
  49 .na
  50 \fB\fIhba_lim\fR\fR
  51 .ad
  52 .RS 16n
  53 Pointer to a \fBddi_dma_lim\fR(9S) structure.
  54 .RE
  55 
  56 .sp
  57 .ne 2
  58 .na
  59 \fB\fIhba_tran\fR\fR
  60 .ad
  61 .RS 16n
  62 Pointer to a \fBscsi_hba_tran\fR(9S) structure.
  63 .RE
  64 
  65 .sp
  66 .ne 2
  67 .na
  68 \fB\fIhba_flags\fR\fR
  69 .ad
  70 .RS 16n
  71 Flag modifiers. The defined flag values are \fBSCSI_HBA_TRAN_CLONE\fR,
  72 \fBSCSI_HBA_TRAN_SCB\fR, and \fBSCSI_HBA_TRAN_CDB\fR.
  73 .RE
  74 
  75 .sp
  76 .ne 2
  77 .na
  78 \fB\fIhba_options\fR\fR
  79 .ad
  80 .RS 16n
  81 Optional features provided by the HBA driver for future extensions; must be
  82 \fINULL\fR.
  83 .RE
  84 
  85 .sp
  86 .ne 2
  87 .na
  88 \fB\fIhba_dma_attr\fR\fR
  89 .ad
  90 .RS 16n
  91 Pointer to a \fBddi_dma_attr\fR(9S) structure.
  92 .RE
  93 
  94 .SH DESCRIPTION
  95 .sp
  96 .LP
  97 The \fBscsi_hba_attach_setup()\fR function is the recommended interface over
  98 the \fBscsi_hba_attach()\fR function.
  99 .SS "scsi_hba_attach_setup(\|) scsi_hba_attach(\|)"
 100 .sp
 101 .LP
 102 The \fBscsi_hba_attach()\fR function registers the \fIhba_lim\fR DMA limits and
 103 the \fIhba_tran\fR transport vectors of each instance of the HBA device defined
 104 by \fIdip\fR. The \fBscsi_hba_attach_setup()\fR function registers the
 105 \fIhba_dma_attr\fR DMA attributes and the \fIhba_tran\fR transport vectors of
 106 each instance of the HBA device defined by \fIdip\fR. The HBA driver can pass
 107 different DMA limits or DMA attributes and the transport vectors for each
 108 instance of the device to support any constraints imposed by the  HBA itself.
 109 .sp
 110 .LP
 111 The \fBscsi_hba_attach()\fR and \fBscsi_hba_attach_setup()\fR functions use the
 112 \fBdev_bus_ops\fR field in the \fBdev_ops\fR(9S) structure. The HBA driver
 113 should initialize this field to \fINULL\fR before calling
 114 \fBscsi_hba_attach()\fR or \fBscsi_hba_attach_setup()\fR.
 115 .sp
 116 .LP
 117 If \fBSCSI_HBA_TRAN_CLONE\fR is requested in \fIhba_flags\fR, the
 118 \fBhba_tran\fR structure is cloned once for each target that is attached to the
 119 HBA. The structure is cloned before the \fBtran_tgt_init\fR(9E) entry point is
 120 called to initialize a target. At all subsequent HBA entry points, including
 121 \fBtran_tgt_init\fR(9E), the \fBscsi_hba_tran_t\fR structure passed as an
 122 argument or found in a \fBscsi_address\fR structure is the cloned
 123 \fBscsi_hba_tran_t\fR structure,which allows the HBA to use the
 124 \fBtran_tgt_private\fR field in the \fBscsi_hba_tran_t\fR structure to point to
 125 per-target data. The HBA should free only the same \fBscsi_hba_tran_t\fR
 126 structure allocated when the HBA detaches. All cloned \fBscsi_hba_tran_t\fR
 127 structures that are allocated by the system are freed by the system.
 128 .sp
 129 .LP
 130 The flags \fBSCSI_HBA_TRAN_CDB\fR and \fBSCSI_HBA_TRAN_SCB\fR are only valid
 131 when \fBtran_setup_pkt()\fR is used. See \fBtran_setup_pkt\fR(9E) for
 132 information on using these flags.
 133 .sp
 134 .LP
 135 The \fBscsi_hba_attach()\fR and \fBscsi_hba_attach_setup()\fR functions attach
 136 a number of integer-valued properties to \fIdip\fR, unless properties of the
 137 same name are already attached to the node. An HBA driver should retrieve these
 138 configuration parameters via \fBddi_prop_get_int\fR(9F), and respect any
 139 settings for features provided the HBA.
 140 .sp
 141 .ne 2
 142 .na
 143 \fB\fBscsi-options\fR\fR
 144 .ad
 145 .RS 26n
 146 \fBOptional\fR \fBSCSI\fR \fBconfiguration bits\fR
 147 .RE
 148 
 149 .sp
 150 .ne 2
 151 .na
 152 \fB\fBSCSI_OPTIONS_DR\fR\fR
 153 .ad
 154 .RS 26n
 155 If not set, the HBA should not grant Disconnect privileges to target devices.


 261 .na
 262 \fB\fBscsi-reset-delay\fR\fR
 263 .ad
 264 .RS 26n
 265 SCSI bus or device reset recovery time, in milliseconds.
 266 .RE
 267 
 268 .sp
 269 .ne 2
 270 .na
 271 \fB\fBscsi-selection-timeout\fR\fR
 272 .ad
 273 .RS 26n
 274 Default SCSI selection phase timeout value, in milliseconds. Please refer to
 275 individual HBA man pages for any HBA-specific information
 276 .RE
 277 
 278 .SS "scsi_hba_detach(\|)"
 279 .sp
 280 .LP
 281 The \fBscsi_hba_detach()\fR function removes the reference to the DMA limits or
 282 attributes structure and the transport vector for the given instance of an HBA
 283 driver.
 284 .SH RETURN VALUES
 285 .sp
 286 .LP
 287 The \fBscsi_hba_attach()\fR, \fBscsi_hba_attach_setup()\fR, and
 288 \fBscsi_hba_detach()\fR functions return \fBDDI_SUCCESS\fR if the function call
 289 succeeds, and return \fBDDI_FAILURE\fR on failure.
 290 .SH CONTEXT
 291 .sp
 292 .LP
 293 The \fBscsi_hba_attach()\fR and \fBscsi_hba_attach_setup()\fR functions should
 294 be called from \fBattach\fR(9E). The \fBscsi_hba_detach()\fR function should be
 295 called from \fBdetach\fR(9E).
 296 .SH SEE ALSO
 297 .sp
 298 .LP
 299 \fBattach\fR(9E), \fBdetach\fR(9E), \fBtran_setup_pkt\fR(9E),
 300 \fBtran_tgt_init\fR(9E), \fBddi_prop_get_int\fR(9F), \fBddi_dma_attr\fR(9S),
 301 \fBddi_dma_lim\fR(9S), \fBdev_ops\fR(9S), \fBscsi_address\fR(9S),
 302 \fBscsi_hba_tran\fR(9S)
 303 .sp
 304 .LP
 305 \fIWriting Device Drivers\fR
 306 .SH NOTES
 307 .sp
 308 .LP
 309 It is the HBA driver's responsibility to ensure that no more transport requests
 310 will be taken on behalf of any SCSI target device driver after
 311 \fBscsi_hba_detach()\fR is called.
 312 .sp
 313 .LP
 314 The \fBscsi_hba_attach()\fR function is obsolete and will be discontinued in a
 315 future release. This function is replaced by \fBscsi_hba_attach_setup()\fR.
   1 '\" te
   2 .\" Copyright (c) 2006 Sun Microsystems, Inc., All Rights Reserved
   3 .\" Copyright 2014 Garrett D'Amore <garrett@damore.org>
   4 .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
   5 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
   6 .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
   7 .TH SCSI_HBA_ATTACH_SETUP 9F "May 24, 2014"
   8 .SH NAME
   9 scsi_hba_attach_setup, scsi_hba_detach \- SCSI HBA attach and
  10 detach routines
  11 .SH SYNOPSIS
  12 .LP
  13 .nf
  14 #include <sys/scsi/scsi.h>
  15 
  16 
  17 
  18 \fBint\fR \fBscsi_hba_attach_setup\fR(\fBdev_info_t *\fR\fIdip\fR, \fBddi_dma_attr_t *\fR\fIhba_dma_attr\fR,
  19      \fBscsi_hba_tran_t *\fR\fIhba_tran\fR, \fBint\fR \fIhba_flags\fR);
  20 .fi
  21 
  22 .LP
  23 .nf






  24 \fBint\fR \fBscsi_hba_detach\fR(\fBdev_info_t *\fR\fIdip\fR);
  25 .fi
  26 
  27 .SH INTERFACE LEVEL
  28 .sp
  29 .LP
  30 Solaris architecture specific (Solaris DDI).
  31 .SH PARAMETERS
  32 .sp
  33 .ne 2
  34 .na
  35 \fB\fIdip\fR\fR
  36 .ad
  37 .RS 16n
  38 Pointer to the \fBdev_info_t\fR structure that refers to the instance of the
  39 HBA device.
  40 .RE
  41 
  42 .sp
  43 .ne 2
  44 .na









  45 \fB\fIhba_tran\fR\fR
  46 .ad
  47 .RS 16n
  48 Pointer to a \fBscsi_hba_tran\fR(9S) structure.
  49 .RE
  50 
  51 .sp
  52 .ne 2
  53 .na
  54 \fB\fIhba_flags\fR\fR
  55 .ad
  56 .RS 16n
  57 Flag modifiers. The defined flag values are \fBSCSI_HBA_TRAN_CLONE\fR,
  58 \fBSCSI_HBA_TRAN_SCB\fR, and \fBSCSI_HBA_TRAN_CDB\fR.
  59 .RE
  60 
  61 .sp
  62 .ne 2
  63 .na
  64 \fB\fIhba_options\fR\fR
  65 .ad
  66 .RS 16n
  67 Optional features provided by the HBA driver for future extensions; must be
  68 \fINULL\fR.
  69 .RE
  70 
  71 .sp
  72 .ne 2
  73 .na
  74 \fB\fIhba_dma_attr\fR\fR
  75 .ad
  76 .RS 16n
  77 Pointer to a \fBddi_dma_attr\fR(9S) structure.
  78 .RE
  79 
  80 .SH DESCRIPTION
  81 .sp
  82 .SS "scsi_hba_attach_setup(\|)"



  83 .sp
  84 .LP
  85 The \fBscsi_hba_attach_setup()\fR function registers the


  86 \fIhba_dma_attr\fR DMA attributes and the \fIhba_tran\fR transport vectors of
  87 each instance of the HBA device defined by \fIdip\fR. The HBA driver can pass
  88 different DMA attributes and the transport vectors for each
  89 instance of the device to support any constraints imposed by the  HBA itself.
  90 .sp
  91 .LP
  92 The \fBscsi_hba_attach_setup()\fR function uses the
  93 \fBdev_bus_ops\fR field in the \fBdev_ops\fR(9S) structure. The HBA driver
  94 should initialize this field to \fINULL\fR before calling
  95 \fBscsi_hba_attach_setup()\fR.
  96 .sp
  97 .LP
  98 If \fBSCSI_HBA_TRAN_CLONE\fR is requested in \fIhba_flags\fR, the
  99 \fBhba_tran\fR structure is cloned once for each target that is attached to the
 100 HBA. The structure is cloned before the \fBtran_tgt_init\fR(9E) entry point is
 101 called to initialize a target. At all subsequent HBA entry points, including
 102 \fBtran_tgt_init\fR(9E), the \fBscsi_hba_tran_t\fR structure passed as an
 103 argument or found in a \fBscsi_address\fR structure is the cloned
 104 \fBscsi_hba_tran_t\fR structure,which allows the HBA to use the
 105 \fBtran_tgt_private\fR field in the \fBscsi_hba_tran_t\fR structure to point to
 106 per-target data. The HBA should free only the same \fBscsi_hba_tran_t\fR
 107 structure allocated when the HBA detaches. All cloned \fBscsi_hba_tran_t\fR
 108 structures that are allocated by the system are freed by the system.
 109 .sp
 110 .LP
 111 The flags \fBSCSI_HBA_TRAN_CDB\fR and \fBSCSI_HBA_TRAN_SCB\fR are only valid
 112 when \fBtran_setup_pkt()\fR is used. See \fBtran_setup_pkt\fR(9E) for
 113 information on using these flags.
 114 .sp
 115 .LP
 116 The \fBscsi_hba_attach_setup()\fR function attaches
 117 a number of integer-valued properties to \fIdip\fR, unless properties of the
 118 same name are already attached to the node. An HBA driver should retrieve these
 119 configuration parameters via \fBddi_prop_get_int\fR(9F), and respect any
 120 settings for features provided the HBA.
 121 .sp
 122 .ne 2
 123 .na
 124 \fB\fBscsi-options\fR\fR
 125 .ad
 126 .RS 26n
 127 \fBOptional\fR \fBSCSI\fR \fBconfiguration bits\fR
 128 .RE
 129 
 130 .sp
 131 .ne 2
 132 .na
 133 \fB\fBSCSI_OPTIONS_DR\fR\fR
 134 .ad
 135 .RS 26n
 136 If not set, the HBA should not grant Disconnect privileges to target devices.


 242 .na
 243 \fB\fBscsi-reset-delay\fR\fR
 244 .ad
 245 .RS 26n
 246 SCSI bus or device reset recovery time, in milliseconds.
 247 .RE
 248 
 249 .sp
 250 .ne 2
 251 .na
 252 \fB\fBscsi-selection-timeout\fR\fR
 253 .ad
 254 .RS 26n
 255 Default SCSI selection phase timeout value, in milliseconds. Please refer to
 256 individual HBA man pages for any HBA-specific information
 257 .RE
 258 
 259 .SS "scsi_hba_detach(\|)"
 260 .sp
 261 .LP
 262 The \fBscsi_hba_detach()\fR function removes the reference to the DMA 
 263 attributes structure and the transport vector for the given instance of an HBA
 264 driver.
 265 .SH RETURN VALUES
 266 .sp
 267 .LP
 268 The \fBscsi_hba_attach_setup()\fR and
 269 \fBscsi_hba_detach()\fR functions return \fBDDI_SUCCESS\fR if the function call
 270 succeeds, and return \fBDDI_FAILURE\fR on failure.
 271 .SH CONTEXT
 272 .sp
 273 .LP
 274 The \fBscsi_hba_attach_setup()\fR function should
 275 be called from \fBattach\fR(9E). The \fBscsi_hba_detach()\fR function should be
 276 called from \fBdetach\fR(9E).
 277 .SH SEE ALSO
 278 .sp
 279 .LP
 280 \fBattach\fR(9E), \fBdetach\fR(9E), \fBtran_setup_pkt\fR(9E),
 281 \fBtran_tgt_init\fR(9E), \fBddi_prop_get_int\fR(9F), \fBddi_dma_attr\fR(9S),
 282 \fBdev_ops\fR(9S), \fBscsi_address\fR(9S),
 283 \fBscsi_hba_tran\fR(9S)
 284 .sp
 285 .LP
 286 \fIWriting Device Drivers\fR
 287 .SH NOTES
 288 .sp
 289 .LP
 290 It is the HBA driver's responsibility to ensure that no more transport requests
 291 will be taken on behalf of any SCSI target device driver after
 292 \fBscsi_hba_detach()\fR is called.