diff options
author | Nikunj A. Dadhania <nikunj@linux.vnet.ibm.com> | 2013-06-05 16:05:09 +1000 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2013-06-05 16:12:31 +1000 |
commit | b5595b4565b65e02c6cdc083951bc439b9a353af (patch) | |
tree | 6fee9f9d4776ebbd88e97f03a56e66038296b85d /lib/libvirtio/virtio.code | |
parent | 41deea102e8233b7278155a0c41bf850bc5a6d07 (diff) | |
download | SLOF-b5595b4565b65e02c6cdc083951bc439b9a353af.zip SLOF-b5595b4565b65e02c6cdc083951bc439b9a353af.tar.gz SLOF-b5595b4565b65e02c6cdc083951bc439b9a353af.tar.bz2 |
SLOF: virtio-scsi helper routines
* initialize/shutdown virtio-scsi device
* routine for sending scsi commands to virtio-scsi device
[ Modified to pass the whole virtio req/resp from forth
to allow better handling of status and sense buffer
-- BenH
]
Signed-off-by: Nikunj A. Dadhania <nikunj@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'lib/libvirtio/virtio.code')
-rw-r--r-- | lib/libvirtio/virtio.code | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/libvirtio/virtio.code b/lib/libvirtio/virtio.code index 100cc96..9c50c92 100644 --- a/lib/libvirtio/virtio.code +++ b/lib/libvirtio/virtio.code @@ -13,6 +13,7 @@ #include <virtio.h> #include <virtio-blk.h> #include <virtio-9p.h> +#include <virtio-scsi.h> /******** core virtio ********/ @@ -92,3 +93,29 @@ PRIM(virtio_X2d_fs_X2d_load) TOS.n = virtio_9p_load(dev, str, buf); MIRP + +/******** virtio-scsi ********/ + +// : virtio-scsi-init ( dev -- success ) +PRIM(virtio_X2d_scsi_X2d_init) + void *dev = TOS.a; + TOS.u = virtioscsi_init(dev); +MIRP + +// : virtio-scsi-shutdown ( dev -- ) +PRIM(virtio_X2d_scsi_X2d_shutdown) + void *dev = TOS.a; POP; + virtioscsi_shutdown(dev); +MIRP + +// : virtio-scsi-send ( buf_addr buf_len is_read req_ptr rsp_ptr dev -- success) +PRIM(virtio_X2d_scsi_X2d_send) + void *dev = TOS.a; POP; + void *resp = TOS.a; POP; + void *req = TOS.a; POP; + int is_read = !!TOS.n; POP; + uint64_t blen = TOS.n; POP; + void *buf = TOS.a; + TOS.n = virtioscsi_send(dev, req, resp, is_read, buf, blen); +MIRP + |