home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / S2R10_C.ZIP / S2R10C06.SI < prev    next >
Text File  |  1990-03-09  |  66KB  |  1,426 lines

  1. .RR--!--!--!--!--!--!--!--!--!--!--!--!--!--!--!--!--!--!--!--!--!--!--!--!--!--!
  2. .PL 62
  3. .LM 1
  4. .RM 78
  5. .MT3
  6. .MB4
  7. .HM1
  8. .FM1
  9. .PO10
  10. .CW10
  11. .SR2
  12. .UJ0
  13. .OJ0
  14. .UL1
  15. .heSCSI Commands and Status                                                3/9/90
  16. .foSCSI-2 draft proposed American National Standard        6-#      Revision 10c
  17. .pn 1
  18. .cp 30
  19. .aw off
  20. .pm 0
  21. 6. SCSI Commands and Status
  22. .aw on
  23. .pm 3
  24.  
  25. ááThi≤ sectioε define≤ thσ SCS╔ commanΣ anΣ statu≤ structure≤ anΣ give≤ ì
  26. severa∞ examples.
  27.  
  28. ááB∙ keepinτ t∩ ß minimuφ thσ function≤ essentia∞ t∩ communicatσ viß thi≤ ì
  29. protocol¼ ß widσ rangσ oµ periphera∞ device≤ oµ varyinτ capabilit∙ caε operatσ ì
  30. iε thσ samσ environment«  Becausσ subset≤ oµ thσ ful∞ architecturσ ma∙ bσ ì
  31. implemented¼ optiona∞ function≤ arσ noted.
  32.  
  33. .cp 20
  34. .aw off
  35. .pm 0
  36. 6.1. CommanΣ Implementatioε Requirements
  37. .aw on
  38. .pm 3
  39.  
  40. ááThσ firs⌠ bytσ oµ al∞ SCS╔ command≤ shal∞ contaiε aε operatioε codσ a≤ ì
  41. defineΣ iε thi≤ standard«  Target≤ shal∞ implemen⌠ al∞ command≤ witΦ ß ì
  42. mandator∙ operatioε codσ (seσ 6.1.2⌐ botΦ iε sectioε ╖ anΣ iε thσ appropriatσ ì
  43. sectioε fo≥ thei≥ devicσ type.
  44.  
  45. .cp 10
  46. .aw off
  47. .pm 0
  48. 6.1.1. Reserved
  49. .aw on
  50. .pm 3
  51.  
  52. ááReserveΣ bits¼ fields¼ bytes¼ anΣ codσ value≤ arσ se⌠ asidσ fo≥ futurσ ì
  53. standardization«  Thei≥ usσ anΣ interpretatioε ma∙ bσ specifieΣ b∙ futurσ ì
  54. extension≤ t∩ thi≤ standard«  ┴ reserveΣ bit¼ field¼ o≥ bytσ shal∞ bσ se⌠ t∩ ì
  55. zero¼ o≥ iε accordancσ witΦ ß futurσ extensioε t∩ thi≤ standard«  ┴ targe⌠ ì
  56. tha⌠ receive≤ ß reserveΣ bit¼ field¼ o≥ bytσ tha⌠ i≤ no⌠ zer∩ o≥ receive≤ ß ì
  57. reserveΣ codσ valuσ shal∞ terminatσ thσ commanΣ witΦ CHEC╦ CONDITIO╬ statu≤ ì
  58. anΣ thσ sensσ ke∙ shal∞ bσ se⌠ t∩ ILLEGA╠ REQUEST«  I⌠ shal∞ als∩ bσ ì
  59. acceptablσ fo≥ ß targe⌠ t∩ interpre⌠ ß bit¼ field¼ byte¼ o≥ codσ valuσ iε ì
  60. accordancσ witΦ ß futurσ extensioε t∩ thi≤ standard.
  61.  
  62. .cp 20
  63. .aw off
  64. .pm 1
  65. 6.1.2. Operatioε Codσ Types
  66. .aw on
  67. .pm 3
  68.  
  69. .pm 1
  70. Operatioε 
  71. Codσ Typσ  Description
  72. ¡¡¡¡¡¡¡¡¡  ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡-
  73. .lm  12
  74. M          Mandator∙ ¡ Command≤ s∩ designateΣ shal∞ bσ implementeΣ iε orde≥ t∩ ì
  75. ááááááááááámee⌠ thσ minimuφ requiremen⌠ oµ thi≤ standard.
  76.  
  77. O          Optiona∞ ¡ Command≤ s∩ designated¼ iµ implemented¼ shal∞ bσ ì
  78. áááááááááááimplementeΣ a≤ defineΣ iε thi≤ standard.
  79.  
  80. V          Vendo≥ specifiπ ¡ Operatioε code≤ s∩ designateΣ arσ availablσ fo≥ ì
  81. ááááááááááávendo≥ defineΣ commands«  Seσ thσ vendo≥ specification≤ wherσ ì
  82. ááááááááááácompatibilit∙ i≤ desired.
  83.  
  84. R          ReserveΣ ¡ Operatioε code≤ s∩ designateΣ shal∞ no⌠ bσ used«  The∙ ì
  85. áááááááááááarσ reserveΣ fo≥ futurσ extension≤ t∩ thi≤ standard.
  86. .lm 1
  87.  
  88.  
  89.  
  90. .cp 14è.aw off
  91. .pm 0
  92. 6.2. CommanΣ Descripto≥ Block
  93. .aw on
  94. .pm 3
  95.  
  96. áá┴ commanΣ i≤ communicateΣ b∙ sendinτ ß commanΣ descripto≥ blocδ t∩ thσ ì
  97. target«  Fo≥ severa∞ commands¼ thσ commanΣ descripto≥ blocδ i≤ accompanieΣ b∙ ì
  98. ß lis⌠ oµ parameter≤ sen⌠ durinτ thσ DAT┴ OU╘ phase«  Seσ thσ specifiπ ì
  99. command≤ fo≥ detaileΣ information.
  100.  
  101. ááThσ commanΣ descripto≥ blocδ alway≤ ha≤ aε operatioε codσ a≤ it≤ firs⌠ bytσ ì
  102. anΣ ß contro∞ bytσ a≤ it≤ las⌠ byte.
  103.  
  104. ááFo≥ al∞ commands¼ iµ therσ i≤ aε invaliΣ paramete≥ iε thσ commanΣ descripto≥ ì
  105. block¼ theε thσ targe⌠ shal∞ terminatσ thσ commanΣ withou⌠ alterinτ thσ ì
  106. medium.
  107.  
  108.  
  109. .cp 20
  110. .aw off
  111. .pm 1
  112.       Table 6-1: Typical Command Descriptor Block for Six-byte Commands
  113.  
  114. ==============================================================================
  115.   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
  116. Byte |        |        |        |        |        |        |        |        |
  117. ==============================================================================
  118.  0   |                           Operation Code                              |
  119. -----|-----------------------------------------------------------------------|
  120.  1   |   Logical Unit Number    ⁿ (MSB⌐                                      |
  121. -----|-----------------------------¡                                      ---|
  122.  2   |                           Logical Block Address (if required)         |
  123. -----|--¡                                                                 ---|
  124.  3   |                                                                 (LSB⌐ |
  125. -----|-----------------------------------------------------------------------|
  126.      |                           Transfer Length (if required)               |
  127.  4   ⁿ                           Paramete≥ Lis⌠ LengtΦ (iµ required⌐         |
  128.      |                           Allocatioε LengtΦ (if required)             |
  129. -----|-----------------------------------------------------------------------|
  130.  5   |                           Control                                     |
  131. ==============================================================================
  132. .aw on
  133. .pm 3
  134.  
  135.  
  136. .cp 26è.aw off
  137. .pm 1
  138.       Table 6-2: Typical Command Descriptor Block for Ten-byte Commands
  139.  
  140. ==============================================================================
  141.   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
  142. Byte |        |        |        |        |        |        |        |        |
  143. ==============================================================================
  144.  0   |                           Operation Code                              |
  145. -----|-----------------------------------------------------------------------|
  146.  1   |   Logical Unit Number    |                  ReservσΣ                  |
  147. -----|-----------------------------------------------------------------------|
  148.  2   | (MSB)                                                                 |
  149. -----|--¡                                                                 ---|
  150.  3   |                                                                       |
  151. -----|--¡                        Logical Block Address (if required)      ---|
  152.  4   |                                                                       |
  153. -----|--¡                                                                 ---|
  154.  5   |                                                                 (LSB) |
  155. -----|-----------------------------------------------------------------------|
  156.  6   |                           Reserved                                    |
  157. -----|-----------------------------------------------------------------------|
  158.  7   ⁿ (MSB)                     Transfer Length (if required)               |
  159. -----|--¡                        Paramete≥ Lis⌠ LengtΦ (iµ required⌐      ---|
  160.  8   |                           Allocatioε LengtΦ (if required)       (LSB) |
  161. -----|-----------------------------------------------------------------------|
  162.  9   |                           Contro∞                                     |
  163. ==============================================================================
  164. .aw on
  165. .pm 3
  166.  
  167. .cp 30è.aw off
  168. .pm 1
  169.     Table 6-3: Typical Command Descriptor Block for Twelve-byte Commands
  170.  
  171. ==============================================================================
  172.   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
  173. Byte |        |        |        |        |        |        |        |        |
  174. ==============================================================================
  175.  0   |                           Operation Code                              |
  176. -----|-----------------------------------------------------------------------|
  177.  1   |   Logical Unit Number    |                  ReserveΣ                  |
  178. -----|-----------------------------------------------------------------------|
  179.  2   | (MSB)                                                                 |
  180. -----|--¡                                                                 ---|
  181.  3   |                                                                       |
  182. -----|--¡                        Logical Block Address (if required)      ---|
  183.  4   |                                                                       |
  184. -----|--¡                                                                 ---|
  185.  5   |                                                                 (LSB) |
  186. -----|-----------------------------------------------------------------------|
  187.  6   | (MSB⌐                                                                 |
  188. -----|--¡                                                                 ---|
  189.  7   ⁿ                           Transfer Length (if required)               |
  190. -----|--¡                        Paramete≥ Lis⌠ LengtΦ (iµ required⌐      ---|
  191.  8   |                           Allocatioε LengtΦ (if required)             |
  192. -----|--¡                                                                 ---|
  193.  9   |                                                                 (LSB) |
  194. -----|-----------------------------------------------------------------------|
  195. 10   |                           ReserveΣ                                    |
  196. -----|-----------------------------------------------------------------------|
  197. 11   |                           Control                                     |
  198. ==============================================================================
  199. .aw on
  200. .pm 3
  201.  
  202. .cp 10
  203. .aw off
  204. .pm 0
  205. 6.2.1. Operatioε Code
  206. .aw on
  207. .pm 3
  208.  
  209. ááThσ operatioε codσ (Tablσ ╢-4⌐ oµ thσ commanΣ descripto≥ blocδ ha≤ ß grou≡ ì
  210. codσ fielΣ anΣ ß commanΣ codσ field«  Thσ threσ-bi⌠ grou≡ codσ fielΣ provide≤ ì
  211. fo≥ eigh⌠ group≤ oµ commanΣ codes«  Thσ fivσ-bi⌠ commanΣ codσ fielΣ provide≤ ì
  212. fo≥ thirt∙-tw∩ commanΣ code≤ iε eacΦ group«  Thus¼ ß tota∞ oµ 25╢ possiblσ ì
  213. operatioε code≤ exist«  Operatioε code≤ arσ defineΣ iε thσ subsequen⌠ Section≤ ì
  214. oµ thi≤ document.
  215.  
  216. .cp 12
  217. ááThσ grou≡ codσ specifie≤ onσ oµ thσ followinτ groups:
  218.  
  219. ááGrou≡ ░ ¡ si°-bytσ command≤ (seσ Tablσ ╢-1)
  220. ááGrou≡ ▒ ¡ teε-bytσ command≤ (seσ Tablσ ╢-2)
  221. ááGrou≡ ▓ ¡ teε-bytσ command≤ (seσ Tablσ ╢-2)
  222. ááGrou≡ │ ¡ reserved
  223. ááGrou≡ ┤ ¡ reserved
  224. ááGrou≡ ╡ ¡ twelvσ-bytσ command≤ (seσ Tablσ ╢-3)
  225. ááGrou≡ ╢ ¡ vendo≥ specifiπ 
  226. ááGrou≡ ╖ ¡ vendo≥ specific
  227.  
  228. .cp 8è.aw off
  229. .pm 1
  230.                           Table 6-4: Operation Code
  231.  
  232. ==============================================================================
  233.   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
  234. ==============================================================================
  235.      |        Group Code        |                Command Code                |
  236. ==============================================================================
  237. .aw on
  238. .pm 3
  239.  
  240.  
  241. .cp 10
  242. .aw off
  243. .lm 1
  244. .pm 0
  245. 6.2.2. Logica∞ Uni⌠ Number
  246. .aw on
  247. .pm 3
  248.  
  249. ááThσ logica∞ uni⌠ numbe≥ i≤ defineΣ iε thσ IDENTIF┘ messagσ (5.6.7)«  Thσ ì
  250. targe⌠ shal∞ ignorσ thσ logica∞ uni⌠ numbe≥ specifieΣ withiε thσ commanΣ ì
  251. descripto≥ blocδ iµ aε IDENTIF┘ messagσ wa≤ received«  I⌠ i≤ recommendeΣ tha⌠ ì
  252. thσ logica∞ uni⌠ numbe≥ iε thσ commanΣ descripto≥ blocδ bσ se⌠ t∩ zero«  
  253.  
  254. .lm 3
  255. ááNOTICE║  Thσ logica∞ uni⌠ numbe≥ fielΣ i≤ includeΣ iε thσ commanΣ descripto≥ ì
  256. ááblocδ fo≥ compatibilit∙ witΦ somσ SCS╔-▒ devices«  Thi≤ fielΣ ma∙ bσ ì
  257. ááreclaimeΣ iε SCS╔-3«  Ne≈ implementation≤ shoulΣ usσ thσ outbounΣ IDENTIF┘ ì
  258. áámessage¼ whicΦ i≤ mandator∙ iε SCS╔-2¼ t∩ establisΦ thσ I_T_╠ nexus.
  259. .lm 1
  260.  
  261.  
  262. .cp 10
  263. .aw off
  264. .pm 0
  265. 6.2.3. Logica∞ Blocδ Address
  266. .aw on
  267. .pm 3
  268.  
  269. ááThσ logica∞ blocδ addres≤ oε logica∞ unit≤ o≥ withiε ß partitioε oε devicσ ì
  270. volume≤ shal∞ begiε witΦ blocδ zer∩ anΣ bσ contiguou≤ u≡ t∩ thσ las⌠ logica∞ ì
  271. blocδ oε tha⌠ logica∞ uni⌠ o≥ withiε tha⌠ partition.
  272.  
  273. áá┴ si°-bytσ commanΣ descripto≥ blocδ contain≤ ß 2▒-bi⌠ logica∞ blocδ address«  ì
  274. Thσ teε-bytσ anΣ thσ twelvσ-bytσ commanΣ descripto≥ block≤ contaiε 3▓-bi⌠ ì
  275. logica∞ blocδ addresses«  Logica∞ blocδ addresse≤ iε additiona∞ paramete≥ datß ì
  276. havσ thei≥ lengtΦ specifieΣ fo≥ eacΦ occurrence«  Seσ thσ specifiπ commanΣ ì
  277. descriptions.
  278.  
  279. .cp 10
  280. .aw off
  281. .pm 0
  282. 6.2.4. Transfe≥ Length
  283. .aw on
  284. .pm 3
  285.  
  286. ááThσ transfe≥ lengtΦ fielΣ specifie≤ thσ amoun⌠ oµ datß t∩ bσ transferred¼ ì
  287. usuall∙ thσ numbe≥ oµ blocks«  Fo≥ severa∞ command≤ thσ transfe≥ lengtΦ ì
  288. indicate≤ thσ requesteΣ numbe≥ oµ byte≤ t∩ bσ sen⌠ a≤ defineΣ iε thσ commanΣ ì
  289. description«  Fo≥ thesσ command≤ thσ transfe≥ lengtΦ fielΣ ma∙ bσ identifieΣ ì
  290. b∙ ß differen⌠ name«  Seσ thσ followinτ description≤ anΣ thσ individua∞ ì
  291. commanΣ description≤ fo≥ furthe≥ information.
  292.  
  293. ááCommand≤ tha⌠ usσ onσ bytσ fo≥ thσ transfe≥ lengtΦ allo≈ u≡ t∩ 25╢ block≤ oµ ì
  294. datß t∩ bσ transferreΣ b∙ onσ command«  ┴ transfe≥ lengtΦ valuσ oµ ▒ t∩ 25╡ ì
  295. indicate≤ thσ numbe≥ oµ block≤ tha⌠ shal∞ bσ transferred«  ┴ valuσ oµ zer∩ ì
  296. indicate≤ 25╢ blocks.
  297.  
  298. ááIε command≤ tha⌠ usσ multiplσ byte≤ fo≥ thσ transfe≥ length¼ ß transfe≥ ì
  299. lengtΦ oµ zer∩ indicate≤ tha⌠ n∩ datß transfe≥ shal∞ takσ place«  ┴ valuσ oµ ì
  300. onσ o≥ greate≥ indicate≤ thσ numbe≥ oµ block≤ tha⌠ shal∞ bσ transferred.
  301.  
  302. ááRefe≥ t∩ thσ specifiπ commanΣ descriptioε fo≥ furthe≥ information.
  303.  
  304. .cp 10è.aw off
  305. .pm 0
  306. 6.2.5. Paramete≥ Lis⌠ Length
  307. .aw on
  308. .pm 3
  309.  
  310. ááThσ paramete≥ lis⌠ lengtΦ i≤ useΣ t∩ specif∙ thσ numbe≥ oµ byte≤ sen⌠ durinτ ì
  311. thσ DAT┴ OU╘ phase«  Thi≤ fielΣ i≤ typicall∙ useΣ iε commanΣ descripto≥ block≤ ì
  312. fo≥ parameter≤ tha⌠ arσ sen⌠ t∩ ß targe⌠ (e.g.¼ modσ parameters¼ diagnostiπ ì
  313. parameters¼ loτ parameters¼ etc.)«  ┴ paramete≥ lengtΦ oµ zer∩ indicate≤ tha⌠ ì
  314. n∩ datß shal∞ bσ transferred«  Thi≤ conditioε shal∞ no⌠ bσ considereΣ a≤ aε ì
  315. error«  
  316.  
  317. .cp 10
  318. .aw off
  319. .pm 0
  320. 6.2.6. Allocatioε Length
  321. .aw on
  322. .pm 3
  323.  
  324. ááThσ allocatioε lengtΦ fielΣ specifie≤ thσ maximuφ numbe≥ oµ byte≤ tha⌠ aε ì
  325. initiato≥ ha≤ allocateΣ fo≥ returneΣ data«  Aε allocatioε lengtΦ oµ zer∩ ì
  326. indicate≤ tha⌠ n∩ datß shal∞ bσ transferred«  Thi≤ conditioε shal∞ no⌠ bσ ì
  327. considereΣ a≤ aε error«  Thσ targe⌠ shal∞ terminatσ thσ DAT┴ I╬ phasσ wheε ì
  328. allocatioε lengtΦ byte≤ havσ beeε transferreΣ o≥ wheε al∞ availablσ datß havσ ì
  329. beeε transferreΣ t∩ thσ initiator¼ whicheve≥ i≤ less«  
  330.  
  331. ááThσ allocatioε lengtΦ i≤ useΣ t∩ limi⌠ thσ maximuφ amoun⌠ oµ datß (e.g.¼ ì
  332. sensσ data¼ modσ data¼ loτ data¼ diagnostiπ data¼ etc.⌐ returneΣ t∩ aε ì
  333. initiator.
  334.  
  335. .cp 45è.cp 10
  336. .aw off
  337. .pm 0
  338. 6.2.7. Contro∞ Field
  339. .aw on
  340. .pm 3
  341.  
  342. ááThσ contro∞ fielΣ i≤ thσ las⌠ bytσ oµ ever∙ commanΣ descripto≥ block«  Thσ ì
  343. contro∞ fielΣ i≤ defineΣ iε Tablσ ╢-5.
  344.  
  345. .cp 35
  346. .aw off
  347. .pm 1
  348.                            Table 6-5: Control Field
  349.  
  350. ==============================================================================
  351.   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
  352. ==============================================================================
  353.      | Vendor specific |         ReserveΣ                  |  Flag  |  Link  |
  354. ==============================================================================
  355. .aw on
  356. .pm 3
  357.  
  358.  
  359. ááThσ flaτ bi⌠ specifie≤ whicΦ messagσ thσ targe⌠ shal∞ returε t∩ thσ ì
  360. initiato≥ iµ thσ linδ bi⌠ i≤ onσ anΣ thσ commanΣ complete≤ withou⌠ error«  ì
  361. Implementatioε oµ thσ flaτ bi⌠ i≤ optional«  
  362.  
  363. ááThσ flaτ bi⌠ shoulΣ bσ se⌠ t∩ zer∩ iµ thσ linδ bi⌠ i≤ zero«  Iµ linδ bi⌠ i≤ ì
  364. zer∩ anΣ thσ flaτ bi⌠ i≤ one¼ thσ targe⌠ shal∞ returε CHEC╦ CONDITIO╬ status«  ì
  365. Thσ sensσ ke∙ shal∞ bσ se⌠ t∩ ILLEGA╠ REQUEST.
  366.  
  367. ááIµ thσ flaτ bi⌠ i≤ zer∩ anΣ thσ linδ bi⌠ i≤ one¼ anΣ iµ thσ commanΣ ì
  368. complete≤ successfully¼ thσ targe⌠ shal∞ senΣ thσ LINKE─ COMMAN─ COMPLET┼ ì
  369. message«  Iµ thσ flaτ bi⌠ i≤ onσ anΣ thσ linδ bi⌠ i≤ one¼ anΣ iµ thσ commanΣ ì
  370. complete≤ successfully¼ thσ targe⌠ shal∞ senΣ thσ LINKE─ COMMAN─ COMPLET┼ ì
  371. (WIT╚ FLAG⌐ message«  
  372.  
  373. .pm 0
  374. .lm 3
  375. ááIMPLEMENTOR╙ NOTE║  Thσ flaτ bi⌠ i≤ typicall∙ useΣ t∩ causσ aε interrup⌠ iε ì
  376. ááthσ initiato≥ betweeε linkeΣ commands.
  377. .pm 3
  378. .lm 1
  379.  
  380. ááThσ linδ bi⌠ i≤ useΣ t∩ continuσ thσ I/╧ proces≤ acros≤ multiplσ commands«  ì
  381. Implementatioε oµ thσ linδ bi⌠ i≤ optional«  
  382.  
  383. áá┴ linδ bi⌠ oµ onσ indicate≤ tha⌠ thσ initiato≥ request≤ ß continuatioε oµ ì
  384. thσ I/╧ proces≤ anΣ tha⌠ thσ targe⌠ shoulΣ ente≥ thσ commanΣ phasσ upoε ì
  385. successfu∞ completioε oµ thσ curren⌠ command« 
  386.  
  387. ááIµ thσ linδ bi⌠ i≤ one¼ anΣ iµ thσ commanΣ complete≤ successfully¼ thσ ì
  388. targe⌠ shal∞ returε INTERMEDIAT┼ o≥ INTERMEDIAT┼-CONDITIO╬ ME╘ statu≤ anΣ ì
  389. shal∞ theε senΣ onσ oµ thσ tw∩ message≤ defineΣ b∙ thσ flaτ bit.
  390.  
  391. ááIµ eithe≥ oµ thσ linδ anΣ flaτ bit≤ arσ se⌠ t∩ one¼ anΣ thσ targe⌠ doe≤ no⌠ ì
  392. implemen⌠ linkeΣ commands¼ i⌠ shal∞ returε CHEC╦ CONDITIO╬ status«  Thσ sensσ ì
  393. ke∙ shal∞ bσ se⌠ t∩ ILLEGA╠ REQUEST.
  394.  
  395.  
  396. .cp 20è.aw off
  397. .pm 0
  398. 6.3. Status 
  399. .aw on
  400. .pm 3
  401.  
  402. ááThσ statu≤ bytσ anΣ statu≤ bytσ codσ arσ specifieΣ iε Table≤ ╢-╢ anΣ ╢-7«  ┴ ì
  403. statu≤ bytσ shal∞ bσ sen⌠ froφ thσ targe⌠ t∩ thσ initiato≥ durinτ thσ STATU╙ ì
  404. phasσ a⌠ thσ completioε oµ eacΦ commanΣ unles≤ thσ commanΣ i≤ terminateΣ b∙ ì
  405. onσ oµ thσ followinτ events║  
  406. áá(1⌐ aε ABOR╘ message
  407. áá(2⌐ aε ABOR╘ TA╟ message
  408. áá(3⌐ ß BU╙ DEVIC┼ RESE╘ message
  409. áá(4⌐ ß CLEA╥ QUEU┼ message
  410. áá(5⌐ ß harΣ rese⌠ condition
  411. áá(6⌐ aε unexpecteΣ disconnec⌠ (seσ 5.1.1)
  412.  
  413. ááThσ STATU╙ phasσ normall∙ occur≤ a⌠ thσ enΣ oµ ß commanΣ bu⌠ iε somσ casσ ì
  414. ma∙ occu≥ prio≥ t∩ transferrinτ thσ commanΣ descripto≥ block.
  415.  
  416. .cp 10
  417. .aw off
  418. .pm 1
  419.                            Table 6-6: Status Byte
  420.  
  421. ==============================================================================
  422.   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
  423. ==============================================================================
  424.      |     Reserved    |               Status Byte Code             |Reserved|
  425. ==============================================================================
  426. .aw on
  427. .pm 3
  428.  
  429. .cp 30
  430. .aw off
  431. .pm 1
  432.                          Table 6-7: Status Byte Code 
  433.  
  434. ==============================================================================
  435.      Bits of Status Byte
  436. -----------------------------
  437. 7   6   5   4   3   2   1   0    Status
  438. ------------------------------------------------------------------------------
  439. R   R   0   0   0   0   0   R    GOOD
  440. R   R   0   0   0   0   1   R    CHECK CONDITION
  441. R   R   0   0   0   1   0   R    CONDITION MET
  442. R   R   0   0   1   0   0   R    BUSY
  443. R   R   0   1   0   0   0   R    INTERMEDIATE
  444. R   R   0   1   0   1   0   R    INTERMEDIATE-CONDITION MET
  445. R   R   0   1   1   0   0   R    RESERVATION CONFLICT
  446. R   R   1   0   0   0   1   R    COMMAN─ TERMINATED
  447. R   R   1   0   1   0   0   R    QUEU┼ FULL
  448.  
  449.      Al∞ Othe≥ Codes             Reserved
  450. ==============================================================================
  451.  
  452. Key: R - Reserved bit
  453. .aw on
  454. .pm 3
  455.  
  456. .cp 5
  457. áá┴ definitioε oµ thσ statu≤ bytσ code≤ i≤ giveε below.
  458.  
  459. ááGOOD.é  Thi≤ statu≤ indicate≤ tha⌠ thσ targe⌠ ha≤ successfull∙ completeΣ thσ ì
  460. command.
  461.  
  462. ááCHEC╦ CONDITION.é  Thi≤ statu≤ indicate≤ tha⌠ ß contingen⌠ allegiancσ ì
  463. conditioε ha≤ occurreΣ (seσ 6.6).
  464.  
  465. .c≡ 6èááCONDITIO╬ MET.é  Thi≤ statu≤ o≥ INTERMEDIAT┼-CONDITIO╬ ME╘ i≤ returneΣ ì
  466. wheneve≥ thσ requesteΣ operatioε i≤ satisfieΣ (seσ thσ SEARC╚ DAT┴ anΣ PR┼-ì
  467. FETC╚ commands)«  
  468.  
  469. ááBUSY.é  Thi≤ statu≤ indicate≤ tha⌠ thσ targe⌠ i≤ busy«  Thi≤ statu≤ shal∞ bσ ì
  470. returneΣ wheneve≥ ß targe⌠ i≤ unablσ t∩ accep⌠ ß commanΣ froφ aε otherwisσ ì
  471. acceptablσ initiato≥ (i.e.¼ n∩ reservatioε conflicts)«  Thσ recommendeΣ ì
  472. initiato≥ recover∙ actioε i≤ t∩ issuσ thσ commanΣ agaiε a⌠ ß late≥ time.
  473.  
  474. .cp 5
  475. ááINTERMEDIATE.é  Thi≤ statu≤ o≥ INTERMEDIAT┼-CONDITIO╬ ME╘ shal∞ bσ returneΣ ì
  476. fo≥ ever∙ successfull∙ completeΣ commanΣ iε ß serie≤ oµ linkeΣ command≤ ì
  477. (excep⌠ thσ las⌠ command)¼ unles≤ thσ commanΣ i≤ terminateΣ witΦ CHEC╦ ì
  478. CONDITION¼ RESERVATIO╬ CONFLICT¼ o≥ COMMAN─ TERMINATE─ status«  Iµ ì
  479. INTERMEDIAT┼ o≥ INTERMEDIAT┼-CONDITIO╬ ME╘ statu≤ i≤ no⌠ returned¼ thσ serie≤ ì
  480. oµ linkeΣ command≤ i≤ terminateΣ anΣ thσ I/╧ proces≤ i≤ ended.
  481.  
  482. ááINTERMEDIAT┼-CONDITIO╬ MET.é  Thi≤ statu≤ i≤ thσ combinatioε oµ thσ CONDITIO╬ ì
  483. ME╘ anΣ INTERMEDIAT┼ statuses.
  484.  
  485. ááRESERVATIO╬ CONFLICT.é  Thi≤ statu≤ shal∞ bσ returneΣ wheneve≥ aε initiato≥ ì
  486. attempt≤ t∩ acces≤ ß logica∞ uni⌠ o≥ aε exten⌠ withiε ß logica∞ uni⌠ tha⌠ i≤ ì
  487. reserveΣ witΦ ß conflictinτ reservatioε typσ fo≥ anothe≥ SCS╔ devicσ (seσ thσ ì
  488. RESERV┼ anΣ RESERV┼ UNI╘ commands)«  Thσ recommendeΣ initiato≥ recover∙ actioε ì
  489. i≤ t∩ issuσ thσ commanΣ agaiε a⌠ ß late≥ time.
  490.  
  491. ááCOMMAN─ TERMINATED.é  Thi≤ statu≤ shal∞ bσ returneΣ wheneve≥ thσ targe⌠ ì
  492. terminate≤ thσ curren⌠ I/╧ proces≤ afte≥ receivinτ ß TERMINAT┼ I/╧ PROCES╙ ì
  493. messagσ (seσ 5.6.22)«  Thi≤ statu≤ als∩ indicate≤ tha⌠ ß contingen⌠ allegiancσ ì
  494. conditioε ha≤ occurreΣ (seσ 6.6).
  495.  
  496. ááQUEU┼ FULL.é  Thi≤ statu≤ shal∞ bσ implementeΣ iµ taggeΣ queuinτ i≤ ì
  497. implemented«  Thi≤ statu≤ i≤ returneΣ wheε ß SIMPL┼ QUEU┼ TAG¼ ORDERE─ QUEU┼ ì
  498. TAG¼ o≥ HEA─ O╞ QUEU┼ TA╟ messagσ i≤ receiveΣ anΣ thσ commanΣ queuσ i≤ full«  ì
  499. Thσ I/╧ proces≤ i≤ no⌠ placeΣ iε thσ commanΣ queue.
  500. .lm 1
  501. .pm 3
  502.  
  503. .cp 20
  504. .aw off
  505. .pm 0
  506. 6.4. CommanΣ Examples
  507. .aw on
  508. .pm 3
  509.  
  510. ááThσ followinτ section≤ givσ example≤ oµ typica∞ commanΣ processinτ iε thσ ì
  511. SCS╔ environment«  
  512.  
  513.  
  514. .cp 10
  515. .aw off
  516. .pm 0
  517. 6.4.1. Singlσ CommanΣ Example
  518. .aw on
  519. .pm 3
  520. ááAε I/╧ proces≤ containinτ onσ untaggeΣ REA─ commanΣ i≤ useΣ iε thi≤ sectioε ì
  521. t∩ illustratσ ß simplσ I/╧ proces≤ oε thσ SCS╔ bus«  Thi≤ examplσ doe≤ no⌠ ì
  522. includσ erro≥ o≥ exceptioε conditions.
  523.  
  524. ááThσ initiato≥ ha≤ onσ se⌠ oµ activσ pointer≤ tha⌠ include≤ ß commanΣ ì
  525. pointer¼ ß datß pointer¼ anΣ ß statu≤ pointer«  Iε addition¼ thσ initiato≥ ha≤ ì
  526. onσ se⌠ oµ saveΣ pointer≤ fo≥ eacΦ I/╧ proces≤ tha⌠ i⌠ i≤ ablσ t∩ concurrentl∙ ì
  527. manage«  Thσ initiato≥ set≤ u≡ thσ saveΣ pointer≤ t∩ poin⌠ t∩ thσ appropriatσ ì
  528. byte≤ fo≥ thσ I/╧ proces≤ anΣ copie≤ thσ saveΣ pointer≤ t∩ thσ activσ ì
  529. pointers«  I⌠ theε arbitrate≤ fo≥ thσ SCS╔ bus¼ anΣ upoε winninτ arbitration¼ ì
  530. select≤ thσ target«  Oncσ thσ targe⌠ i≤ selected¼ thσ targe⌠ assume≤ contro∞ ì
  531. oµ thσ I/╧ process.
  532. è.cp 6
  533. ááDurinτ thσ SELECTIO╬ phase¼ thσ initiato≥ assert≤ thσ AT╬ signa∞ t∩ inforφ ì
  534. thσ targe⌠ tha⌠ thσ initiato≥ wishe≤ t∩ senΣ ß message«  Thσ targe⌠ enter≤ thσ ì
  535. MESSAG┼ OU╘ phasσ anΣ transfer≤ thσ IDENTIF┘ messagσ froφ thσ initiator«  Thi≤ ì
  536. messagσ inform≤ thσ targe⌠ oµ whicΦ logica∞ uni⌠ i≤ t∩ bσ used«  A⌠ thi≤ ì
  537. point¼ aε I_T_╠ nexu≤ ha≤ beeε establisheΣ fo≥ thσ I/╧ process«  Thi≤ nexu≤ ì
  538. associate≤ thσ initiator'≤ pointer≤ witΦ thσ I/╧ process.
  539.  
  540. ááThσ targe⌠ switche≤ t∩ thσ COMMAN─ phasσ anΣ transfer≤ thσ commanΣ ì
  541. descripto≥ blocδ froφ thσ initiator«  Iε thi≤ case¼ thσ commanΣ descripto≥ ì
  542. blocδ contain≤ ß REA─ command«  Thσ targe⌠ interpret≤ thσ commanΣ anΣ switche≤ ì
  543. t∩ thσ DAT┴ I╬ phase¼ transfer≤ thσ data¼ switche≤ t∩ STATU╙ phase¼ send≤ GOO─ ì
  544. status¼ switche≤ t∩ MESSAG┼ I╬ phase¼ anΣ transfer≤ ß COMMAN─ COMPLET┼ ì
  545. message«  Afte≥ successfull∙ sendinτ thσ COMMAN─ COMPLET┼ message¼ thσ targe⌠ ì
  546. goe≤ t∩ thσ BU╙ FRE┼ phasσ b∙ releasinτ thσ BS┘ signa∞ anΣ thσ I/╧ proces≤ ì
  547. ends.
  548.  
  549. .cp 10
  550. .aw off
  551. .pm 0
  552. 6.4.2. Disconnec⌠ Example
  553. .aw on
  554. .pm 3
  555.  
  556. ááIε thσ abovσ singlσ commanΣ example¼ thσ lengtΦ oµ timσ necessar∙ t∩ obtaiε ì
  557. thσ datß ma∙ requirσ ß timσ-consuminτ physica∞ positioninτ operation«  Iε ì
  558. orde≥ t∩ improvσ systeφ throughput¼ thσ targe⌠ ma∙ disconnec⌠ froφ thσ ì
  559. initiator¼ thereb∙ freeinτ thσ SCS╔ bu≤ t∩ allo≈ othe≥ I/╧ proces≤ t∩ occur«  
  560.  
  561. ááAfte≥ thσ targe⌠ ha≤ receiveΣ thσ REA─ commanΣ (anΣ ha≤ determineΣ tha⌠ ì
  562. therσ wil∞ bσ ß delay)¼ i⌠ disconnect≤ froφ thσ SCS╔ bu≤ b∙ sendinτ ß ì
  563. DISCONNEC╘ messagσ anΣ b∙ goinτ t∩ thσ BU╙ FRE┼ phase.
  564.  
  565. ááAfte≥ thσ targe⌠ retrieve≤ thσ requesteΣ datß froφ thσ periphera∞ devicσ i⌠ ì
  566. arbitrate≤ fo≥ thσ SCS╔ bus«  Upoε winninτ arbitration¼ i⌠ reselect≤ thσ ì
  567. initiato≥ anΣ send≤ aε IDENTIF┘ messagσ t∩ thσ initiato≥ viß thσ MESSAG┼ I╬ ì
  568. phase«  Thi≤ revive≤ thσ I_T_╠ nexu≤ s∩ tha⌠ thσ initiato≥ caε retrievσ thσ ì
  569. correc⌠ se⌠ oµ pointer≤ fo≥ thσ I/╧ process«  Thσ initiato≥ restore≤ thσ ì
  570. activσ pointer≤ t∩ thei≥ mos⌠ recen⌠ saveΣ value≤ (which¼ iε thi≤ case¼ arσ ì
  571. thσ initia∞ values⌐ anΣ thσ targe⌠ continue≤ (a≤ iε thσ singlσ commanΣ ì
  572. example⌐ t∩ finisΦ thσ I/╧ process.
  573.  
  574. ááIµ targe⌠ wishe≤ t∩ disconnec⌠ afte≥ transferrinτ par⌠ oµ thσ datß (e.g.¼ ì
  575. whilσ crossinτ ß cylinde≥ boundary)¼ i⌠ ma∙ d∩ s∩ b∙ sendinτ ß SAV┼ DAT┴ ì
  576. POINTE╥ messagσ anΣ ß DISCONNEC╘ messagσ t∩ thσ initiato≥ anΣ theε ì
  577. disconnecting«  Wheε reconnectioε i≤ completed¼ thσ curren⌠ datß pointe≥ i≤ ì
  578. restoreΣ t∩ it≤ valuσ immediatel∙ prio≥ t∩ thσ SAV┼ DAT┴ POINTE╥ message.
  579.  
  580. ááOε thosσ occasion≤ wheε aε erro≥ o≥ exceptioε conditioε occur≤ anΣ thσ ì
  581. targe⌠ elect≤ t∩ repea⌠ thσ informatioε transfer¼ thσ targe⌠ ma∙ repea⌠ thσ ì
  582. transfe≥ b∙ eithe≥ issuinτ ß RESTOR┼ POINTER╙ messagσ o≥ b∙ disconnectinτ ì
  583. withou⌠ issuinτ ß SAV┼ DAT┴ POINTE╥ message«  Wheε reconnectioε i≤ completed¼ ì
  584. thσ mos⌠ recen⌠ saveΣ pointe≥ value≤ arσ restored.
  585.  
  586. .cp 10è.aw off
  587. .pm 0
  588. 6.4.3. LinkeΣ CommanΣ Example
  589. .aw on
  590. .pm 3
  591.  
  592. ááAε I/╧ proces≤ ma∙ contaiε multiplσ command≤ "linkedó together«  Upoε ì
  593. completinτ ß linkeΣ commanΣ successfully¼ thσ targe⌠ automaticall∙ proceed≤ t∩ ì
  594. thσ nex⌠ linkeΣ commanΣ fo≥ thσ I/╧ process«  Al∞ command≤ iε ß serie≤ oµ ì
  595. linkeΣ command≤ arσ addresseΣ t∩ thσ samσ nexu≤ anΣ arσ par⌠ oµ ß singlσ I/╧ ì
  596. process.
  597.  
  598. ááThσ command≤ arσ no⌠ entirel∙ independent«  Wheε usinτ thσ relativσ addres≤ ì
  599. bi⌠ (seσ 8.1.10)¼ thσ addres≤ oµ thσ las⌠ logica∞ blocδ accesseΣ b∙ onσ oµ thσ ì
  600. command≤ i≤ availablσ t∩ thσ nex⌠ command«  Thu≤ onσ caε searcΦ fo≥ ß ì
  601. particula≥ datß patterε usinτ ß SEARC╚ DAT┴ commanΣ anΣ theε reaΣ thσ logica∞ ì
  602. blocδ containinτ thσ datß patterε witΦ ß REA─ commanΣ linkeΣ t∩ thσ SEARC╚ ì
  603. DAT┴ command«  Onσ caε als∩ reaΣ ß logica∞ blocδ a⌠ ß specifieΣ displacemen⌠ ì
  604. froφ thσ blocδ containinτ thσ datß pattern.
  605.  
  606. áá┴ LINKE─ COMMAN─ COMPLET┼ o≥ LINKE─ COMMAN─ COMPLET┼ (WIT╚ FLAG⌐ messagσ i≤ ì
  607. sen⌠ froφ thσ targe⌠ t∩ thσ initiato≥ t∩ indicatσ tha⌠ ß linkeΣ commanΣ ì
  608. completed«  Thσ initiato≥ theε update≤ thσ saveΣ pointer≤ fo≥ thσ nexu≤ s∩ ì
  609. tha⌠ subsequen⌠ transfer≤ froφ thσ targe⌠ referencσ thσ nex⌠ commanΣ oµ thσ ì
  610. series«  CommanΣ processinτ oµ linkeΣ anΣ singlσ command≤ i≤ simila≥ excep⌠ ì
  611. tha⌠ relativσ addressinτ i≤ permitteΣ iε linkeΣ commands.
  612.  
  613. .cp 5
  614. ááFo≥ example¼ ß successfu∞ completioε oµ ß SEARC╚ DAT┴ EQUA╠ commanΣ cause≤ ì
  615. thσ targe⌠ t∩ continuσ witΦ thσ linkeΣ REA─ commanΣ froφ thσ initiator«  Iµ ì
  616. thσ relativσ addres≤ bi⌠ iε thσ REA─ commanΣ ha≤ beeε se⌠ t∩ one¼ anΣ thσ ì
  617. addres≤ fielΣ oµ thσ REA─ commanΣ i≤ se⌠ t∩ zero¼ thσ targe⌠ transfer≤ thσ ì
  618. successfull∙ searcheΣ blocδ t∩ thσ initiator« 
  619.  
  620. .cp 20
  621. .aw off
  622. .pm 0
  623. 6.5. CommanΣ Processinτ Consideration≤ anΣ Exceptioε Condition≤ 
  624. .aw on
  625. .pm 3
  626.  
  627. ááThσ followinτ section≤ describσ somσ exceptioε condition≤ anΣ error≤ ì
  628. associateΣ witΦ commanΣ processinτ anΣ thσ sequencinτ oµ commands.
  629.  
  630. .cp 10
  631. .aw off
  632. .pm 0
  633. 6.5.1. Programmablσ Operatinτ Definition
  634. .aw on
  635. .pm 3
  636.  
  637. ááSomσ application≤ requirσ tha⌠ thσ operatinτ definitioε oµ ß logica∞ uni⌠ bσ ì
  638. modifieΣ t∩ mee⌠ thσ specia∞ requirement≤ oµ ß particula≥ initiator«  Thσ ì
  639. prograφ-controlleΣ modificatioε oµ thσ operatinτ definitioε i≤ typicall∙ ì
  640. provideΣ t∩ allo≈ operatinτ system≤ t∩ changσ thσ operatinτ definitioε oµ ß ì
  641. morσ recentl∙ developeΣ target≤ t∩ onσ whicΦ i≤ morσ compatiblσ witΦ thσ ì
  642. operatinτ system«  Thi≤ abilit∙ require≤ tha⌠ thσ systeφ compl∙ witΦ thσ lo≈-ì
  643. leve∞ hardwarσ definition≤ oµ SCS╔-2.
  644.  
  645. ááThσ parameter≤ tha⌠ caε bσ changeΣ b∙ modifyinτ thσ operatinτ definitioε oµ ì
  646. ß logica∞ uni⌠ includσ thσ vendo≥ identification¼ thσ devicσ type¼ thσ devicσ ì
  647. model¼ thσ SCS╔ compliancσ level¼ thσ SCS╔ specificatioε level¼ thσ commanΣ ì
  648. set¼ anΣ othe≥ parameters«  Thσ lo≈-leve∞ hardwarσ parameter≤ includinτ signa∞ ì
  649. timinτ anΣ parit∙ definition≤ canno⌠ bσ changeΣ b∙ modifyinτ thσ operatinτ ì
  650. definition«  Thσ presen⌠ operatinτ definitioε oµ ß logica∞ uni⌠ witΦ respec⌠ ì
  651. t∩ aε initiato≥ caε bσ determineΣ a⌠ an∙ timσ b∙ executioε oµ aε INQUIR┘ ì
  652. command«  Iε somσ vendo≥-specifiπ cases¼ i⌠ ma∙ als∩ bσ necessar∙ t∩ perforφ ì
  653. othe≥ command≤ includinτ MOD┼ SENS┼ anΣ REA─ CAPACITY.
  654.  
  655. .cp 3èááEacΦ logica∞ uni⌠ begin≤ a⌠ ß particula≥ operatinτ definition«  Iµ thσ ì
  656. logica∞ uni⌠ support≤ thσ CHANG┼ DEFINITIO╬ command¼ thσ presen⌠ operatinτ ì
  657. definitioε caε bσ changeΣ t∩ an∙ othe≥ operatinτ definitioε supporteΣ b∙ thσ ì
  658. logica∞ unit«  Thσ actua∞ detail≤ oµ thσ operatinτ definitioε oµ ß logica∞ ì
  659. uni⌠ arσ vendo≥-specific«  Iµ thσ operatinτ definitioε i≤ changeΣ t∩ onσ tha⌠ ì
  660. doe≤ no⌠ includσ thσ CHANG┼ DEFINITIO╬ command¼ thσ targe⌠ shoulΣ continuσ t∩ ì
  661. accep⌠ thσ CHANG┼ DEFINITIO╬ command.
  662.  
  663. ááIµ aε erro≥ occur≤ durinτ executioε oµ ß CHANG┼ DEFINITIO╬ command¼ thσ ì
  664. origina∞ operatinτ definitioε remain≤ iε effec⌠ afte≥ thσ commanΣ i≤ executed« ì
  665. Thσ ne≈ operatinτ definitioε become≤ activσ onl∙ afte≥ successfu∞ executioε oµ ì
  666. thσ CHANG┼ DEFINITIO╬ command«  
  667.  
  668. ááSincσ ne≈ operatinτ definition≤ ma∙ precludσ thσ executioε oµ I/╧ processe≤ ì
  669. tha⌠ arσ alread∙ iε progress¼ thσ targe⌠ ma∙ disconnec⌠ t∩ allo≈ completioε oµ ì
  670. an∙ I/╧ processe≤ tha⌠ arσ iε progress«  Operatinτ definitioε change≤ tha⌠ ma∙ ì
  671. causσ conflict≤ witΦ thσ norma∞ operatioε froφ othe≥ initiator≤ shal∞ bσ ì
  672. indicateΣ t∩ thosσ initiator≤ b∙ generatinτ ß uni⌠ attentioε conditioε fo≥ ì
  673. eacΦ othe≥ initiator«  Thσ additiona∞ sensσ codσ shal∞ bσ se⌠ t∩ CHANGE─ ì
  674. OPERATIN╟ DEFINITION.
  675.  
  676. .cp 10
  677. ááAε initiato≥ ma∙ reques⌠ ß lis⌠ oµ thσ operatinτ definition≤ tha⌠ thσ targe⌠ ì
  678. support≤ anΣ descriptivσ tex⌠ fo≥ eacΦ operatinτ definitioε usinτ thσ INQUIR┘ ì
  679. command.
  680.  
  681. .cp 10
  682. .aw off
  683. .pm 0
  684. 6.5.2. Incorrec⌠ Initiato≥ Connection
  685. .aw on
  686. .pm 3
  687.  
  688. ááAε incorrec⌠ initiato≥ connectioε occur≤ oε ß reconnectioε if:
  689. áá(1⌐ aε initiato≥ attempt≤ t∩ reconnec⌠ t∩ aε I/╧ process¼ and
  690. áá(2⌐ ß sof⌠ rese⌠ conditioε ha≤ no⌠ occurred¼ anΣ 
  691. áá(3⌐ thσ initiato≥ doe≤ no⌠ senΣ aε ABORT¼ ABOR╘ TAG¼ BU╙ DEVIC┼ RESET¼ CLEA╥ ì
  692. QUEUE¼ o≥ TERMINAT┼ I/╧ PROCES╙ messagσ durinτ thσ samσ MESSAG┼ OU╘ phasσ a≤ ì
  693. thσ IDENTIF┘ message.
  694.  
  695. ááAε incorrec⌠ initiato≥ connectioε als∩ occur≤ oε aε initia∞ connectioε wheε ì
  696. aε initiator:
  697. áá(1⌐ attempt≤ t∩ establisΦ aε I_T_L_╤ nexu≤ wheε aε I_T_╠ nexu≤ alread∙ ì
  698. exist≤ froφ ß previou≤ connection¼ or
  699. áá(2⌐ attempt≤ t∩ establisΦ aε I_T_╠ nexu≤ wheε aε I_T_L_╤ nexu≤ alread∙ ì
  700. exist≤ unles≤ therσ i≤ ß contingen⌠ allegiancσ o≥ extendeΣ contingen⌠ ì
  701. allegiancσ conditioε presen⌠ fo≥ thσ logica∞ uni⌠ o≥ targe⌠ routine.
  702.  
  703. áá┴ targe⌠ tha⌠ detect≤ aε incorrec⌠ initiato≥ connectioε shal∞ abor⌠ al∞ I/╧ ì
  704. processe≤ fo≥ thσ initiato≥ oε thσ logica∞ uni⌠ o≥ targe⌠ routinσ anΣ shal∞ ì
  705. returε CHEC╦ CONDITIO╬ status«  Thσ sensσ ke∙ shal∞ bσ se⌠ t∩ ABORTE─ COMMAN─ ì
  706. anΣ thσ additiona∞ sensσ codσ shal∞ bσ se⌠ t∩ OVERLAPPE─ COMMAND╙ ATTEMPTED.
  707. .pm 3
  708.  
  709. ááIµ aε initiato≥ reconnect≤ t∩ aε I/╧ proces≤ anΣ ß sof⌠ rese⌠ conditioε ha≤ ì
  710. occurred¼ thσ targe⌠ shal∞ mee⌠ thσ requirement≤ oµ 5.2.2.2.
  711.  
  712. .lm 3
  713. ááIMPLEMENTOR╙ NOTES║  
  714. áá(1⌐ Aε incorrec⌠ initiato≥ connectioε ma∙ bσ indicativσ oµ ß seriou≤ erro≥ ì
  715. ááand¼ iµ no⌠ detected¼ coulΣ resul⌠ iε aε I/╧ proces≤ operatinτ witΦ ß wronτ ì
  716. ááse⌠ oµ pointers«  Thi≤ i≤ considereΣ ß catastrophiπ failurσ oε thσ par⌠ oµ ì
  717. ááthσ initiator«  Therefore¼ vendo≥-specifiπ erro≥ recover∙ procedure≤ ma∙ bσ ìèáárequireΣ t∩ guaranteσ thσ datß integrit∙ oε thσ medium«  Thσ targe⌠ ma∙ ì
  718. ááreturε additiona∞ sensσ datß t∩ aiΣ iε thi≤ erro≥ recover∙ procedurσ (e.g.¼ ì
  719. áásequentia∞-acces≤ device≤ ma∙ returε thσ residuσ oµ block≤ remaininτ t∩ bσ ì
  720. ááwritteε o≥ reaΣ a⌠ thσ timσ thσ seconΣ commanΣ wa≤ received).
  721. áá(2⌐  Somσ target≤ ma∙ no⌠ detec⌠ aε incorrec⌠ initiato≥ connectioε unti∞ ì
  722. ááafte≥ thσ commanΣ descripto≥ blocδ ha≤ beeε received.
  723. .pm 3
  724. .lm 1
  725.  
  726.  
  727. .cp 10
  728. .aw off
  729. .pm 0
  730. 6.5.3. Selectioε oµ aε InvaliΣ Logica∞ Unit
  731. .aw on
  732. .pm 3
  733.  
  734. ááThσ target'≤ responsσ t∩ selectioε oµ ß logica∞ uni⌠ whicΦ i≤ no⌠ valiΣ i≤ ì
  735. describeΣ iε thσ followinτ paragraphs.
  736.  
  737. ááThσ logica∞ uni⌠ ma∙ no⌠ bσ valiΣ because:
  738. áá(1⌐ thσ targe⌠ doe≤ no⌠ suppor⌠ thσ logica∞ uni⌠ (e.g.¼ somσ target≤ suppor⌠ ì
  739. onl∙ onσ periphera∞ device)«  Iε responsσ t∩ aε INQUIR┘ commanΣ thσ targe⌠ ì
  740. shal∞ returε thσ INQUIR┘ datß witΦ thσ periphera∞ qualifie≥ se⌠ t∩ thσ valuσ ì
  741. requireΣ iε Tablσ ╖-16«  Iε responsσ t∩ an∙ othe≥ commanΣ excep⌠ REQUES╘ SENS┼ ì
  742. thσ targe⌠ shal∞ terminatσ thσ commanΣ witΦ CHEC╦ CONDITIO╬ status«  Iε ì
  743. responsσ t∩ ß REQUES╘ SENS┼ commanΣ thσ targe⌠ shal∞ returε sensσ data«  Thσ ì
  744. sensσ ke∙ shal∞ bσ se⌠ t∩ ILLEGA╠ REQUES╘ anΣ thσ additiona∞ sensσ codσ shal∞ ì
  745. bσ se⌠ t∩ LOGICA╠ UNI╘ NO╘ SUPPORTED.
  746. .cp 8
  747. áá(2⌐ thσ targe⌠ support≤ thσ logica∞ unit¼ bu⌠ thσ periphera∞ devicσ i≤ no⌠ ì
  748. currentl∙ attacheΣ t∩ thσ target«  Iε responsσ t∩ aε INQUIR┘ commanΣ thσ ì
  749. targe⌠ shal∞ returε thσ INQUIR┘ datß witΦ thσ periphera∞ qualifie≥ se⌠ t∩ thσ ì
  750. valuσ requireΣ iε Tablσ ╖-16«  Iε responsσ t∩ an∙ othe≥ commanΣ excep⌠ REQUES╘ ì
  751. SENS┼ thσ targe⌠ shal∞ terminatσ thσ commanΣ witΦ CHEC╦ CONDITIO╬ status«  Iε ì
  752. responsσ t∩ ß REQUES╘ SENS┼ commanΣ thσ targe⌠ shal∞ returε sensσ data«  Thσ ì
  753. sensσ ke∙ shal∞ bσ se⌠ t∩ ILLEGA╠ REQUES╘ anΣ thσ additiona∞ sensσ codσ shal∞ ì
  754. bσ se⌠ t∩ LOGICA╠ UNI╘ NO╘ SUPPORTED.
  755. .cp 5
  756. áá(3⌐ thσ targe⌠ support≤ thσ logica∞ uni⌠ anΣ thσ periphera∞ devicσ i≤ ì
  757. attached¼ bu⌠ no⌠ operational«  Iε responsσ t∩ aε INQUIR┘ commanΣ thσ targe⌠ ì
  758. shal∞ returε thσ INQUIR┘ datß witΦ thσ periphera∞ qualifie≥ se⌠ t∩ thσ valuσ ì
  759. requireΣ iε Tablσ ╖-16«  Thσ target'≤ responsσ t∩ an∙ commanΣ othe≥ thaε ì
  760. INQUIR┘ anΣ REQUES╘ SENS┼ i≤ vendo≥ specific.
  761. áá(4⌐ thσ targe⌠ support≤ thσ logica∞ uni⌠ bu⌠ i≤ incapablσ oµ determininτ iµ ì
  762. thσ periphera∞ devicσ i≤ attacheΣ o≥ i≤ no⌠ operationa∞ wheε i⌠ i≤ no⌠ ready«  ì
  763. Iε responsσ t∩ aε INQUIR┘ commanΣ thσ targe⌠ shal∞ returε thσ INQUIR┘ datß ì
  764. witΦ thσ periphera∞ qualifie≥ se⌠ t∩ thσ valuσ requireΣ iε Tablσ ╖-16«  Iε ì
  765. responsσ t∩ ß REQUES╘ SENS┼ commanΣ thσ targe⌠ shal∞ returε thσ REQUES╘ SENS┼ ì
  766. datß witΦ ß sensσ ke∙ oµ N╧ SENS┼ unles≤ ß prio≥ erro≥ conditioε exists«  Thσ ì
  767. target'≤ responsσ t∩ an∙ othe≥ commanΣ i≤ vendo≥ specific.
  768.  
  769. .cp 10
  770. .aw off
  771. .pm 0
  772. 6.5.4. Paramete≥ Rounding
  773. .aw on
  774. .pm 3
  775.  
  776. ááCertaiε parameter≤ sen⌠ t∩ ß targe⌠ witΦ variou≤ command≤ contaiε ß rangσ oµ ì
  777. values«  Target≤ ma∙ choosσ t∩ implemen⌠ onl∙ selecteΣ value≤ froφ thi≤ range«  ì
  778. Wheε thσ targe⌠ receive≤ ß valuσ tha⌠ i⌠ doe≤ no⌠ support¼ i⌠ eithe≥ reject≤ ì
  779. thσ commanΣ (CHEC╦ CONDITIO╬ statu≤ witΦ ILLEGA╠ REQUES╘ sensσ key⌐ o≥ i⌠ ì
  780. round≤ thσ valuσ receiveΣ t∩ ß supporteΣ value«  Thσ targe⌠ shal∞ rejec⌠ ì
  781. unsupporteΣ value≤ unles≤ roundinτ i≤ permitteΣ iε thσ descriptioε oµ thσ ì
  782. parameter.
  783.  
  784. ááRoundinτ oµ paramete≥ values¼ wheε permitted¼ shal∞ bσ performeΣ a≤ follows║  ì
  785. ┴ targe⌠ tha⌠ receive≤ ß paramete≥ valuσ tha⌠ i≤ no⌠ aε exac⌠ supporteΣ valuσ ìèshal∞ adjus⌠ thσ valuσ t∩ onσ tha⌠ i⌠ support≤ anΣ shal∞ returε CHEC╦ ì
  786. CONDITIO╬ statu≤ witΦ ß sensσ ke∙ oµ RECOVERE─ ERROR«  Thσ additiona∞ sensσ ì
  787. codσ shal∞ bσ se⌠ t∩ ROUNDE─ PARAMETER«  Thσ initiato≥ i≤ responsiblσ t∩ issuσ ì
  788. aε appropriatσ commanΣ t∩ learε wha⌠ valuσ thσ targe⌠ ha≤ selected.
  789.  
  790. .lm 3
  791. ááIMPLEMENTOR╙ NOTE║  Generally¼ thσ targe⌠ shoulΣ adjus⌠ maximuφ-valuσ field≤ ì
  792. áádowε t∩ thσ nex⌠ lowe≥ supporteΣ valuσ thaε thσ onσ specifieΣ b∙ thσ ì
  793. ááinitiator«  Minimuφ-valuσ field≤ shoulΣ bσ roundeΣ u≡ t∩ thσ nex⌠ highe≥ ì
  794. áásupporteΣ valuσ thaε thσ onσ specifieΣ b∙ thσ initiator«  Iε somσ cases¼ thσ ì
  795. áátypσ oµ roundinτ (u≡ o≥ down⌐ i≤ explicitl∙ specifieΣ iε thσ descriptioε oµ ì
  796. ááthσ parameter.
  797. .lm 1
  798.  
  799. .cp 20
  800. .aw off
  801. .pm 0
  802. 6.5.5. Asynchronou≤ Even⌠ Notificatioε 
  803. .aw on
  804. .pm 3
  805.  
  806. ááImplementatioε oµ asynchronou≤ even⌠ notificatioε i≤ optional«  Thi≤ ì
  807. protoco∞ caε bσ useΣ t∩ inforφ processo≥ device≤ tha⌠ aε asynchronou≤ even⌠ ì
  808. ha≤ occurred«  ┴ SEN─ commanΣ witΦ aε AE╬ bi⌠ oµ onσ i≤ issueΣ t∩ ß processo≥ ì
  809. devicσ witΦ ß subsequen⌠ datß phasσ tha⌠ include≤ thσ REQUES╘ SENS┼ ì
  810. information«  SCS╔ device≤ tha⌠ responΣ t∩ aε INQUIR┘ commanΣ a≤ ß processo≥ ì
  811. devicσ typσ witΦ asynchronou≤ even⌠ notificatioε capabilit∙ ma∙ bσ notifieΣ oµ ì
  812. asynchronou≤ event≤ usinτ thi≤ protocol«  Aε SCS╔ devicσ ha≤ t∩ bσ capablσ oµ ì
  813. actinτ a≤ aε initiato≥ iε orde≥ t∩ perforφ asynchronou≤ even⌠ notification.
  814.  
  815. .lm 3
  816. ááIMPLEMENTOR╙ NOTE║  Asynchronou≤ even⌠ notificatioε canno⌠ bσ useΣ witΦ ß ì
  817. áádevicσ tha⌠ act≤ a≤ ß temporar∙ initiato≥ (e.g.¼ device≤ executinτ COP┘ ì
  818. áácommands⌐ sincσ the∙ arσ no⌠ identifieΣ a≤ ß processo≥ device.
  819. .lm 1
  820.  
  821. ááParameter≤ affectinτ thσ usσ oµ asynchronou≤ even⌠ notificatioε arσ ì
  822. containeΣ iε thσ contro∞ modσ pagσ (seσ 7.3.3.1).
  823.  
  824. ááThσ fou≥ use≤ oµ asynchronou≤ even⌠ notificatioε are:
  825. áá(1⌐ informinτ ß processo≥ oµ aε erro≥ conditioε encountereΣ afte≥ commanΣ ì
  826. completion
  827. áá(2⌐ informinτ al∞ processo≥ device≤ tha⌠ ß newl∙ initializeΣ devicσ i≤ ì
  828. available
  829. áá(3⌐ informinτ al∞ processo≥ device≤ oµ othe≥ uni⌠ attentioε conditions
  830. áá(4⌐ informinτ al∞ processo≥ device≤ oµ othe≥ asynchronou≤ events.
  831. .lm1
  832. .pm 3
  833.  
  834. ááOthe≥ use≤ oµ asynchronou≤ even⌠ notificatioε arσ no⌠ prohibited¼ howeve≥ ì
  835. thi≤ protoco∞ i≤ no⌠ intendeΣ t∩ bσ useΣ whilσ aε I_T_╠ o≥ I_T_L_╤ nexu≤ ì
  836. exist≤ betweeε thσ processo≥ devicσ (i.e.¼ thσ initiato≥ oµ thσ nexus⌐ anΣ thσ ì
  837. othe≥ SCS╔ devicσ (i.e.¼ thσ targe⌠ oµ thσ nexus)«  Asynchronou≤ even⌠ ì
  838. notificatioε i≤ no⌠ intendeΣ fo≥ usσ witΦ targe⌠ routine≤ (i.e.¼ aε I_T_╥ o≥ ì
  839. I_T_R_╤ nexus).
  840.  
  841. ááAε examplσ oµ thσ firs⌠ casσ abovσ i≤ ß devicσ tha⌠ implement≤ ß writσ ì
  842. cache«  Iµ thσ targe⌠ i≤ unablσ t∩ writσ cacheΣ datß t∩ thσ medium¼ i⌠ ma∙ usσ ì
  843. aε asynchronou≤ even⌠ notificatioε t∩ inforφ thσ initiato≥ oµ thσ failure«  Aε ì
  844. extendeΣ contingen⌠ allegiancσ conditioε ma∙ als∩ bσ establisheΣ durinτ thσ ì
  845. samσ I_T_╠ nexu≤ useΣ fo≥ thσ asynchronou≤ even⌠ notificatioε (seσ 5.6.9).
  846.  
  847. .cp 5èááAε examplσ oµ thσ thirΣ casσ abovσ i≤ ß devicσ tha⌠ support≤ removablσ ì
  848. media«  Asynchronou≤ even⌠ notificatioε ma∙ bσ useΣ t∩ inforφ aε initiato≥ oµ ì
  849. ß no⌠-read∙-t∩-read∙ transitioε (mediuφ changed⌐ o≥ oµ aε operato≥ initiateΣ ì
  850. even⌠ (e.g.¼ activatinτ ß writσ protec⌠ switcΦ o≥ activatinτ ß star⌠ o≥ sto≡ ì
  851. switch).
  852.  
  853. .cp 5
  854. ááAε examplσ oµ thσ fourtΦ casσ abovσ i≤ ß sequentia∞-acces≤ devicσ performinτ ì
  855. ß REWIN─ commanΣ witΦ thσ immediatσ bi⌠ se⌠ t∩ one«  Asynchronou≤ even⌠ ì
  856. notificatioε ma∙ bσ useΣ t∩ inforφ aε initiato≥ tha⌠ thσ beginninτ oµ mediuφ ì
  857. ha≤ beeε reached«  Completioε oµ ß C─-RO═ AUDI╧ PLA┘ commanΣ starteΣ iε thσ ì
  858. immediatσ modσ i≤ anothe≥ examplσ oµ thi≤ case.
  859.  
  860. ááNotificatioε oµ aε asynchronou≤ even⌠ i≤ performeΣ usinτ thσ SEN─ commanΣ ì
  861. witΦ thσ AE╬ bi⌠ se⌠ t∩ one«  Thσ informatioε identifyinτ thσ conditioε beinτ ì
  862. reporteΣ shal∞ bσ returneΣ durinτ thσ DAT┴ OU╘ phasσ oµ thσ SEN─ commanΣ (seσ ì
  863. 11.2.2.)«  Thσ datß sen⌠ i≤ showε iε Tablσ 1▒-4.
  864.  
  865. .cp 5
  866. ááAε erro≥ conditioε o≥ uni⌠ attentioε conditioε shal∞ bσ reporteΣ oncσ pe≥ ì
  867. occurrencσ oµ thσ even⌠ causinτ it«  Thσ targe⌠ ma∙ choosσ t∩ usσ aε ì
  868. asynchronou≤ even⌠ notificatioε o≥ t∩ returε CHEC╦ CONDITIO╬ statu≤ oε ß ì
  869. subsequen⌠ command¼ bu⌠ no⌠ both«  Notificatioε oµ commanΣ-relateΣ erro≥ ì
  870. condition≤ shal∞ bσ sen⌠ onl∙ t∩ thσ processo≥ tha⌠ initiateΣ thσ I/╧ process.
  871.  
  872. ááThσ asynchronou≤ even⌠ notificatioε protoco∞ caε bσ useΣ t∩ notif∙ processo≥ ì
  873. device≤ tha⌠ ß systeφ resourcσ ha≤ becomσ available«  Iµ ß targe⌠ choose≤ t∩ ì
  874. usσ thi≤ method¼ thσ sensσ ke∙ iε thσ sensσ datß sen⌠ t∩ thσ processo≥ devicσ ì
  875. shal∞ bσ se⌠ t∩ UNI╘ ATTENTION« 
  876.  
  877. ááThσ asynchronou≤ even⌠ notificatioε protoco∞ shal∞ bσ useΣ onl∙ t∩ SCS╔ ì
  878. device≤ tha⌠ returε processo≥ devicσ typσ witΦ aε AEN├ bi⌠ oµ onσ iε responsσ ì
  879. t∩ aε INQUIR┘ command«  Thσ INQUIR┘ commanΣ shoulΣ bσ issueΣ t∩ logica∞ uni⌠ ì
  880. zer∩ oµ eacΦ SCS╔ devicσ respondinτ t∩ selection«  Thi≤ procedurσ shal∞ bσ ì
  881. conducteΣ prio≥ t∩ thσ firs⌠ asynchronou≤ even⌠ notificatioε anΣ shal∞ bσ ì
  882. repeateΣ wheneve≥ thσ devicσ deem≤ i⌠ appropriatσ o≥ wheε aε even⌠ occur≤ tha⌠ ì
  883. ma∙ invalidatσ thσ curren⌠ information«  (Seσ 5.6.21¼ SYNCHRONOU╙ DAT┴ ì
  884. TRANSFE╥ REQUES╘ message¼ fo≥ example≤ oµ thesσ events.)
  885.  
  886. ááEacΦ SCS╔ devicσ tha⌠ return≤ processo≥ devicσ typσ witΦ aε AEN├ bi⌠ oµ onσ ì
  887. shal∞ bσ issueΣ ß TES╘ UNI╘ READ┘ commanΣ t∩ determinσ tha⌠ thσ SCS╔ devicσ i≤ ì
  888. read∙ t∩ receivσ aε asynchronou≤ even⌠ notification«  Aε SCS╔ devicσ returninτ ì
  889. CHEC╦ CONDITIO╬ statu≤ i≤ issueΣ ß REQUES╘ SENS┼ command«  Thi≤ clear≤ an∙ ì
  890. pendinτ uni⌠ attentioε condition«  Aε SCS╔ devicσ tha⌠ return≤ processo≥ ì
  891. devicσ typσ witΦ aε AEN├ bi⌠ oµ onσ anΣ return≤ GOO─ statu≤ wheε issueΣ ß TES╘ ì
  892. UNI╘ READ┘ commanΣ shal∞ accep⌠ ß SEN─ commanΣ witΦ aε AE╬ bi⌠ oµ one.
  893.  
  894. .lm 3
  895. ááIMPLEMENTOR╙ NOTE║ Aε SCS╔ devicσ whicΦ caε usσ asynchronou≤ even⌠ ì
  896. áánotificatioε a⌠ initializatioε timσ shoulΣ providσ mean≤ t∩ defea⌠ thesσ ì
  897. áánotifications«  Thi≤ caε bσ donσ witΦ ß switcΦ o≥ jumpe≥ wire«  Device≤ ì
  898. ááwhicΦ implemen⌠ saveΣ parameter≤ ma∙ alternativel∙ savσ thσ asynchronou≤ ì
  899. ááeven⌠ notificatioε permission≤ eithe≥ oε ß pe≥ SCS╔ devicσ basi≤ o≥ a≤ ß ì
  900. áásysteφ widσ option«  Iε an∙ case¼ ß devicσ conduct≤ ß surve∙ witΦ INQUIR┘ ì
  901. áácommand≤ t∩ bσ surσ tha⌠ thσ device≤ oε thσ SCS╔ bu≤ arσ appropriatσ ì
  902. áádestination≤ fo≥ SEN─ command≤ witΦ aε AE╬ bi⌠ oµ one«  (Thσ device≤ oε thσ ì
  903. áábu≤ o≥ thσ SCS╔ I─ assignment≤ ma∙ havσ changed.⌐  
  904. .lm 1
  905. è.pm 0
  906. 6.5.6. UnexpecteΣ Reselection
  907. .aw on
  908. .pm 3
  909.  
  910. ááAε unexpecteΣ reselectioε occur≤ iµ ßε SCSI device attempt≤ t∩ reconnec⌠ t∩ ì
  911. aε I/╧ proces≤ fo≥ whicΦ ß nexu≤ doe≤ no⌠ exist«  Aε SCS╔ devicσ shoulΣ ì
  912. responΣ t∩ aε unexpecteΣ reselectioε b∙ sendinτ aε ABOR╘ message.
  913.  
  914. .cp 20
  915. .aw off
  916. .pm 0
  917. 6.6. Contingent Allegiancσ Condition
  918. .aw on
  919. .pm 3
  920.  
  921. .cp 7
  922. ááThσ contingen⌠ allegiancσ conditioε shal∞ exis⌠ followinτ thσ returε oµ ì
  923. CHEC╦ CONDITIO╬ o≥ COMMAN─ TERMINATE─ statu≤ anΣ ma∙ optionall∙ exis⌠ ì
  924. followinτ aε unexpecteΣ disconnect«  Thσ contingen⌠ allegiancσ conditioε shal∞ ì
  925. bσ preserveΣ fo≥ thσ I_T_° nexu≤ unti∞ i⌠ i≤ cleared«  Thσ contingen⌠ ì
  926. allegiancσ conditioε shal∞ bσ cleareΣ upoε thσ generatioε oµ ß harΣ rese⌠ ì
  927. condition¼ o≥ b∙ aε ABOR╘ message¼ ß BU╙ DEVIC┼ RESE╘ message¼ o≥ an∙ ì
  928. subsequen⌠ commanΣ fo≥ thσ I_T_° nexus«  Whilσ thσ contingen⌠ allegiancσ ì
  929. conditioε exist≤ thσ targe⌠ shal∞ preservσ thσ sensσ datß fo≥ thσ initiator«  
  930.  
  931. ááWhilσ thσ contingen⌠ allegiancσ conditioε exists¼ iµ thσ targe⌠ i≤ unablσ t∩ ì
  932. maintaiε separatσ sensσ data¼ thσ targe⌠ shal∞ responΣ t∩ an∙ othe≥ request≤ ì
  933. fo≥ acces≤ t∩ thσ logica∞ uni⌠ o≥ targe⌠ routinσ froφ anothe≥ initiato≥ witΦ ß ì
  934. BUS┘ status«  Executioε oµ queueΣ command≤ fo≥ thσ logica∞ uni⌠ o≥ targe⌠ ì
  935. routinσ fo≥ whicΦ thσ contingen⌠ allegiancσ conditioε exist≤ shal∞ bσ ì
  936. suspendeΣ unti∞ thσ contingen⌠ allegiancσ conditioε i≤ cleared.
  937.  
  938. .aw off
  939. .pm 0
  940. 6.7. Extended Contingent Allegiance Condition
  941. .aw on
  942. .pm 3
  943.  
  944. ááImplementatioε oµ extendeΣ contingen⌠ allegiancσ i≤ optional«  Thσ extendeΣ ì
  945. contingen⌠ allegiancσ conditioε extend≤ thσ contingen⌠ allegiancσ conditioε ì
  946. fo≥ aε I_T_° nexus«  Thi≤ conditioε i≤ generateΣ b∙ thσ targe⌠ sendinτ aε ì
  947. INITIAT┼ RECOVER┘ messagσ t∩ thσ initiato≥ followinτ CHEC╦ CONDITIO╬ o≥ ì
  948. COMMAN─ TERMINATE─ statu≤ anΣ prio≥ t∩ thσ COMMAN─ COMPLET┼ message«  Thi≤ ì
  949. conditioε shal∞ bσ preserveΣ unti∞ i⌠ i≤ cleareΣ b∙ ß BU╙ DEVIC┼ RESE╘ ì
  950. message¼ ß RELEAS┼ RECOVER┘ message¼ o≥ ß harΣ rese⌠ condition.
  951.  
  952. ááWhilσ thσ extendeΣ contingen⌠ allegiancσ conditioε exist≤ thσ targe⌠ shal∞ ì
  953. responΣ t∩ an∙ othe≥ reques⌠ fo≥ acces≤ t∩ thσ logica∞ uni⌠ froφ anothe≥ ì
  954. initiato≥ witΦ BUS┘ status«  Executioε oµ queueΣ command≤ fo≥ thσ logica∞ uni⌠ ì
  955. fo≥ whicΦ thσ extendeΣ contingen⌠ allegiancσ conditioε exist≤ shal∞ bσ ì
  956. suspendeΣ unti∞ thσ RELEAS┼ RECOVER┘ messagσ i≤ receiveΣ b∙ thσ target.
  957.  
  958. .lm 3
  959. ááIMPLEMENTOR╙ NOTES║  
  960. áá(1⌐ I⌠ i≤ no⌠ requireΣ t∩ generatσ aε extendeΣ contingen⌠ allegiancσ ì
  961. ááconditioε fo≥ ever∙ CHEC╦ CONDITIO╬ o≥ COMMAN─ TERMINATE─ statu≤ tha⌠ ì
  962. ááoccurs«  Simplσ error≤ no⌠ requirinτ aε extendeΣ recover∙ ma∙ bσ deal⌠ witΦ ì
  963. ááb∙ usinτ thσ contingen⌠ allegiancσ protocol.
  964. áá(2⌐ Durinτ thσ existencσ oµ thσ extendeΣ contingen⌠ allegiancσ condition¼  ì
  965. ááappropriatσ erro≥ recover∙ sequence≤ ma∙ bσ executed«  SucΦ command≤ caε ì
  966. áácorrec⌠ data¼ modif∙ o≥ deletσ queueΣ commands¼ perforφ LO╟ SENS┼ command≤ ì
  967. ááanΣ obtaiε diagnostiπ information«  ExtendeΣ contingen⌠ allegiancσ i≤ ì
  968. áárecommendeΣ fo≥ erro≥ condition≤ tha⌠ ma∙ requirσ executioε oµ multiplσ-ste≡ ì
  969. ááerro≥-recover∙ protocol≤ withou⌠ interferencσ froφ othe≥ initiators.
  970. .lm 1
  971.  
  972. .cp 4èááAε extendeΣ contingen⌠ allegiancσ conditioε ma∙ als∩ bσ generateΣ usinτ aε ì
  973. asynchronou≤ even⌠ notificatioε protocol«  Wheε thσ even⌠ i≤ detected¼ thσ bu≤ ì
  974. devicσ whicΦ detecteΣ thσ even⌠ assume≤ thσ initiato≥ rolσ anΣ transmit≤ ß ì
  975. SEN─ commanΣ witΦ aε AE╬ bi⌠ oµ onσ t∩ thσ appropriatσ device(s⌐ (seσ 11.2.2).
  976.  
  977. .cp 3
  978. ááIµ thσ devicσ wishe≤ t∩ generatσ aε extendeΣ contingen⌠ allegiancσ conditioε ì
  979. durinτ aε asynchronou≤ even⌠ notification¼ i⌠ shal∞ senΣ aε INITIAT┼ RECOVER┘ ì
  980. messagσ followinτ thσ IDENTIF┘ messagσ (anΣ followinτ an∙ queuσ taτ message⌐ ì
  981. anΣ prio≥ t∩ thσ COMMAN─ phasσ oµ thσ SEN─ command«  Aε extendeΣ contingen⌠ ì
  982. allegiancσ conditioε caε bσ generateΣ fo≥ onl∙ onσ I_T_╠ nexu≤ a⌠ ß time«  Thσ ì
  983. extendeΣ contingen⌠ allegiancσ conditioε i≤ cleareΣ wheε ß RELEAS┼ RECOVER┘ ì
  984. messagσ i≤ receiveΣ froφ thσ devicσ t∩ whicΦ thσ INITIAT┼ RECOVER┘ messagσ wa≤ ì
  985. sent«  Thσ generatioε oµ ß harΣ rese⌠ condition¼ o≥ receip⌠ oµ ß BU╙ DEVIC┼ ì
  986. RESE╘ messagσ shal∞ als∩ clea≥ thσ extendeΣ contingen⌠ allegiancσ condition.
  987.  
  988. ááDurinτ aε extendeΣ contingen⌠ allegiancσ onl∙ untaggeΣ I/╧ processe≤ froφ ì
  989. thσ SCS╔ devicσ t∩ whicΦ thσ INITIAT┼ RECOVER┘ messagσ wa≤ sen⌠ shal∞ bσ ì
  990. executeΣ b∙ thσ target«  Iµ thσ initiato≥ send≤ ß queuσ taτ messagσ thσ targe⌠ ì
  991. shal∞ responΣ witΦ QUEU┼ FUL╠ status«  Afte≥ thσ extendeΣ contingen⌠ ì
  992. allegiancσ conditioε i≤ cleareΣ an∙ command≤ remaininτ iε thσ commanΣ queuσ ì
  993. shal∞ bσ executed.
  994.  
  995. .cp 20
  996. .aw off
  997. .pm 0
  998. 6.8. QueueΣ I/O Processes
  999. .aw on
  1000. .pm 3
  1001.  
  1002. ááThσ implementatioε oµ queuinτ fo≥ I/╧ processe≤ i≤ optional«  Queuinτ oµ I/╧ ì
  1003. processe≤ allow≤ ß targe⌠ t∩ accep⌠ multiplσ I/╧ processe≤ fo≥ executioε a⌠ ß ì
  1004. late≥ time«  
  1005.  
  1006. ááTherσ arσ tw∩ method≤ fo≥ implementatioε oµ queuing¼ taggeΣ anΣ untagged« ì
  1007. TaggeΣ queuinτ allow≤ ß targe⌠ t∩ accep⌠ multiplσ I/╧ processe≤ froφ eacΦ ì
  1008. initiato≥ fo≥ eacΦ logica∞ uni⌠ o≥ targe⌠ routine«  UntaggeΣ queuinτ allow≤ ß ì
  1009. targe⌠ t∩ accep⌠ onσ I/╧ proces≤ froφ eacΦ initiato≥ fo≥ eacΦ logica∞ unit«  
  1010.  
  1011. áá┴ targe⌠ ma∙ bσ capablσ oµ botΦ method≤ oµ queuing¼ bu⌠ onl∙ onσ methoΣ ma∙ ì
  1012. bσ useΣ b∙ aε initiato≥ a⌠ ß time«  Othe≥ initiator≤ ma∙ choosσ thσ othe≥ ì
  1013. queuinτ method╗ iε tha⌠ case¼ thσ targe⌠ ma∙ managσ botΦ type≤ oµ queueΣ ì
  1014. commands.
  1015.  
  1016. ááUntaggeΣ queuinτ ma∙ bσ supporteΣ b∙ SCS╔-▒ o≥ SCS╔-▓ devices«  TaggeΣ ì
  1017. queuinτ i≤ ne≈ iε SCS╔-2.
  1018.  
  1019. .cp 10
  1020. .aw off
  1021. .pm 0
  1022. 6.8.1. UntaggeΣ Queuing
  1023. .aw on
  1024. .pm 3
  1025.  
  1026. .cp3
  1027. ááUntaggeΣ queuinτ allow≤ ß targe⌠ t∩ accep⌠ ß commanΣ froφ aε initiato≥ fo≥ ß ì
  1028. logica∞ uni⌠ o≥ targe⌠ routinσ whilσ ß commanΣ froφ anothe≥ initiato≥ i≤ beinτ ì
  1029. executed«  Onl∙ onσ commanΣ fo≥ eacΦ I_T_° nexu≤ shal∞ bσ accepteΣ a⌠ ß time«  
  1030.  
  1031. .cp 6
  1032. ááAε I/╧ proces≤ ma∙ bσ initiateΣ an∙ timσ thσ BU╙ FRE┼ phasσ exist≤ eveε iµ ì
  1033. aε I/╧ proces≤ froφ ß differen⌠ initiato≥ i≤  active«  Iµ thσ disconnec⌠ ì
  1034. privilegσ i≤ no⌠ granteΣ iε thσ IDENTIF┘ messagσ oµ thσ ne≈ I/╧ process¼ thσ ì
  1035. targe⌠ ma∙ eithe≥ suspenΣ thσ activσ I/╧ proces≤ o≥ i⌠ ma∙ returε BUS┘ statu≤ ì
  1036. t∩ thσ ne≈ I/╧ process.
  1037.  
  1038. .cp 4èááThσ I_T_° nexu≤ sufficientl∙ specifie≤ thσ relationshi≡ s∩ tha⌠ thσ targe⌠ ì
  1039. caε reconnec⌠ t∩ thσ initiato≥ t∩ restorσ thσ pointer≤ fo≥ I/╧ proces≤ a≤ lonτ ì
  1040. a≤ onl∙ onσ I/╧ proces≤ pe≥ I_T_° nexu≤ i≤ issued«  I⌠ i≤ thσ responsibilit∙ ì
  1041. oµ thσ initiato≥ t∩ assurσ tha⌠ onl∙ onσ sucΦ I/╧ proces≤ i≤ issueΣ a⌠ an∙ ì
  1042. timσ (seσ 6.5.2).
  1043.  
  1044. .cp 10
  1045. .aw off
  1046. .pm 0
  1047. 6.8.2. TaggeΣ Queuing
  1048. .aw on
  1049. .pm 3
  1050.  
  1051. ááTaggeΣ queuinτ allow≤ ß targe⌠ t∩ accep⌠ multiplσ I/╧ processe≤ froφ thσ ì
  1052. samσ o≥ differen⌠ initiator≤ unti∞ thσ logica∞ unit'≤ commanΣ queuσ i≤ full«  ì
  1053. Iµ aε I/╧ proces≤ i≤ receiveΣ anΣ thσ commanΣ queuσ i≤ full¼ thσ targe⌠ shal∞ ì
  1054. terminatσ thσ I/╧ proces≤ witΦ QUEU┼ FUL╠ status«  
  1055.  
  1056. ááThσ commanΣ queuσ i≤ setu≡ b∙ thσ targe⌠ fo≥ eacΦ supporteΣ logica∞ uni⌠ anΣ ì
  1057. targe⌠ routine«  Initiator≤ ma∙ adΣ o≥ deletσ I/╧ processe≤ t∩ thσ queue«  ì
  1058. Wheε addinτ aε I/╧ process¼ thσ initiato≥ ma∙ specif∙ fixeΣ orde≥ oµ ì
  1059. execution¼ allo≈ thσ targe⌠ t∩ definσ thσ orde≥ oµ execution¼ o≥ specif∙ tha⌠ ì
  1060. thσ I/╧ proces≤ i≤ t∩ bσ executeΣ next.
  1061.  
  1062. ááIµ thσ disconnec⌠ privilegσ i≤ no⌠ granteΣ iε thσ IDENTIF┘ messagσ fo≥ ß ì
  1063. taggeΣ I/╧ proces≤ thσ targe⌠ shal∞ returε BUS┘ status.
  1064.  
  1065. ááThσ queuσ taτ message≤ (seσ 5.6.17⌐ allo≈ thσ initiato≥ t∩ establisΦ ß ì
  1066. uniquσ I_T_L_╤ nexu≤ t∩ identif∙ eacΦ I/╧ process«  Thσ I_T_L_╤ nexu≤ allow≤ ì
  1067. thσ targe⌠ t∩ reconnec⌠ t∩ ß specifiπ I/╧ proces≤ anΣ allow≤ thσ initiato≥ t∩ ì
  1068. restorσ thσ se⌠ oµ pointer≤ fo≥ tha⌠ I/╧ process«  Aε initiato≥ ma∙ havσ ì
  1069. severa∞ I/╧ processe≤ ongoinτ t∩ thσ samσ o≥ differen⌠ logica∞ unit≤ o≥ targe⌠ ì
  1070. routine≤ a≤ lonτ a≤ eacΦ ha≤ ß uniquσ nexus.
  1071.  
  1072. .cp 5
  1073. ááIµ onl∙ SIMPL┼ QUEU┼ TA╟ message≤ arσ used¼ thσ targe⌠ ma∙ executσ thσ ì
  1074. command≤ iε an∙ orde≥ tha⌠ i≤ deemeΣ desirablσ withiε thσ constraint≤ oµ thσ ì
  1075. queuσ managemen⌠ algorithφ specifieΣ iε thσ contro∞ modσ pagσ (seσ 7.3.3.1)«  
  1076.  
  1077. ááIµ ORDERE─ QUEU┼ TA╟ message≤ arσ used¼ thσ targe⌠ shal∞ executσ thσ ì
  1078. command≤ iε thσ orde≥ receiveΣ witΦ respec⌠ t∩ othe≥ command≤ receiveΣ witΦ ì
  1079. ORDERE─ QUEU┼ TA╟ messages«  Al∞ command≤ receiveΣ witΦ aε SIMPL┼ QUEU┼ TA╟ ì
  1080. messagσ prio≥ t∩ ß commanΣ receiveΣ witΦ aε ORDERE─ QUEU┼ TA╟ message¼ ì
  1081. regardles≤ oµ initiator¼ shal∞ bσ executeΣ beforσ tha⌠ commanΣ witΦ thσ ì
  1082. ORDERE─ QUEU┼ TA╟ message«  Al∞ command≤ receiveΣ witΦ aε SIMPL┼ QUEU┼ TA╟ ì
  1083. messagσ afte≥ ß commanΣ receiveΣ witΦ aε ORDERE─ QUEU┼ TA╟ message¼ regardles≤ ì
  1084. oµ initiator¼ shal∞ bσ executeΣ afte≥ tha⌠ commanΣ witΦ thσ ORDERE─ QUEU┼ TA╟ ì
  1085. message« 
  1086.  
  1087. áá┴ commanΣ receiveΣ witΦ ß HEA─ O╞ QUEU┼ TA╟ messagσ i≤ placeΣ firs⌠ iε thσ ì
  1088. queue¼ t∩ bσ executeΣ next«  ┴ commanΣ receiveΣ witΦ ß HEA─ O╞ QUEU┼ TA╟ ì
  1089. messagσ shal∞ no⌠ suspenΣ aε I/╧ proces≤ fo≥ whicΦ thσ targe⌠ ha≤ beguε ì
  1090. execution«  Consecutivσ command≤ receiveΣ witΦ HEA─ O╞ QUEU┼ TA╟ message≤ arσ ì
  1091. executeΣ iε ß las⌠-iε-firs⌠-ou⌠ order.
  1092.  
  1093. .cp 3
  1094. ááAε I/╧ proces≤ receiveΣ withou⌠ ß queuσ taτ messagσ whilσ therσ arσ an∙ ì
  1095. taggeΣ I/╧ command≤ iε thσ commanΣ queuσ froφ thσ samσ initiato≥ i≤ aε ì
  1096. incorrec⌠ initiato≥ connectioε (seσ 6.5.2⌐ unles≤ therσ i≤ ß contingen⌠ ì
  1097. allegiancσ o≥ extendeΣ contingen⌠ allegiancσ condition.
  1098.  
  1099. .cp 5èáá┴ serie≤ oµ linkeΣ command≤ arσ ß singlσ I/╧ process¼ anΣ arσ assigneΣ thσ ì
  1100. queuσ taτ establisheΣ iε thσ initia∞ connection«  ┴ commanΣ receiveΣ witΦ ß ì
  1101. HEA─ O╞ QUEU┼ TA╟ messagσ shal∞ no⌠ suspenΣ ß serie≤ oµ linkeΣ command≤ fo≥ ì
  1102. whicΦ thσ targe⌠ ha≤ beguε execution.
  1103.  
  1104. .cp 4
  1105. ááThσ RESERV┼ anΣ RELEAS┼ command≤ shoulΣ bσ sen⌠ witΦ aε ORDERE─ QUEU┼ TA╟ ì
  1106. message«  Usσ oµ thσ HEA─ O╞ QUEU┼ TA╟ messagσ witΦ thesσ command≤ coulΣ ì
  1107. resul⌠ iε reservatioε conflict≤ witΦ previousl∙ issueΣ commands«  
  1108.  
  1109. ááThσ TES╘ UNI╘ READ┘ anΣ INQUIR┘ command≤ arσ ofteε sen⌠ witΦ ß HEA─ O╞ QUEU┼ ì
  1110. TA╟ message¼ sincσ thσ informatioε returneΣ ha≤ n∩ effec⌠ oε thσ conditioε oµ ì
  1111. thσ logica∞ unit« 
  1112.  
  1113. ááTw∩ erro≥ recover∙ option≤ arσ allowed«  Thσ erro≥ recover∙ optioε t∩ bσ ì
  1114. useΣ i≤ specifieΣ iε thσ contro∞ modσ pagσ (seσ 7.3.3.1)«  
  1115.  
  1116. ááThσ firs⌠ pos⌠-recover∙ optioε i≤ t∩ continuσ executioε oµ command≤ iε thσ ì
  1117. queuσ afte≥ thσ contingen⌠ allegiancσ o≥ extendeΣ contingen⌠ allegiancσ ì
  1118. conditioε ha≤ cleared«  Thσ targe⌠ return≤ BUS┘ statu≤ t∩ othe≥ initiator≤ ì
  1119. whilσ thσ contingen⌠ allegiancσ o≥ extendeΣ contingen⌠ allegiancσ conditioε ì
  1120. exists«  Durinτ thi≤ timσ al∞ command≤ iε thσ queuσ arσ suspended«  Al∞ ì
  1121. command≤ useΣ fo≥ recover∙ operation≤ shal∞ bσ untaggeΣ commands«  Thσ queuσ ì
  1122. ma∙ bσ modifieΣ b∙ removinτ al∞ o≥ selecteΣ command≤ iε thσ queuσ a≤ par⌠ oµ ì
  1123. thσ recover∙ procedure«  
  1124.  
  1125. ááIµ command≤ arσ combineΣ b∙ thσ queuinτ algorithφ sucΦ tha⌠ thσ erro≥ ì
  1126. affect≤ morσ thaε onσ command¼ theε ß contingen⌠ allegiancσ conditioε shal∞ bσ ì
  1127. generateΣ fo≥ al∞ affecteΣ commands.
  1128.  
  1129. ááThσ seconΣ recover∙ optioε clear≤ thσ queuσ afte≥ thσ contingen⌠ allegiancσ ì
  1130. o≥ extendeΣ contingen⌠ allegiancσ conditioε ha≤ beeε cleared«  Wheε thσ queuσ ì
  1131. i≤ cleareΣ becausσ oµ thi≤ recover∙ option¼ ß uni⌠ attentioε conditioε shal∞ ì
  1132. bσ generateΣ fo≥ al∞ othe≥ initiator≤ anΣ thσ additiona∞ sensσ codσ shal∞ bσ ì
  1133. se⌠ t∩ COMMAND╙ CLEARE─ B┘ ANOTHE╥ INITIATOR.
  1134.  
  1135. .cp 3
  1136. ááDeferreΣ error≤ arσ normall∙ relateΣ t∩ ß commanΣ tha⌠ ha≤ alread∙ ì
  1137. completed«  A≤ such¼ therσ i≤ n∩ attemp⌠ t∩ returε thσ queuσ taτ valuσ ì
  1138. assigneΣ t∩ thσ origina∞ command.
  1139.  
  1140. .cp 5
  1141. áá┴ devicσ tha⌠ doe≤ no⌠ suppor⌠ taggeΣ queuinτ fo≥ an∙ reasoε (e.g.¼ no⌠ ì
  1142. implemented¼ disableΣ b∙ thσ DQuσ bi⌠ iε thσ contro∞ modσ page¼ o≥ i⌠ ha≤ beeε ì
  1143. switcheΣ t∩ aε operatinτ definitioε tha⌠ doe≤ no⌠ includσ taggeΣ queuing⌐ ì
  1144. shal∞ responΣ t∩ an∙ queuσ taτ messagσ witΦ ß MESSAG┼ REJEC╘ message«  Thσ ì
  1145. targe⌠ shal∞ continuσ thσ I/╧ proces≤ a≤ iµ i⌠ wa≤ aε untaggeΣ I/╧ process.
  1146.  
  1147. .cp 4
  1148. ááTaggeΣ queuinτ ma∙ als∩ bσ temporaril∙ disableΣ interna∞ t∩ thσ SCS╔ devicσ ì
  1149. durinτ certaiε initializatioε period≤ o≥ t∩ contro∞ interna∞ resourcσ ì
  1150. utilization«  Durinτ thesσ period≤ thσ targe⌠ ma∙ elec⌠ t∩ returε QUEU┼ FUL╠ ì
  1151. statu≤ o≥ i⌠ ma∙ responΣ t∩ an∙ queuσ taτ messagσ witΦ ß MESSAG┼ REJEC╘ ì
  1152. message.
  1153.  
  1154. .cp 5èááSevera∞ message≤ ma∙ bσ useΣ t∩ clea≥ par⌠ o≥ al∞ oµ thσ commanΣ queue«  ì
  1155. Pleasσ refe≥ t∩ thσ ABORT¼ ABOR╘ TAG¼ BU╙ DEVIC┼ RESET¼ anΣ CLEA╥ QUEU┼ ì
  1156. message≤ iε Sectioε ╡ fo≥ details.
  1157.  
  1158. .cp 10
  1159. .aw off
  1160. .pm 0
  1161. 6.8.3. Examplσ oµ QueueΣ I/O Process
  1162. .aw on
  1163. .pm 3
  1164.  
  1165. ááAε examplσ oµ I/╧ proces≤ queuinτ benefit≤ froφ thσ consideratioε oµ thσ ì
  1166. executioε oµ ß numbe≥ oµ commands«  Afte≥ eacΦ command¼ thσ statσ oµ thσ queuσ ì
  1167. kep⌠ iε thσ targe⌠ i≤ showε t∩ indicatσ thσ functioε actuall∙ performeΣ b∙ thσ ì
  1168. queuing.
  1169.  
  1170. .cp 5
  1171. .aw off
  1172. .pm 0
  1173. 6.8.3.1. Typica∞ Sequence≤ fo≥ TaggeΣ Queuing
  1174. .aw on
  1175. .pm 3
  1176. ááAε I/╧ proces≤ usinτ taggeΣ queuinτ use≤ thσ followinτ sequence≤ fo≥ norma∞ ì
  1177. execution«  Thσ initiato≥ firs⌠ arbitrate≤ fo≥ thσ SCS╔ bus¼ anΣ afte≥ ì
  1178. successfull∙ obtaininτ thσ SCS╔ bus¼ select≤ thσ appropriatσ SCS╔ device«  Thσ ì
  1179. AT╬ signa∞ i≤ asserteΣ durinτ thσ SELECTIO╬ phasσ t∩ indicatσ tha⌠ ß MESSAG┼ ì
  1180. OU╘ phasσ i≤ requesteΣ b∙ thσ initiator«  Thσ firs⌠ messagσ bytσ transferreΣ ì
  1181. i≤ aε IDENTIF┘ message«  Thσ AT╬ signa∞ continue≤ t∩ bσ asserteΣ durinτ thσ ì
  1182. MESSAG┼ OU╘ phasσ t∩ indicatσ tha⌠ thσ initiato≥ ha≤ anothe≥ message«  Thσ ì
  1183. seconΣ messagσ bytσ transferreΣ i≤ thσ firs⌠ bytσ oµ thσ appropriatσ queuσ taτ ì
  1184. message¼ iε thi≤ casσ ß SIMPL┼ QUEU┼ TA╟ message«  Thσ thirΣ anΣ las⌠ messagσ ì
  1185. bytσ i≤ transmitteΣ containinτ thσ seconΣ bytσ oµ thσ queuσ taτ message¼ thσ ì
  1186. queuσ tag«  A≤ i⌠ i≤ transferred¼ thσ AT╬ signa∞ i≤ negateΣ t∩ indicatσ tha⌠ ì
  1187. n∩ morσ messagσ byte≤ arσ available«  Thσ targe⌠ theε transfer≤ thσ commanΣ ì
  1188. descripto≥ block«  Assuminτ thσ commanΣ require≤ disconnection¼ thσ targe⌠ ì
  1189. transmit≤ ß DISCONNEC╘ messagσ t∩ thσ initiato≥ anΣ theε enter≤ thσ BU╙ FRE┼ ì
  1190. phase«  Thσ targe⌠ place≤ thσ command¼ identifieΣ b∙ thσ I_T_L_╤ nexus¼ a⌠ thσ ì
  1191. appropriatσ placσ iε thσ commanΣ queue.
  1192.  
  1193. ááWheε thσ targe⌠ remove≤ I/╧ processe≤ froφ thσ queuσ fo≥ execution¼ ß ì
  1194. physica∞ latenc∙ perioΣ ma∙ occur«  A⌠ thσ enΣ oµ thi≤ period¼ wheε thσ targe⌠ ì
  1195. i≤ prepareΣ t∩ transfe≥ thσ appropriatσ data¼ thσ targe⌠ begin≤ aε ARBITRATIO╬ ì
  1196. phasσ and¼ upoε winning¼ enter≤ ß RESELECTIO╬ phase«  Afte≥ ß successfu∞ ì
  1197. reselection¼ thσ targe⌠ send≤ thσ IDENTIF┘ messagσ followeΣ b∙ ß SIMPL┼ QUEU┼ ì
  1198. TA╟ messagσ witΦ thσ queuσ taτ valuσ originall∙ sen⌠ b∙ thσ initiator«  Thσ ì
  1199. initiato≥ use≤ thσ I_T_L_╤ nexu≤ t∩ identif∙ thσ correc⌠ se⌠ oµ pointer≤ anΣ ì
  1200. contro∞ block≤ associateΣ witΦ thσ I/╧ proces≤ anΣ t∩ establisΦ thσ necessar∙ ì
  1201. condition≤ fo≥ datß transfer«  Thσ targe⌠ begin≤ datß transfer«  Wheε thσ datß ì
  1202. transfe≥ i≤ successfull∙ completed¼ thσ targe⌠ return≤ GOO─ statu≤ anΣ ì
  1203. terminate≤ thσ I/╧ proces≤ witΦ ß COMMAN─ COMPLET┼ message.
  1204.  
  1205. .cp 5
  1206. .aw off
  1207. .pm 0
  1208. 6.8.3.2. Examplσ oµ TaggeΣ Queuinτ 
  1209. .aw on
  1210. .pm 3
  1211. ááAε examplσ oµ thσ executioε oµ fivσ queueΣ I/╧ processe≤ i≤ describeΣ t∩ ì
  1212. demonstratσ ho≈ taggeΣ queuinτ operates«  Al∞ taggeΣ I/╧ processe≤ arσ froφ ì
  1213. onσ initiato≥ t∩ ß singlσ logica∞ uni⌠ oµ ß singlσ target«  Thσ fivσ I/╧ ì
  1214. processe≤ arσ defineΣ iε Tablσ ╢-8«  Thσ targe⌠ i≤ ß direc⌠-acces≤ device«  A⌠ ì
  1215. thσ timσ thσ I/╧ processe≤ arσ firs⌠ beinτ executed¼ i⌠ i≤ assumeΣ tha⌠ thσ ì
  1216. actuato≥ i≤ iε positioε t∩ acces≤ logica∞ blocδ 10000.
  1217.  
  1218. .cp 15è.aw off
  1219. .pm 0
  1220.                Table 6-8: Command≤ iε Orde≥ ReceiveΣ b∙ Target
  1221.  
  1222.                                    Queue  Logical
  1223.                                     Tag    Blocδ   Transfer
  1224.        CommanΣ  Queuσ Taτ Message  Value  Addres≤   LengtΦ     Status  
  1225.        ------¡  -----------------  -----  ------¡  ---------  ---------
  1226.         REA─          SIMPL┼        0▒h    1000░     1000      QueueΣ
  1227.         REA─          SIMPL┼        0▓h      10░        1      Queued  
  1228.         REA─         ORDERE─        0│h     100░     1000      Queued  
  1229.         REA─          SIMPL┼        0┤h    1000░        ▒      Queued
  1230.         REA─          SIMPL┼        0╡h     200░     1000      QueueΣ  
  1231. .aw on
  1232. .pm 3
  1233.  
  1234. ááThσ optimuφ orde≥ woulΣ requirσ tha⌠ thosσ block≤ closσ t∩ thσ actuato≥ ì
  1235. positioε bσ thσ firs⌠ block≤ accessed¼ followeΣ b∙ thosσ increasingl∙ fa≥ froφ ì
  1236. thσ actuato≥ position«  However¼ thσ commanΣ witΦ queuσ taτ 03Φ i≤ aε ordereΣ ì
  1237. I/╧ process¼ s∩ tha⌠ al∞ simplσ I/╧ processe≤ transferreΣ previousl∙ mus⌠ bσ ì
  1238. executeΣ before¼ whilσ al∞ simplσ I/╧ processe≤ transferreΣ afte≥ thσ ordereΣ ì
  1239. I/╧ proces≤ mus⌠ bσ executeΣ afte≥ thσ ordereΣ I/╧ process.
  1240.  
  1241. ááIµ ß targe⌠ support≤ aε optimizinτ algorithφ thσ actua∞ orde≥ iε whicΦ thσ ì
  1242. I/╧ processe≤ arσ executeΣ coulΣ bσ a≤ showε iε Tablσ ╢-9.
  1243.  
  1244. .cp 15
  1245. .aw off
  1246. .pm 1
  1247.                   Table 6-9: Command≤ iε Orde≥ oµ Execution
  1248.  
  1249.                                    Queue  Logical
  1250.                                     Tag    Blocδ   Transfer
  1251.        CommanΣ  Queuσ Taτ Message  Value  Addres≤   LengtΦ     Status  
  1252.        ------¡  -----------------  -----  ------¡  ---------  ---------
  1253.         REA─          SIMPL┼        0▒h    1000░     1000      QueueΣ
  1254.         REA─          SIMPL┼        0▓h      10░        1      Queued  
  1255.         REA─         ORDERE─        0│h     100░     1000      Queued  
  1256.         REA─          SIMPL┼        0╡h     200░     1000      QueueΣ  
  1257.         REA─          SIMPL┼        0┤h    1000░        ▒      Queued
  1258. .aw on
  1259. .pm 3
  1260.  
  1261.  
  1262. .cp 9
  1263. ááI/╧ processe≤ witΦ queuσ taτ value≤ 01Φ anΣ 02Φ arσ executeΣ iε thσ orde≥ ì
  1264. receiveΣ sincσ thσ actuato≥ i≤ alread∙ iε positioε t∩ executσ I/╧ proces≤ 01h«  ì
  1265. I/╧ proces≤ 02Φ mus⌠ bσ executeΣ beforσ I/╧ proces≤ 04Φ o≥ 05Φ becausσ thσ ì
  1266. ordereΣ I/╧ proces≤ 03Φ wa≤ transmitteΣ afte≥ I/╧ processe≤ 01Φ anΣ 02Φ bu⌠ ì
  1267. beforσ I/╧ processe≤ 04Φ anΣ 05h«  I/╧ proces≤ 03Φ i≤ theε executeΣ afte≥ I/╧ ì
  1268. proces≤ 02h«  Thσ I/╧ processe≤ 04Φ anΣ 05Φ arσ executeΣ afte≥ thσ ordereΣ I/╧ ì
  1269. proces≤ 03h«  I/╧ proces≤ 05Φ i≤ executeΣ beforσ I/╧ proces≤ 04Φ becausσ thσ ì
  1270. actuato≥ i≤ iε positioε t∩ acces≤ blocδ 200░ afte≥ executinτ I/╧ proces≤ 03h«  ì
  1271. I/╧ proces≤ 04Φ i≤ executeΣ last« 
  1272.  
  1273. .cp 8
  1274. ááA≤ aε examplσ oµ thσ operatioε oµ thσ HEA─ O╞ QUEU┼ TA╟ I/╧ process¼ ì
  1275. conside≥ tha⌠ ß ne≈ I/╧ process¼ identifieΣ b∙ ß HEA─ O╞ QUEU┼ TA╟ messagσ ì
  1276. witΦ ß queuσ taτ oµ 08h¼ i≤ transmitteΣ t∩ thσ targe⌠ whilσ thσ ordereΣ I/╧ ì
  1277. proces≤ 03Φ i≤ beinτ executed«  Thσ I/╧ proces≤ 03Φ continue≤ execution¼ bu⌠ ì
  1278. thσ ne≈ HEA─ O╞ QUEU┼ TA╟ I/╧ proces≤ i≤ placeΣ iε thσ queuσ fo≥ executioε ì
  1279. beforσ al∞ subsequen⌠ I/╧ processes«  Iε thi≤ case¼ thσ queuσ fo≥ executioε ì
  1280. afte≥ thσ ordereΣ I/╧ proces≤ 03Φ wa≤ executeΣ woulΣ appea≥ a≤ showε iε Tablσ ì
  1281. ╢-10.
  1282.  
  1283. è.cp 15
  1284. .aw off
  1285. .pm 1
  1286.               Table 6-10: ModifieΣ b∙ HEA─ O╞ QUEU┼ TA╟ Message
  1287.  
  1288.                                    Queue  Logical
  1289.                                     Tag    Blocδ   Transfer
  1290.        CommanΣ  Queuσ Taτ Message  Value  Addres≤   LengtΦ     Status
  1291.        ------¡  -----------------  -----  ------¡  --------¡  ---------
  1292.         REA─         ORDERE─        0│h     100░      100░    Executing
  1293.         REA─      HEA─ O╞ QUEU┼     08Φ        ░         ╕     Queued
  1294.         REA─          SIMPL┼        0╡h     200░      1000     Queued
  1295.         REA─          SIMPL┼        0┤h    1000░         1     QueueΣ  
  1296. .aw on
  1297. .pm 3
  1298.  
  1299. ááT∩ obtaiε maximuφ performancσ gain≤ usinτ taggeΣ queuinτ require≤ carefu∞ ì
  1300. implementatioε oµ thσ queuinτ algorithm≤ iε thσ target«  Iε addition¼ ì
  1301. initiator≤ shoulΣ allo≈ ß maximuφ numbe≥ oµ simplσ I/╧ processe≤ t∩ bσ ì
  1302. executeΣ witΦ ß minimuφ numbe≥ oµ ordereΣ I/╧ processes«  RESERV┼ anΣ RELEAS┼ ì
  1303. commands¼ SE╘ LIMIT╙ commands¼ anΣ appropriatσ softwarσ lockinτ convention≤ ì
  1304. shoulΣ bσ useΣ t∩ guaranteσ thσ prope≥ relationshi≡ betweeε thσ command≤ ì
  1305. executeΣ anΣ thσ datß storeΣ oε thσ periphera∞ devices«  Thesσ convention≤ arσ ì
  1306. no⌠ defineΣ b∙ thi≤ standard.
  1307.  
  1308. .cp 10
  1309. .aw off
  1310. .pm 0
  1311. 6.9. Uni⌠ Attentioε Condition
  1312. .aw on
  1313. .pm 3
  1314.  
  1315. ááThσ targe⌠ shal∞ generatσ ß uni⌠ attentioε conditioε fo≥ eacΦ initiato≥ oε ì
  1316. eacΦ valiΣ logica∞ uni⌠ wheneve≥ thσ targe⌠ ha≤ beeε rese⌠ b∙ ß BU╙ DEVIC┼ ì
  1317. RESE╘ message¼ ß harΣ rese⌠ condition¼ o≥ b∙ ß powe≥-oε reset«  Thσ targe⌠ ì
  1318. shal∞ als∩ generatσ ß uni⌠ attentioε conditioε oε thσ affecteΣ logica∞ unit(s⌐ ì
  1319. fo≥ eacΦ initiato≥ wheneve≥ onσ oµ thσ followinτ event≤ occurs:
  1320. .lm 3
  1321. áá(1⌐ ┴ removablσ mediuφ ma∙ havσ beeε changed.
  1322. áá(2⌐ Thσ modσ parameter≤ iε effec⌠ fo≥ thi≤ initiato≥ havσ beeε changeΣ b∙ ì
  1323. ááanothe≥ initiator.
  1324. áá(3⌐ Thσ versioε o≥ leve∞ oµ microcodσ ha≤ beeε changed.
  1325. áá(4⌐ TaggeΣ command≤ queueΣ fo≥ thi≤ initiato≥ werσ cleareΣ b∙ anothe≥ ì
  1326. ááinitiator.
  1327. áá(5⌐ INQUIR┘ datß ha≤ beeε changed.
  1328. áá(6⌐ Thσ modσ parameter≤ iε effec⌠ fo≥ thi≤ initiato≥ havσ beeε restoreΣ froφ ì
  1329. áánoε-volatilσ memory.
  1330. áá(7⌐ ┴ changσ iε thσ conditioε oµ ß synchronizeΣ spindle.
  1331. áá(8⌐ An∙ othe≥ even⌠ occur≤ tha⌠ require≤ thσ attentioε oµ thσ initiator.
  1332. .lm 1
  1333.  
  1334. .pm 0
  1335. .lm 3
  1336. ááIMPLEMENTOR╙ NOTES:
  1337. áá(1⌐  Target≤ ma∙ queuσ uni⌠ attentioε condition≤ oε logica∞ units«  Afte≥ ì
  1338. ááthσ firs⌠ uni⌠ attentioε conditioε i≤ cleared¼ anothe≥ uni⌠ attentioε ì
  1339. ááconditioε ma∙ exis⌠ (e.g.¼ ß powe≥ oε conditioε followeΣ b∙ ß microcodσ ì
  1340. ááchangσ condition)«  Thσ initiato≥ caε clea≥ al∞ pendinτ uni⌠ attentioε ì
  1341. áácondition≤ b∙ repeatedl∙ sendinτ thσ REQUES╘ SENS┼ commanΣ unti∞ ß sensσ ke∙ ì
  1342. ááothe≥ thaε UNI╘ ATTENTIO╬ i≤ returneΣ b∙ thσ target.
  1343. áá(2⌐  Seσ 6.5.│ fo≥ requirement≤ concerninτ selectioε oµ aε invaliΣ logica∞ ì
  1344. ááunit.
  1345. .pm 3
  1346. .lm 1
  1347.  
  1348. .cp 3
  1349. ááThσ uni⌠ attentioε conditioε shal∞ persis⌠ oε thσ logica∞ uni⌠ fo≥ eacΦ ì
  1350. initiato≥ unti∞ tha⌠ initiato≥ clear≤ thσ conditioε a≤ describeΣ iε thσ ì
  1351. followinτ paragraphs.
  1352.  
  1353. .cp 7èááIµ aε INQUIR┘ commanΣ i≤ receiveΣ froφ aε initiato≥ t∩ ß logica∞ uni⌠ witΦ ß ì
  1354. pendinτ uni⌠ attentioε conditioε (beforσ thσ targe⌠ generate≤ thσ contingen⌠ ì
  1355. allegiancσ condition)¼ thσ targe⌠ shal∞ perforφ thσ INQUIR┘ commanΣ anΣ shal∞ ì
  1356. no⌠ clea≥ thσ uni⌠ attentioε condition«  Iµ thσ INQUIR┘ commanΣ i≤ receiveΣ ì
  1357. afte≥ thσ targe⌠ ha≤ generateΣ thσ contingen⌠ allegiancσ conditioε fo≥ ß ì
  1358. pendinτ uni⌠ attentioε condition¼ theε thσ uni⌠ attentioε conditioε oε thσ ì
  1359. logica∞ uni⌠ shal∞ bσ cleared¼ anΣ thσ targe⌠ shal∞ perforφ thσ INQUIR┘ ì
  1360. command.
  1361.  
  1362. ááIµ an∙ othe≥ commanΣ i≤ receiveΣ afte≥ thσ targe⌠ ha≤ generateΣ thσ ì
  1363. contingen⌠ allegiancσ conditioε fo≥ ß pendinτ uni⌠ attentioε condition¼ thσ ì
  1364. uni⌠ attentioε conditioε oε thσ logica∞ uni⌠ shal∞ bσ cleared¼ anΣ iµ n∩ othe≥ ì
  1365. uni⌠ attentioε conditioε i≤ pendinτ thσ targe⌠ shal∞ perforφ thσ command«  Iµ ì
  1366. anothe≥ uni⌠ attentioε conditioε i≤ pendinτ thσ targe⌠ shal∞ no⌠ perforφ thσ ì
  1367. commanΣ anΣ shal∞ generatσ anothe≥ contingen⌠ allegiancσ condition.
  1368.  
  1369. ááIµ ß REQUES╘ SENS┼ commanΣ i≤ receiveΣ froφ aε initiato≥ witΦ ß pendinτ uni⌠ ì
  1370. attentioε conditioε (beforσ thσ targe⌠ generate≤ thσ contingen⌠ allegiancσ ì
  1371. condition)¼ theε thσ targe⌠ ma∙ either:
  1372. .cp 2
  1373. áá(1⌐ repor⌠ an∙ pendinτ sensσ datß anΣ preservσ thσ uni⌠ attentioε conditioε ì
  1374. oε thσ logica∞ uni⌠ or
  1375. .cp 2
  1376. áá(2⌐ repor⌠ thσ uni⌠ attentioε condition¼ ma∙ discarΣ an∙ pendinτ sensσ data¼ ì
  1377. anΣ clea≥ thσ uni⌠ attentioε conditioε oε thσ logica∞ uni⌠ fo≥ tha⌠ initiator.
  1378.  
  1379. ááIµ thσ targe⌠ ha≤ alread∙ generateΣ thσ contingen⌠ allegiancσ conditioε fo≥ ì
  1380. thσ uni⌠ attentioε condition¼ thσ targe⌠ shal∞ perforφ thσ seconΣ actioε ì
  1381. listeΣ above.
  1382.  
  1383. ááIµ aε initiato≥ issue≤ ß commanΣ othe≥ thaε INQUIR┘ o≥ REQUES╘ SENS┼ whilσ ß ì
  1384. uni⌠ attentioε conditioε exist≤ fo≥ tha⌠ initiato≥ (prio≥ t∩ generatinτ thσ ì
  1385. contingen⌠ allegiancσ conditioε fo≥ thσ uni⌠ attentioε condition)¼ thσ targe⌠ ì
  1386. shal∞ no⌠ perforφ thσ commanΣ anΣ shal∞ repor⌠ CHEC╦ CONDITIO╬ statu≤ unles≤ ß ì
  1387. highe≥ priorit∙ statu≤ a≤ defineΣ b∙ thσ targe⌠ i≤ als∩ pendinτ (e.g.¼ BUS┘ o≥ ì
  1388. RESERVATIO╬ CONFLICT).
  1389.  
  1390. .cp 5
  1391. ááIµ afte≥ generatinτ thσ contingen⌠ allegiancσ conditioε fo≥ ß pendinτ uni⌠ ì
  1392. attentioε condition¼ thσ nex⌠ commanΣ receiveΣ froφ tha⌠ initiato≥ oε thσ ì
  1393. logica∞ uni⌠ i≤ no⌠ REQUES╘ SENSE¼ theε tha⌠ commanΣ shal∞ bσ performeΣ anΣ ì
  1394. thσ uni⌠ attentioε conditioε shal∞ bσ cleareΣ fo≥ tha⌠ initiato≥ oε thσ ì
  1395. logica∞ uni⌠ anΣ thσ sensσ datß i≤ los⌠ (seσ 6.6).
  1396.  
  1397. ááIµ ß targe⌠ become≤ ß temporar∙ initiato≥ t∩ issuσ ß SEN─ commanΣ witΦ aε ì
  1398. AE╬ bi⌠ oµ one¼ whicΦ inform≤ thσ initiato≥ (temporar∙ target⌐ oµ thσ uni⌠ ì
  1399. attentioε condition¼ anΣ thσ SEN─ commanΣ complete≤ witΦ GOO─ status¼ theε thσ ì
  1400. targe⌠ shal∞ clea≥ thσ uni⌠ attentioε conditioε fo≥ tha⌠ initiato≥ oε thσ ì
  1401. logica∞ uni⌠ (seσ 6.5.5).
  1402.  
  1403. ..end of section
  1404. .paè
  1405.  
  1406.  
  1407.  
  1408.  
  1409.  
  1410.  
  1411.  
  1412.  
  1413.  
  1414.  
  1415.  
  1416.  
  1417.  
  1418.  
  1419.  
  1420.  
  1421.  
  1422.  
  1423.  
  1424.  
  1425. áá                     (Thi≤ pagσ i≤ intentionall∙ blank.)
  1426. .paè