Revision fd506b4f hw/scsi/spapr_vscsi.c
b/hw/scsi/spapr_vscsi.c | ||
---|---|---|
91 | 91 |
int total_desc; |
92 | 92 |
} vscsi_req; |
93 | 93 |
|
94 |
#define TYPE_VIO_SPAPR_VSCSI_DEVICE "spapr-vscsi" |
|
95 |
#define VIO_SPAPR_VSCSI_DEVICE(obj) \ |
|
96 |
OBJECT_CHECK(VSCSIState, (obj), TYPE_VIO_SPAPR_VSCSI_DEVICE) |
|
94 | 97 |
|
95 | 98 |
typedef struct { |
96 | 99 |
VIOsPAPRDevice vdev; |
... | ... | |
461 | 464 |
/* Callback to indicate that the SCSI layer has completed a transfer. */ |
462 | 465 |
static void vscsi_transfer_data(SCSIRequest *sreq, uint32_t len) |
463 | 466 |
{ |
464 |
VSCSIState *s = DO_UPCAST(VSCSIState, vdev.qdev, sreq->bus->qbus.parent);
|
|
467 |
VSCSIState *s = VIO_SPAPR_VSCSI_DEVICE(sreq->bus->qbus.parent);
|
|
465 | 468 |
vscsi_req *req = sreq->hba_private; |
466 | 469 |
uint8_t *buf; |
467 | 470 |
int rc = 0; |
... | ... | |
492 | 495 |
/* Callback to indicate that the SCSI layer has completed a transfer. */ |
493 | 496 |
static void vscsi_command_complete(SCSIRequest *sreq, uint32_t status, size_t resid) |
494 | 497 |
{ |
495 |
VSCSIState *s = DO_UPCAST(VSCSIState, vdev.qdev, sreq->bus->qbus.parent);
|
|
498 |
VSCSIState *s = VIO_SPAPR_VSCSI_DEVICE(sreq->bus->qbus.parent);
|
|
496 | 499 |
vscsi_req *req = sreq->hba_private; |
497 | 500 |
int32_t res_in = 0, res_out = 0; |
498 | 501 |
|
... | ... | |
827 | 830 |
|
828 | 831 |
static int vscsi_do_crq(struct VIOsPAPRDevice *dev, uint8_t *crq_data) |
829 | 832 |
{ |
830 |
VSCSIState *s = DO_UPCAST(VSCSIState, vdev, dev);
|
|
833 |
VSCSIState *s = VIO_SPAPR_VSCSI_DEVICE(dev);
|
|
831 | 834 |
vscsi_crq crq; |
832 | 835 |
|
833 | 836 |
memcpy(crq.raw, crq_data, 16); |
... | ... | |
897 | 900 |
|
898 | 901 |
static void spapr_vscsi_reset(VIOsPAPRDevice *dev) |
899 | 902 |
{ |
900 |
VSCSIState *s = DO_UPCAST(VSCSIState, vdev, dev);
|
|
903 |
VSCSIState *s = VIO_SPAPR_VSCSI_DEVICE(dev);
|
|
901 | 904 |
int i; |
902 | 905 |
|
903 | 906 |
memset(s->reqs, 0, sizeof(s->reqs)); |
... | ... | |
908 | 911 |
|
909 | 912 |
static int spapr_vscsi_init(VIOsPAPRDevice *dev) |
910 | 913 |
{ |
911 |
VSCSIState *s = DO_UPCAST(VSCSIState, vdev, dev);
|
|
914 |
VSCSIState *s = VIO_SPAPR_VSCSI_DEVICE(dev);
|
|
912 | 915 |
|
913 | 916 |
dev->crq.SendFunc = vscsi_do_crq; |
914 | 917 |
|
... | ... | |
968 | 971 |
} |
969 | 972 |
|
970 | 973 |
static const TypeInfo spapr_vscsi_info = { |
971 |
.name = "spapr-vscsi",
|
|
974 |
.name = TYPE_VIO_SPAPR_VSCSI_DEVICE,
|
|
972 | 975 |
.parent = TYPE_VIO_SPAPR_DEVICE, |
973 | 976 |
.instance_size = sizeof(VSCSIState), |
974 | 977 |
.class_init = spapr_vscsi_class_init, |
Also available in: Unified diff