summaryrefslogtreecommitdiffstats
path: root/qemu/roms/SLOF/slof/fs/scsi-disk.fs
diff options
context:
space:
mode:
authorRajithaY <rajithax.yerrumsetty@intel.com>2017-04-25 03:31:15 -0700
committerRajitha Yerrumchetty <rajithax.yerrumsetty@intel.com>2017-05-22 06:48:08 +0000
commitbb756eebdac6fd24e8919e2c43f7d2c8c4091f59 (patch)
treeca11e03542edf2d8f631efeca5e1626d211107e3 /qemu/roms/SLOF/slof/fs/scsi-disk.fs
parenta14b48d18a9ed03ec191cf16b162206998a895ce (diff)
Adding qemu as a submodule of KVMFORNFV
This Patch includes the changes to add qemu as a submodule to kvmfornfv repo and make use of the updated latest qemu for the execution of all testcase Change-Id: I1280af507a857675c7f81d30c95255635667bdd7 Signed-off-by:RajithaY<rajithax.yerrumsetty@intel.com>
Diffstat (limited to 'qemu/roms/SLOF/slof/fs/scsi-disk.fs')
-rw-r--r--qemu/roms/SLOF/slof/fs/scsi-disk.fs324
1 files changed, 0 insertions, 324 deletions
diff --git a/qemu/roms/SLOF/slof/fs/scsi-disk.fs b/qemu/roms/SLOF/slof/fs/scsi-disk.fs
deleted file mode 100644
index 197847147..000000000
--- a/qemu/roms/SLOF/slof/fs/scsi-disk.fs
+++ /dev/null
@@ -1,324 +0,0 @@
-\ *****************************************************************************
-\ * Copyright (c) 2011 IBM Corporation
-\ * All rights reserved.
-\ * This program and the accompanying materials
-\ * are made available under the terms of the BSD License
-\ * which accompanies this distribution, and is available at
-\ * http://www.opensource.org/licenses/bsd-license.php
-\ *
-\ * Contributors:
-\ * IBM Corporation - initial implementation
-\ ****************************************************************************/
-
-\ Create new VSCSI child device
-
-\ Create device
-new-device
-
-\ Set name
-s" disk" device-name
-
-s" block" device-type
-
-false VALUE scsi-disk-debug?
-
-\ Get SCSI bits
-scsi-open
-
-\ Send SCSI commands to controller
-
-: execute-scsi-command ( buf-addr buf-len dir cmd-addr cmd-len -- ... )
- ( ... [ sense-buf sense-len ] stat )
- " execute-scsi-command" $call-parent
-;
-
-: retry-scsi-command ( buf-addr buf-len dir cmd-addr cmd-len #retries -- ... )
- ( ... 0 | [ sense-buf sense-len ] stat )
- " retry-scsi-command" $call-parent
-;
-
-\ ---------------------------------\
-\ Common SCSI Commands and helpers \
-\ ---------------------------------\
-
-0 INSTANCE VALUE block-size
-0 INSTANCE VALUE max-transfer
-0 INSTANCE VALUE max-block-num
-0 INSTANCE VALUE is_cdrom
-INSTANCE VARIABLE deblocker
-
-\ This scratch area is made global for now as we only
-\ use it for small temporary commands such as inquiry
-\ read-capacity or media events
-CREATE scratch 100 allot
-CREATE cdb 10 allot
-
-: dump-scsi-error ( sense-buf sense-len stat name namelen -- )
- ." SCSI-DISK: " my-self instance>path type ." ," type ." failed" cr
- ." SCSI-DISK: Status " dup . .status-text
- 0<> IF
- ." Sense " scsi-get-sense-data dup . .sense-text
- ." ASC " . ." ASCQ " . cr
- ELSE drop THEN
-;
-
-: read-blocks ( addr block# #blocks -- #read )
- scsi-disk-debug? IF
- ." SCSI-DISK: read-blocks " .s cr
- THEN
-
- \ Bound check. This should probably be done by deblocker
- \ but it doesn't at this point so do it here
- 2dup + max-block-num > IF
- ." SCSI-DISK: Access beyond end of device ! " cr
- drop
- dup max-block-num > IF
- drop drop 0 EXIT
- THEN
- dup max-block-num swap -
- THEN
-
- dup block-size * ( addr block# #blocks len )
- >r rot r> ( block# #blocks addr len )
- 2swap ( addr len block# #blocks )
- dup >r
- cdb scsi-build-read-10 ( addr len )
- r> -rot ( #blocks addr len )
- scsi-dir-read cdb scsi-param-size 10
- retry-scsi-command
- ( #blocks [ sense-buf sense-len ] stat )
- dup 0<> IF " read-blocks" dump-scsi-error -65 throw ELSE drop THEN
-;
-
-: (inquiry) ( size -- buffer | NULL )
- dup cdb scsi-build-inquiry
- \ 16 retries for inquiry to flush out any UAs
- scratch swap scsi-dir-read cdb scsi-param-size 10 retry-scsi-command
- \ Success ?
- 0= IF scratch ELSE 2drop 0 THEN
-;
-
-: inquiry ( -- buffer | NULL )
- scsi-disk-debug? IF
- ." SCSI-DISK: inquiry " .s cr
- THEN
- d# 36 (inquiry) 0= IF 0 EXIT THEN
- scratch inquiry-data>add-length c@ 5 +
- (inquiry)
-;
-
-: read-capacity ( -- blocksize #blocks )
- \ Now issue the read-capacity command
- scsi-disk-debug? IF
- ." SCSI-DISK: read-capacity " .s cr
- THEN
- \ Make sure that there are zeros in the buffer in case something goes wrong:
- scratch 10 erase
- cdb scsi-build-read-cap-10 scratch scsi-length-read-cap-10-data scsi-dir-read
- cdb scsi-param-size 1 retry-scsi-command
- \ Success ?
- dup 0<> IF " read-capacity" dump-scsi-error 0 0 EXIT THEN
- drop scratch scsi-get-capacity-10 1 +
-;
-
-100 CONSTANT test-unit-retries
-
-\ SCSI test-unit-read
-: test-unit-ready ( true | [ ascq asc sense-key false ] )
- scsi-disk-debug? IF
- ." SCSI-DISK: test-unit-ready " .s cr
- THEN
- cdb scsi-build-test-unit-ready
- 0 0 0 cdb scsi-param-size test-unit-retries retry-scsi-command
- \ stat == 0, return
- 0= IF true EXIT THEN
- \ check sense len, no sense -> return HW error
- 0= IF drop 0 0 4 false EXIT THEN
- \ get sense
- scsi-get-sense-data false
-;
-
-
-: start-stop-unit ( state# -- true | false )
- scsi-disk-debug? IF
- ." SCSI-DISK: start-stop-unit " .s cr
- THEN
- cdb scsi-build-start-stop-unit
- 0 0 0 cdb scsi-param-size 10 retry-scsi-command
- \ Success ?
- 0= IF true ELSE 2drop false THEN
-;
-
-: compare-sense ( ascq asc key ascq2 asc2 key2 -- true | false )
- 3 pick = ( ascq asc key ascq2 asc2 keycmp )
- swap 4 pick = ( ascq asc key ascq2 keycmp asccmp )
- rot 5 pick = ( ascq asc key keycmp asccmp ascqcmp )
- and and nip nip nip
-;
-
-\ -------------------------\
-\ CDROM specific functions \
-\ -------------------------\
-
-0 CONSTANT CDROM-READY
-1 CONSTANT CDROM-NOT-READY
-2 CONSTANT CDROM-NO-DISK
-3 CONSTANT CDROM-TRAY-OPEN
-4 CONSTANT CDROM-INIT-REQUIRED
-5 CONSTANT CDROM-TRAY-MAYBE-OPEN
-
-: cdrom-try-close-tray ( -- )
- scsi-const-load start-stop-unit drop
-;
-
-: cdrom-must-close-tray ( -- )
- scsi-const-load start-stop-unit not IF
- ." Tray open !" cr -65 throw
- THEN
-;
-
-: get-media-event ( -- true | false )
- scsi-disk-debug? IF
- ." SCSI-DISK: get-media-event " .s cr
- THEN
- cdb scsi-build-get-media-event
- scratch scsi-length-media-event scsi-dir-read cdb scsi-param-size 1 retry-scsi-command
- \ Success ?
- 0= IF true ELSE 2drop false THEN
-;
-
-: cdrom-status ( -- status )
- test-unit-ready
- IF CDROM-READY EXIT THEN
-
- scsi-disk-debug? IF
- ." TestUnitReady sense: " 3dup . . . cr
- THEN
-
- 3dup 1 4 2 compare-sense IF
- 3drop CDROM-NOT-READY EXIT
- THEN
-
- get-media-event IF
- scratch w@ 4 >= IF
- scratch 2 + c@ 04 = IF
- scratch 5 + c@
- dup 02 and 0<> IF drop 3drop CDROM-READY EXIT THEN
- dup 01 and 0<> IF drop 3drop CDROM-TRAY-OPEN EXIT THEN
- drop 3drop CDROM-NO-DISK EXIT
- THEN
- THEN
- THEN
-
- 3dup 2 4 2 compare-sense IF
- 3drop CDROM-INIT-REQUIRED EXIT
- THEN
- over 4 = over 2 = and IF
- \ Format in progress... what do we do ? Just ignore
- 3drop CDROM-READY EXIT
- THEN
- over 3a = IF
- 3drop CDROM-NO-DISK EXIT
- THEN
-
- \ Other error...
- 3drop CDROM-TRAY-MAYBE-OPEN
-;
-
-: prep-cdrom ( -- ready? )
- 5 0 DO
- cdrom-status CASE
- CDROM-READY OF UNLOOP true EXIT ENDOF
- CDROM-NO-DISK OF ." No medium !" cr UNLOOP false EXIT ENDOF
- CDROM-TRAY-OPEN OF cdrom-must-close-tray ENDOF
- CDROM-INIT-REQUIRED OF cdrom-try-close-tray ENDOF
- CDROM-TRAY-MAYBE-OPEN OF cdrom-try-close-tray ENDOF
- ENDCASE
- d# 1000 ms
- LOOP
- ." Drive not ready !" cr false
-;
-
-\ ------------------------\
-\ Disk specific functions \
-\ ------------------------\
-
-: prep-disk ( -- ready? )
- test-unit-ready not IF
- ." SCSI-DISK: Disk not ready ! "
- ." Sense " dup .sense-text ." [" . ." ]"
- ." ASC " . ." ASCQ " . cr
- false EXIT THEN true
-;
-
-\ --------------------------\
-\ Standard device interface \
-\ --------------------------\
-
-: open ( -- true | false )
- scsi-disk-debug? IF
- ." SCSI-DISK: open [" .s ." ] unit is " my-unit . . ." [" .s ." ]" cr
- THEN
- my-unit " set-address" $call-parent
-
- inquiry dup 0= IF drop false EXIT THEN
- scsi-disk-debug? IF
- ." ---- inquiry: ----" cr
- dup 100 dump cr
- ." ------------------" cr
- THEN
-
- \ Skip devices with PQ != 0
- dup inquiry-data>peripheral c@ e0 and 0 <> IF
- ." SCSI-DISK: Unsupported PQ != 0" cr
- false EXIT
- THEN
-
- inquiry-data>peripheral c@ CASE
- 5 OF true to is_cdrom ENDOF
- 7 OF true to is_cdrom ENDOF
- ENDCASE
-
- scsi-disk-debug? IF
- is_cdrom IF
- ." SCSI-DISK: device treated as CD-ROM" cr
- ELSE
- ." SCSI-DISK: device treated as disk" cr
- THEN
- THEN
-
- is_cdrom IF prep-cdrom ELSE prep-disk THEN
- not IF false EXIT THEN
-
- " max-transfer" $call-parent to max-transfer
-
- read-capacity to max-block-num to block-size
- max-block-num 0= block-size 0= OR IF
- ." SCSI-DISK: Failed to get disk capacity!" cr
- FALSE EXIT
- THEN
-
- scsi-disk-debug? IF
- ." Capacity: " max-block-num . ." blocks of " block-size . cr
- THEN
-
- 0 0 " deblocker" $open-package dup deblocker ! dup IF
- " disk-label" find-package IF
- my-args rot interpose
- THEN
- THEN 0<>
-;
-
-: close ( -- )
- deblocker @ close-package ;
-
-: seek ( pos.lo pos.hi -- status )
- s" seek" deblocker @ $call-method ;
-
-: read ( addr len -- actual )
- s" read" deblocker @ $call-method ;
-
-\ Get rid of SCSI bits
-scsi-close
-
-finish-device