xref: /freebsd/share/man/man4/scsi.4 (revision 4d21bbd1e7e7d8ac1921d18daf26188332a60980)
1a77a7ee0SJulian Elischer.\" Copyright (c) 1996
2eddc45e7SJeroen Ruigrok van der Werven.\"	Julian Elischer <julian@FreeBSD.org>.  All rights reserved.
3a77a7ee0SJulian Elischer.\"
4a77a7ee0SJulian Elischer.\" Redistribution and use in source and binary forms, with or without
5a77a7ee0SJulian Elischer.\" modification, are permitted provided that the following conditions
6a77a7ee0SJulian Elischer.\" are met:
7a77a7ee0SJulian Elischer.\" 1. Redistributions of source code must retain the above copyright
8a77a7ee0SJulian Elischer.\"    notice, this list of conditions and the following disclaimer.
9a77a7ee0SJulian Elischer.\"
10a77a7ee0SJulian Elischer.\" 2. Redistributions in binary form must reproduce the above copyright
11a77a7ee0SJulian Elischer.\"    notice, this list of conditions and the following disclaimer in the
12a77a7ee0SJulian Elischer.\"    documentation and/or other materials provided with the distribution.
13a77a7ee0SJulian Elischer.\"
14a77a7ee0SJulian Elischer.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15a77a7ee0SJulian Elischer.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16a77a7ee0SJulian Elischer.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17a77a7ee0SJulian Elischer.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18a77a7ee0SJulian Elischer.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19a77a7ee0SJulian Elischer.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20a77a7ee0SJulian Elischer.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21a77a7ee0SJulian Elischer.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22a77a7ee0SJulian Elischer.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23a77a7ee0SJulian Elischer.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24a77a7ee0SJulian Elischer.\" SUCH DAMAGE.
25a77a7ee0SJulian Elischer.\"
264e8867b9SAlexey Zelkin.\" $FreeBSD$
27*4d21bbd1SWarner Losh.Dd December 20, 2017
286d6d0ae4SAlexander Motin.Dt CAM 4
293d45e180SRuslan Ermilov.Os
30db35f309SDavid Greenman.Sh NAME
3189045423SKenneth D. Merry.Nm CAM
32*4d21bbd1SWarner Losh.Nd Common Access Method Storage subsystem
33db35f309SDavid Greenman.Sh SYNOPSIS
34b9781e20SJeroen Ruigrok van der Werven.Cd "device scbus"
356d6d0ae4SAlexander Motin.Cd "device ada"
36b9781e20SJeroen Ruigrok van der Werven.Cd "device cd"
37b9781e20SJeroen Ruigrok van der Werven.Cd "device ch"
38b9781e20SJeroen Ruigrok van der Werven.Cd "device da"
39b9781e20SJeroen Ruigrok van der Werven.Cd "device pass"
40b9781e20SJeroen Ruigrok van der Werven.Cd "device pt"
41b9781e20SJeroen Ruigrok van der Werven.Cd "device sa"
423136363fSRuslan Ermilov.Cd "options CAMDEBUG"
433136363fSRuslan Ermilov.Cd "options CAM_DEBUG_BUS=-1"
443136363fSRuslan Ermilov.Cd "options CAM_DEBUG_TARGET=-1"
453136363fSRuslan Ermilov.Cd "options CAM_DEBUG_LUN=-1"
46f0f25b9cSAlexander Motin.Cd "options CAM_DEBUG_COMPILE=CAM_DEBUG_INFO|CAM_DEBUG_CDB|CAM_DEBUG_PROBE"
473136363fSRuslan Ermilov.Cd "options CAM_DEBUG_FLAGS=CAM_DEBUG_INFO|CAM_DEBUG_CDB"
483136363fSRuslan Ermilov.Cd "options CAM_MAX_HIGHPOWER=4"
493136363fSRuslan Ermilov.Cd "options SCSI_NO_SENSE_STRINGS"
503136363fSRuslan Ermilov.Cd "options SCSI_NO_OP_STRINGS"
513136363fSRuslan Ermilov.Cd "options SCSI_DELAY=8000"
52db35f309SDavid Greenman.Sh DESCRIPTION
536d6d0ae4SAlexander MotinThe
546d6d0ae4SAlexander Motin.Nm
5589045423SKenneth D. Merrysubsystem provides a uniform and modular system for the implementation
5689045423SKenneth D. Merryof drivers to control various
575ee9f050SWarner Losh.Tn SCSI ,
585ee9f050SWarner Losh.Tn ATA ,
595ee9f050SWarner Losh.Tn NMVe ,
606d6d0ae4SAlexander Motinand
615ee9f050SWarner Losh.Tn MMC / SD
6289045423SKenneth D. Merrydevices, and to utilize different
635ee9f050SWarner Losh.Tn SCSI ,
645ee9f050SWarner Losh.Tn ATA ,
655ee9f050SWarner Losh.Tn NVMe ,
666d6d0ae4SAlexander Motinand
675ee9f050SWarner Losh.Tn MMC / SD
686d249eeeSSheldon Hearnhost adapters through host adapter drivers.
69db4fcadfSConrad MeyerWhen the system probes buses, it attaches any devices it finds to the
706d6d0ae4SAlexander Motinappropriate drivers.
71b5e7e999SRuslan ErmilovThe
7289045423SKenneth D. Merry.Xr pass 4
736d6d0ae4SAlexander Motindriver, if it is configured in the kernel, will attach to all devices.
74db35f309SDavid Greenman.Sh KERNEL CONFIGURATION
7589045423SKenneth D. MerryThere are a number of generic kernel configuration options for the
766d6d0ae4SAlexander Motin.Nm
7789045423SKenneth D. Merrysubsystem:
7889045423SKenneth D. Merry.Bl -tag -width SCSI_NO_SENSE_STRINGS
7989045423SKenneth D. Merry.It Dv CAMDEBUG
80f0f25b9cSAlexander MotinThis option compiles in all the
816d6d0ae4SAlexander Motin.Nm
826d6d0ae4SAlexander Motindebugging printf code.
830227791bSRuslan ErmilovThis will not actually
8489045423SKenneth D. Merrycause any debugging information to be printed out when included by itself.
85b5e7e999SRuslan ErmilovSee below for details.
8689045423SKenneth D. Merry.It Dv "CAM_MAX_HIGHPOWER=4"
8789045423SKenneth D. MerryThis sets the maximum allowable number of concurrent "high power" commands.
8889045423SKenneth D. MerryA "high power" command is a command that takes more electrical power than
89b5e7e999SRuslan Ermilovmost to complete.
906d6d0ae4SAlexander MotinAn example of this is the
9189045423SKenneth D. Merry.Tn SCSI
92b5e7e999SRuslan ErmilovSTART UNIT command.
936d6d0ae4SAlexander MotinStarting a disk often takes significantly more electrical power than normal
946d6d0ae4SAlexander Motinoperation.
95b5e7e999SRuslan ErmilovThis option allows the
9689045423SKenneth D. Merryuser to specify how many concurrent high power commands may be outstanding
9789045423SKenneth D. Merrywithout overloading the power supply on his computer.
9889045423SKenneth D. Merry.It Dv SCSI_NO_SENSE_STRINGS
9989045423SKenneth D. MerryThis eliminates text descriptions of each
10089045423SKenneth D. Merry.Tn SCSI
101b5e7e999SRuslan ErmilovAdditional Sense Code and Additional Sense Code Qualifier pair.
102b5e7e999SRuslan ErmilovSince this
10389045423SKenneth D. Merryis a fairly large text database, eliminating it reduces the size of the
104b5e7e999SRuslan Ermilovkernel somewhat.
105b5e7e999SRuslan ErmilovThis is primarily necessary for boot floppies and other
106b5e7e999SRuslan Ermilovlow disk space or low memory space environments.
107b5e7e999SRuslan ErmilovIn most cases, though,
10889045423SKenneth D. Merrythis should be enabled, since it speeds the interpretation of
10989045423SKenneth D. Merry.Tn SCSI
1105203edcdSRuslan Ermiloverror messages.
1110227791bSRuslan ErmilovDo not let the "kernel bloat" zealots get to you -- leave
11289045423SKenneth D. Merrythe sense descriptions in your kernel!
11389045423SKenneth D. Merry.It Dv SCSI_NO_OP_STRINGS
11489045423SKenneth D. MerryThis disables text descriptions of each
11589045423SKenneth D. Merry.Tn SCSI
116b5e7e999SRuslan Ermilovopcode.
117b5e7e999SRuslan ErmilovThis option, like the sense string option above, is primarily
11889045423SKenneth D. Merryuseful for environments like a boot floppy where kernel size is critical.
1190227791bSRuslan ErmilovEnabling this option for normal use is not recommended, since it slows
12089045423SKenneth D. Merrydebugging of
12189045423SKenneth D. Merry.Tn SCSI
12289045423SKenneth D. Merryproblems.
12389045423SKenneth D. Merry.It Dv SCSI_DELAY=8000
12489045423SKenneth D. MerryThis is the
12589045423SKenneth D. Merry.Tn SCSI
126b5e7e999SRuslan Ermilov"bus settle delay."
1276d6d0ae4SAlexander MotinIn
1286d6d0ae4SAlexander Motin.Nm ,
1296d6d0ae4SAlexander Motinit is specified in
13089045423SKenneth D. Merry.Em milliseconds ,
13189045423SKenneth D. Merrynot seconds like the old
13289045423SKenneth D. Merry.Tn SCSI
133b5e7e999SRuslan Ermilovlayer used to do.
134b5e7e999SRuslan ErmilovWhen the kernel boots, it sends a bus reset to each
13589045423SKenneth D. Merry.Tn SCSI
13689045423SKenneth D. Merrybus to tell each device to reset itself to a default set of transfer
137b5e7e999SRuslan Ermilovnegotiations and other settings.
138b5e7e999SRuslan ErmilovMost
13989045423SKenneth D. Merry.Tn SCSI
140b5e7e999SRuslan Ermilovdevices need some amount of time to recover from a bus reset.
141b5e7e999SRuslan ErmilovNewer disks
14289045423SKenneth D. Merrymay need as little as 100ms, while old, slow devices may need much longer.
14389045423SKenneth D. MerryIf the
14489045423SKenneth D. Merry.Dv SCSI_DELAY
1450227791bSRuslan Ermilovis not specified, it defaults to 2 seconds.
146b5e7e999SRuslan ErmilovThe minimum allowable value for
14789045423SKenneth D. Merry.Dv SCSI_DELAY
148b5e7e999SRuslan Ermilovis "100", or 100ms.
149b5e7e999SRuslan ErmilovOne special case is that if the
15089045423SKenneth D. Merry.Dv SCSI_DELAY
151b5e7e999SRuslan Ermilovis set to 0, that will be taken to mean the "lowest possible value."
152b5e7e999SRuslan ErmilovIn that case, the
15389045423SKenneth D. Merry.Dv SCSI_DELAY
15489045423SKenneth D. Merrywill be reset to 100ms.
15589045423SKenneth D. Merry.El
1562460bdf0SPeter Dufault.Pp
157db4fcadfSConrad MeyerAll devices and buses support dynamic allocation so that
1582460bdf0SPeter Dufaultan upper number of devices and controllers does not need to be configured;
159f5a8c129SJuli Mallett.Cd "device da"
1602460bdf0SPeter Dufaultwill suffice for any number of disk drivers.
1612460bdf0SPeter Dufault.Pp
1622460bdf0SPeter DufaultThe devices are either
1632460bdf0SPeter Dufault.Em wired
1642460bdf0SPeter Dufaultso they appear as a particular device unit or
1652460bdf0SPeter Dufault.Em counted
1662460bdf0SPeter Dufaultso that they appear as the next available unused unit.
1672460bdf0SPeter Dufault.Pp
1689ff00466SScott LongUnits are wired down by setting kernel environment hints.
1695203edcdSRuslan ErmilovThis is usually done either interactively from the
1705203edcdSRuslan Ermilov.Xr loader 8 ,
1715203edcdSRuslan Ermilovor automatically via the
1729ff00466SScott Long.Pa /boot/device.hints
1735203edcdSRuslan Ermilovfile.
1745203edcdSRuslan ErmilovThe basic syntax is:
1759ff00466SScott Long.Bd -literal -offset indent
1769ff00466SScott Longhint.device.unit.property="value"
1779ff00466SScott Long.Ed
1782460bdf0SPeter Dufault.Pp
1795203edcdSRuslan ErmilovIndividual
1805203edcdSRuslan Ermilov.Nm
1815203edcdSRuslan Ermilovbus numbers can be wired down to specific controllers with
1829ff00466SScott Longa config line similar to the following:
1839ff00466SScott Long.Bd -literal -offset indent
1849ff00466SScott Longhint.scbus.0.at="ahd1"
1859ff00466SScott Long.Ed
1869ff00466SScott Long.Pp
1875203edcdSRuslan ErmilovThis assigns
1885203edcdSRuslan Ermilov.Nm
1895203edcdSRuslan Ermilovbus number 0 to the
1909ff00466SScott Long.Em ahd1
1919ff00466SScott Longdriver instance.
1929ff00466SScott LongFor controllers supporting more than one bus, a particular bus can be assigned
1939ff00466SScott Longas follows:
1949ff00466SScott Long.Bd -literal -offset indent
1959ff00466SScott Longhint.scbus.0.at="ahc1"
1969ff00466SScott Longhint.scbus.0.bus="1"
1979ff00466SScott Long.Ed
1989ff00466SScott Long.Pp
1995203edcdSRuslan ErmilovThis assigns
2005203edcdSRuslan Ermilov.Nm
2015203edcdSRuslan Ermilovbus 0 to the bus 1 instance on
2022ccd462bSAlexander Motin.Em ahc1 .
2039ff00466SScott LongPeripheral drivers can be wired to a specific bus, target, and lun as so:
2049ff00466SScott Long.Bd -literal -offset indent
2059ff00466SScott Longhint.da.0.at="scbus0"
2069ff00466SScott Longhint.da.0.target="0"
2079ff00466SScott Longhint.da.0.unit="0"
2089ff00466SScott Long.Ed
2099ff00466SScott Long.Pp
2109ff00466SScott LongThis assigns
2119ff00466SScott Long.Em da0
2129ff00466SScott Longto target 0, unit (lun) 0 of scbus 0.
2136d6d0ae4SAlexander MotinOmitting the target or unit hints will instruct
2146d6d0ae4SAlexander Motin.Nm
2156d6d0ae4SAlexander Motinto treat them as wildcards
2169ff00466SScott Longand use the first respective counted instances.
2179ff00466SScott LongThese examples can be combined together to allow a peripheral device to be
2189ff00466SScott Longwired to any particular controller, bus, target, and/or unit instance.
2192460bdf0SPeter Dufault.Pp
2205ee9f050SWarner LoshThis also works with
2215ee9f050SWarner Losh.Xr nvme 4
2225ee9f050SWarner Loshdrives as well.
2235ee9f050SWarner Losh.Bd -literal -offset indent
2245ee9f050SWarner Loshhint.nvme.4.at="pci7:0:0"
2255ee9f050SWarner Loshhint.scbus.10.at="nvme4"
2265ee9f050SWarner Loshhint.nda.10.at="scbus10"
2275ee9f050SWarner Loshhint.nda.10.target="1"
2285ee9f050SWarner Loshhint.nda.10.unit="12"
2295ee9f050SWarner Loshhint.nda.11.at="scbus10"
2305ee9f050SWarner Loshhint.nda.11.target="1"
2315ee9f050SWarner Loshhint.nda.11.unit="2"
2325ee9f050SWarner Losh.Ed
2335ee9f050SWarner Losh.Pp
2345ee9f050SWarner LoshThis assigns the NVMe card living at PCI bus 7 to scbus 10 (in PCIe,
2355ee9f050SWarner Loshslot and function are rarely used and usually 0).
2365ee9f050SWarner LoshThe target for
2375ee9f050SWarner Losh.Xr nda 4
2385ee9f050SWarner Loshdevices is always 1.
2395ee9f050SWarner LoshThe unit is the namespace identifier from the drive.
2405ee9f050SWarner LoshThe namespace id 1 is exported as
2415ee9f050SWarner Losh.Tn nda10
2425ee9f050SWarner Loshand namespace id 2 is exported as
2435ee9f050SWarner Losh.Tn nda11 .
2445ee9f050SWarner Losh.Pp
2452460bdf0SPeter DufaultWhen you have a mixture of wired down and counted devices then the
2462460bdf0SPeter Dufaultcounting begins with the first non-wired down unit for a particular
247b5e7e999SRuslan Ermilovtype.
248b5e7e999SRuslan ErmilovThat is, if you have a disk wired down as
24989045423SKenneth D. Merry.Em "device da1" ,
2502460bdf0SPeter Dufaultthen the first non-wired disk shall come on line as
25189045423SKenneth D. Merry.Em da2 .
252db35f309SDavid Greenman.Sh ADAPTERS
253db35f309SDavid GreenmanThe system allows common device drivers to work through many different
2546d249eeeSSheldon Hearntypes of adapters.
2556d249eeeSSheldon HearnThe adapters take requests from the upper layers and do
256db35f309SDavid Greenmanall IO between the
2575ee9f050SWarner Losh.Tn SCSI ,
2585ee9f050SWarner Losh.Tn ATA ,
2595ee9f050SWarner Losh.Tn NVMe ,
2606d6d0ae4SAlexander Motinor
2615ee9f050SWarner Losh.Tn MMC / SD
2626d249eeeSSheldon Hearnbus and the system.
2636d249eeeSSheldon HearnThe maximum size of a transfer is governed by the
2646d249eeeSSheldon Hearnadapter.
2656d249eeeSSheldon HearnMost adapters can transfer 64KB in a single operation, however
266db35f309SDavid Greenmanmany can transfer larger amounts.
267db35f309SDavid Greenman.Sh TARGET MODE
268db35f309SDavid GreenmanSome adapters support
26989045423SKenneth D. Merry.Em target mode
270db35f309SDavid Greenmanin which the system is capable of operating as a device, responding to
2716d249eeeSSheldon Hearnoperations initiated by another system.
2726d249eeeSSheldon HearnTarget mode is supported for
2736d6d0ae4SAlexander Motinsome adapters, but is not yet complete for this version of the
2746d6d0ae4SAlexander Motin.Nm
27589045423SKenneth D. Merry.Tn SCSI
27689045423SKenneth D. Merrysubsystem.
277db35f309SDavid Greenman.Sh FILES
2785203edcdSRuslan Ermilovsee other
2795203edcdSRuslan Ermilov.Nm
2805203edcdSRuslan Ermilovdevice entries.
281db35f309SDavid Greenman.Sh DIAGNOSTICS
282f0f25b9cSAlexander MotinAn XPT_DEBUG CCB can be used to enable various amounts of tracing information
283f0f25b9cSAlexander Motinon any specific bus/device from the list of options compiled into the kernel.
284f0f25b9cSAlexander MotinThere are currently seven debugging flags that may be compiled in and used:
28589045423SKenneth D. Merry.Bl -tag -width CAM_DEBUG_SUBTRACE
28689045423SKenneth D. Merry.It Dv CAM_DEBUG_INFO
287f0f25b9cSAlexander MotinThis flag enables general informational printfs for the device
28889045423SKenneth D. Merryor devices in question.
28989045423SKenneth D. Merry.It Dv CAM_DEBUG_TRACE
290906671dbSEnji CooperThis flag enables function-level command flow tracing i.e.,
29189045423SKenneth D. Merrykernel printfs will happen at the entrance and exit of various functions.
29289045423SKenneth D. Merry.It Dv CAM_DEBUG_SUBTRACE
293f0f25b9cSAlexander MotinThis flag enables debugging output internal to various functions.
29489045423SKenneth D. Merry.It Dv CAM_DEBUG_CDB
295f0f25b9cSAlexander MotinThis flag will cause the kernel to print out all
296f0f25b9cSAlexander Motin.Tn ATA
297f0f25b9cSAlexander Motinand
29889045423SKenneth D. Merry.Tn SCSI
29989045423SKenneth D. Merrycommands sent to a particular device or devices.
300f0f25b9cSAlexander Motin.It Dv CAM_DEBUG_XPT
301f0f25b9cSAlexander MotinThis flag will enable command scheduler tracing.
302f0f25b9cSAlexander Motin.It Dv CAM_DEBUG_PERIPH
303f0f25b9cSAlexander MotinThis flag will enable peripheral drivers messages.
304f0f25b9cSAlexander Motin.It Dv CAM_DEBUG_PROBE
305f0f25b9cSAlexander MotinThis flag will enable devices probe process tracing.
306db35f309SDavid Greenman.El
30789045423SKenneth D. Merry.Pp
30889045423SKenneth D. MerrySome of these flags, most notably
30989045423SKenneth D. Merry.Dv CAM_DEBUG_TRACE
31089045423SKenneth D. Merryand
311f0f25b9cSAlexander Motin.Dv CAM_DEBUG_SUBTRACE ,
312f0f25b9cSAlexander Motinwill produce kernel printfs in EXTREME numbers.
313f0f25b9cSAlexander Motin.Pp
3145203edcdSRuslan ErmilovUsers can enable debugging from their kernel config file, by using
31589045423SKenneth D. Merrythe following kernel config options:
316f0f25b9cSAlexander Motin.Bl -tag -width CAM_DEBUG_COMPILE
31789045423SKenneth D. Merry.It Dv CAMDEBUG
318f0f25b9cSAlexander MotinThis builds into the kernel all possible
3196d6d0ae4SAlexander Motin.Nm
3206d6d0ae4SAlexander Motindebugging.
321f0f25b9cSAlexander Motin.It Dv CAM_DEBUG_COMPILE
322f0f25b9cSAlexander MotinThis allows to specify support for which debugging flags described above
323f0f25b9cSAlexander Motinshould be built into the kernel.
324b5e7e999SRuslan ErmilovFlags may be ORed together if the user wishes to
32589045423SKenneth D. Merrysee printfs for multiple debugging levels.
326f0f25b9cSAlexander Motin.It Dv CAM_DEBUG_FLAGS
327f0f25b9cSAlexander MotinThis allows to set the various debugging flags from a kernel config file.
32889045423SKenneth D. Merry.It Dv CAM_DEBUG_BUS
329b5e7e999SRuslan ErmilovSpecify a bus to debug.
330db4fcadfSConrad MeyerTo debug all buses, set this to -1.
33189045423SKenneth D. Merry.It Dv CAM_DEBUG_TARGET
332b5e7e999SRuslan ErmilovSpecify a target to debug.
333b5e7e999SRuslan ErmilovTo debug all targets, set this to -1.
33489045423SKenneth D. Merry.It Dv CAM_DEBUG_LUN
335b5e7e999SRuslan ErmilovSpecify a lun to debug.
336b5e7e999SRuslan ErmilovTo debug all luns, set this to -1.
33789045423SKenneth D. Merry.El
33889045423SKenneth D. Merry.Pp
339f0f25b9cSAlexander MotinUsers may also enable debugging on the fly by using the
34089045423SKenneth D. Merry.Xr camcontrol 8
341f0f25b9cSAlexander Motinutility, if wanted options built into the kernel.
3425203edcdSRuslan ErmilovSee
34389045423SKenneth D. Merry.Xr camcontrol 8
34489045423SKenneth D. Merryfor details.
345db35f309SDavid Greenman.Sh SEE ALSO
3466d6d0ae4SAlexander Motin.Xr ada 4 ,
347e0e5145cSWolfram Schneider.Xr aha 4 ,
34889045423SKenneth D. Merry.Xr ahc 4 ,
3496d6d0ae4SAlexander Motin.Xr ahci 4 ,
350906671dbSEnji Cooper.Xr ahd 4 ,
3516d6d0ae4SAlexander Motin.Xr ata 4 ,
352e0e5145cSWolfram Schneider.Xr bt 4 ,
3530b992c1dSWolfram Schneider.Xr cd 4 ,
3540b992c1dSWolfram Schneider.Xr ch 4 ,
35589045423SKenneth D. Merry.Xr da 4 ,
356*4d21bbd1SWarner Losh.Xr nda 4 ,
3575ee9f050SWarner Losh.Xr nvme 4 ,
35889045423SKenneth D. Merry.Xr pass 4 ,
35989045423SKenneth D. Merry.Xr pt 4 ,
36089045423SKenneth D. Merry.Xr sa 4 ,
36189045423SKenneth D. Merry.Xr xpt 4 ,
36289045423SKenneth D. Merry.Xr camcontrol 8
363db35f309SDavid Greenman.Sh HISTORY
3646d6d0ae4SAlexander MotinThe
3656d6d0ae4SAlexander Motin.Nm
36689045423SKenneth D. Merry.Tn SCSI
36789045423SKenneth D. Merrysubsystem first appeared in
36889045423SKenneth D. Merry.Fx 3.0 .
3696d6d0ae4SAlexander MotinThe
3706d6d0ae4SAlexander Motin.Nm
3716d6d0ae4SAlexander MotinATA support was added in
3726d6d0ae4SAlexander Motin.Fx 8.0 .
37389045423SKenneth D. Merry.Sh AUTHORS
374f4d874a1SRuslan Ermilov.An -nosplit
3756d6d0ae4SAlexander MotinThe
3766d6d0ae4SAlexander Motin.Nm
37789045423SKenneth D. Merry.Tn SCSI
378def37e7cSMike Pritchardsubsystem was written by
379def37e7cSMike Pritchard.An Justin Gibbs
380def37e7cSMike Pritchardand
381def37e7cSMike Pritchard.An Kenneth Merry .
3826d6d0ae4SAlexander MotinThe
3836d6d0ae4SAlexander Motin.Nm
3846d6d0ae4SAlexander Motin.Tn ATA
3856d6d0ae4SAlexander Motinsupport was added by
3866c899950SBaptiste Daroussin.An Alexander Motin Aq Mt mav@FreeBSD.org .
3875ee9f050SWarner LoshThe
3885ee9f050SWarner Losh.Nm
3895ee9f050SWarner Losh.Tn NVMe
3905ee9f050SWarner Loshsupport was added by
3915ee9f050SWarner Losh.An Warner Losh Aq Mt imp@FreeBSD.org .
392