root / include / hw / virtio / virtio-scsi.h @ 0d09e41a
History | View | Annotate | Download (1.9 kB)
1 |
/*
|
---|---|
2 |
* Virtio SCSI HBA
|
3 |
*
|
4 |
* Copyright IBM, Corp. 2010
|
5 |
*
|
6 |
* Authors:
|
7 |
* Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
|
8 |
*
|
9 |
* This work is licensed under the terms of the GNU GPL, version 2. See
|
10 |
* the COPYING file in the top-level directory.
|
11 |
*
|
12 |
*/
|
13 |
|
14 |
#ifndef _QEMU_VIRTIO_SCSI_H
|
15 |
#define _QEMU_VIRTIO_SCSI_H
|
16 |
|
17 |
#include "hw/virtio/virtio.h" |
18 |
#include "hw/pci/pci.h" |
19 |
#include "hw/scsi/scsi.h" |
20 |
|
21 |
#define TYPE_VIRTIO_SCSI "virtio-scsi" |
22 |
#define VIRTIO_SCSI(obj) \
|
23 |
OBJECT_CHECK(VirtIOSCSI, (obj), TYPE_VIRTIO_SCSI) |
24 |
|
25 |
|
26 |
/* The ID for virtio_scsi */
|
27 |
#define VIRTIO_ID_SCSI 8 |
28 |
|
29 |
/* Feature Bits */
|
30 |
#define VIRTIO_SCSI_F_INOUT 0 |
31 |
#define VIRTIO_SCSI_F_HOTPLUG 1 |
32 |
#define VIRTIO_SCSI_F_CHANGE 2 |
33 |
|
34 |
struct VirtIOSCSIConf {
|
35 |
uint32_t num_queues; |
36 |
uint32_t max_sectors; |
37 |
uint32_t cmd_per_lun; |
38 |
}; |
39 |
|
40 |
typedef struct VirtIOSCSI { |
41 |
VirtIODevice parent_obj; |
42 |
VirtIOSCSIConf conf; |
43 |
|
44 |
SCSIBus bus; |
45 |
uint32_t sense_size; |
46 |
uint32_t cdb_size; |
47 |
int resetting;
|
48 |
bool events_dropped;
|
49 |
VirtQueue *ctrl_vq; |
50 |
VirtQueue *event_vq; |
51 |
VirtQueue **cmd_vqs; |
52 |
} VirtIOSCSI; |
53 |
|
54 |
#define DEFINE_VIRTIO_SCSI_PROPERTIES(_state, _conf_field) \
|
55 |
DEFINE_PROP_UINT32("num_queues", _state, _conf_field.num_queues, 1), \ |
56 |
DEFINE_PROP_UINT32("max_sectors", _state, _conf_field.max_sectors, 0xFFFF),\ |
57 |
DEFINE_PROP_UINT32("cmd_per_lun", _state, _conf_field.cmd_per_lun, 128) |
58 |
|
59 |
#define DEFINE_VIRTIO_SCSI_FEATURES(_state, _feature_field) \
|
60 |
DEFINE_VIRTIO_COMMON_FEATURES(_state, _feature_field), \ |
61 |
DEFINE_PROP_BIT("hotplug", _state, _feature_field, VIRTIO_SCSI_F_HOTPLUG, \
|
62 |
true), \
|
63 |
DEFINE_PROP_BIT("param_change", _state, _feature_field, \
|
64 |
VIRTIO_SCSI_F_CHANGE, true)
|
65 |
|
66 |
#endif /* _QEMU_VIRTIO_SCSI_H */ |