[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v6 6/8] virtio-scsi: use virtio wrappers to acce
From: |
Greg Kurz |
Subject: |
Re: [Qemu-devel] [PATCH v6 6/8] virtio-scsi: use virtio wrappers to access headers |
Date: |
Fri, 28 Mar 2014 18:13:26 +0100 |
On Fri, 28 Mar 2014 11:57:56 +0100
Greg Kurz <address@hidden> wrote:
> 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);
My bad again, it should be:
+ evt->event = virtio_tswap32(event, vdev);
+ evt->reason = virtio_tswap32(reason, vdev);
> if (!dev) {
> assert(event == VIRTIO_SCSI_T_EVENTS_MISSED);
> } else {
>
>
--
Gregory Kurz address@hidden
address@hidden
Software Engineer @ IBM/Meiosys http://www.ibm.com
Tel +33 (0)562 165 496
"Anarchy is about taking complete responsibility for yourself."
Alan Moore.
- Re: [Qemu-devel] [PATCH v6 2/8] virtio: allow byte swapping for vring and config access, (continued)
- [Qemu-devel] [PATCH v6 3/8] virtio-net: use virtio wrappers to access headers, Greg Kurz, 2014/03/28
- [Qemu-devel] [PATCH v6 4/8] virtio-balloon: use virtio wrappers to access page frame numbers, Greg Kurz, 2014/03/28
- [Qemu-devel] [PATCH v6 5/8] virtio-blk: use virtio wrappers to access headers, Greg Kurz, 2014/03/28
- [Qemu-devel] [PATCH v6 6/8] virtio-scsi: use virtio wrappers to access headers, Greg Kurz, 2014/03/28
- Re: [Qemu-devel] [PATCH v6 6/8] virtio-scsi: use virtio wrappers to access headers,
Greg Kurz <=
- Re: [Qemu-devel] [PATCH v6 6/8] virtio-scsi: use virtio wrappers to access headers, Andreas Färber, 2014/03/28
- Re: [Qemu-devel] [PATCH v6 6/8] virtio-scsi: use virtio wrappers to access headers, Greg Kurz, 2014/03/28
- Re: [Qemu-devel] [PATCH v6 6/8] virtio-scsi: use virtio wrappers to access headers, Peter Maydell, 2014/03/28
- Re: [Qemu-devel] [PATCH v6 6/8] virtio-scsi: use virtio wrappers to access headers, Greg Kurz, 2014/03/28
- Re: [Qemu-devel] [PATCH v6 6/8] virtio-scsi: use virtio wrappers to access headers, Peter Maydell, 2014/03/28
- Re: [Qemu-devel] [PATCH v6 6/8] virtio-scsi: use virtio wrappers to access headers, Greg Kurz, 2014/03/28
Re: [Qemu-devel] [PATCH v6 6/8] virtio-scsi: use virtio wrappers to access headers, Alexander Graf, 2014/03/31
[Qemu-devel] [PATCH v6 7/8] virtio-serial-bus: use virtio wrappers to access headers, Greg Kurz, 2014/03/28
[Qemu-devel] [PATCH v6 8/8] virtio-9p: use virtio wrappers to access headers, Greg Kurz, 2014/03/28