qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v6 6/8] virtio-scsi: use virtio wrappers to access h


From: Greg Kurz
Subject: [Qemu-devel] [PATCH v6 6/8] virtio-scsi: use virtio wrappers to access headers
Date: Fri, 28 Mar 2014 11:57:56 +0100
User-agent: StGit/0.16

From: Rusty Russell <address@hidden>

Note that st*_raw and ld*_raw are effectively replaced by st*_p and ld*_p.

Signed-off-by: Rusty Russell <address@hidden>
Reviewed-by: Anthony Liguori <address@hidden>
[ use per-device needs_byteswap flag,
  fix missing tswap32 in virtio_scsi_push_event(),
  Greg Kurz <address@hidden> ]
Signed-off-by: Greg Kurz <address@hidden>
---
 hw/scsi/virtio-scsi.c |   38 ++++++++++++++++++++------------------
 1 file changed, 20 insertions(+), 18 deletions(-)

diff --git a/hw/scsi/virtio-scsi.c b/hw/scsi/virtio-scsi.c
index b0d7517..20d326e 100644
--- a/hw/scsi/virtio-scsi.c
+++ b/hw/scsi/virtio-scsi.c
@@ -18,6 +18,7 @@
 #include <hw/scsi/scsi.h>
 #include <block/scsi.h>
 #include <hw/virtio/virtio-bus.h>
+#include "hw/virtio/virtio-access.h"
 
 typedef struct VirtIOSCSIReq {
     VirtIOSCSI *dev;
@@ -315,12 +316,12 @@ static void virtio_scsi_command_complete(SCSIRequest *r, 
uint32_t status,
     req->resp.cmd->response = VIRTIO_SCSI_S_OK;
     req->resp.cmd->status = status;
     if (req->resp.cmd->status == GOOD) {
-        req->resp.cmd->resid = tswap32(resid);
+        req->resp.cmd->resid = virtio_tswap32(resid, VIRTIO_DEVICE(s));
     } else {
         req->resp.cmd->resid = 0;
         sense_len = scsi_req_get_sense(r, req->resp.cmd->sense,
                                        vs->sense_size);
-        req->resp.cmd->sense_len = tswap32(sense_len);
+        req->resp.cmd->sense_len = virtio_tswap32(sense_len, VIRTIO_DEVICE(s));
     }
     virtio_scsi_complete_req(req);
 }
@@ -416,16 +417,16 @@ static void virtio_scsi_get_config(VirtIODevice *vdev,
     VirtIOSCSIConfig *scsiconf = (VirtIOSCSIConfig *)config;
     VirtIOSCSICommon *s = VIRTIO_SCSI_COMMON(vdev);
 
-    stl_raw(&scsiconf->num_queues, s->conf.num_queues);
-    stl_raw(&scsiconf->seg_max, 128 - 2);
-    stl_raw(&scsiconf->max_sectors, s->conf.max_sectors);
-    stl_raw(&scsiconf->cmd_per_lun, s->conf.cmd_per_lun);
-    stl_raw(&scsiconf->event_info_size, sizeof(VirtIOSCSIEvent));
-    stl_raw(&scsiconf->sense_size, s->sense_size);
-    stl_raw(&scsiconf->cdb_size, s->cdb_size);
-    stw_raw(&scsiconf->max_channel, VIRTIO_SCSI_MAX_CHANNEL);
-    stw_raw(&scsiconf->max_target, VIRTIO_SCSI_MAX_TARGET);
-    stl_raw(&scsiconf->max_lun, VIRTIO_SCSI_MAX_LUN);
+    virtio_stl_p(&scsiconf->num_queues, s->conf.num_queues, vdev);
+    virtio_stl_p(&scsiconf->seg_max, 128 - 2, vdev);
+    virtio_stl_p(&scsiconf->max_sectors, s->conf.max_sectors, vdev);
+    virtio_stl_p(&scsiconf->cmd_per_lun, s->conf.cmd_per_lun, vdev);
+    virtio_stl_p(&scsiconf->event_info_size, sizeof(VirtIOSCSIEvent), vdev);
+    virtio_stl_p(&scsiconf->sense_size, s->sense_size, vdev);
+    virtio_stl_p(&scsiconf->cdb_size, s->cdb_size, vdev);
+    virtio_stw_p(&scsiconf->max_channel, VIRTIO_SCSI_MAX_CHANNEL, vdev);
+    virtio_stw_p(&scsiconf->max_target, VIRTIO_SCSI_MAX_TARGET, vdev);
+    virtio_stl_p(&scsiconf->max_lun, VIRTIO_SCSI_MAX_LUN, vdev);
 }
 
 static void virtio_scsi_set_config(VirtIODevice *vdev,
@@ -434,14 +435,15 @@ static void virtio_scsi_set_config(VirtIODevice *vdev,
     VirtIOSCSIConfig *scsiconf = (VirtIOSCSIConfig *)config;
     VirtIOSCSICommon *vs = VIRTIO_SCSI_COMMON(vdev);
 
-    if ((uint32_t) ldl_raw(&scsiconf->sense_size) >= 65536 ||
-        (uint32_t) ldl_raw(&scsiconf->cdb_size) >= 256) {
+    if ((uint32_t) virtio_ldl_p(&scsiconf->sense_size,
+                                vdev) >= 65536 ||
+        (uint32_t) virtio_ldl_p(&scsiconf->cdb_size, vdev) >= 256) {
         error_report("bad data written to virtio-scsi configuration space");
         exit(1);
     }
 
-    vs->sense_size = ldl_raw(&scsiconf->sense_size);
-    vs->cdb_size = ldl_raw(&scsiconf->cdb_size);
+    vs->sense_size = virtio_ldl_p(&scsiconf->sense_size, vdev);
+    vs->cdb_size = virtio_ldl_p(&scsiconf->cdb_size, vdev);
 }
 
 static uint32_t virtio_scsi_get_features(VirtIODevice *vdev,
@@ -519,8 +521,8 @@ static void virtio_scsi_push_event(VirtIOSCSI *s, 
SCSIDevice *dev,
 
     evt = req->resp.event;
     memset(evt, 0, sizeof(VirtIOSCSIEvent));
-    evt->event = event;
-    evt->reason = reason;
+    evt->event = virtio_tswap32(event);
+    evt->reason = virtio_tswap32(reason);
     if (!dev) {
         assert(event == VIRTIO_SCSI_T_EVENTS_MISSED);
     } else {




reply via email to

[Prev in Thread] Current Thread [Next in Thread]