From: Greg Kurz <gkurz@linux.vnet.ibm.com>
To: qemu-devel@nongnu.org
Cc: "Kevin Wolf" <kwolf@redhat.com>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Anthony Liguori" <aliguori@amazon.com>,
"Juan Quintela" <quintela@redhat.com>,
"Rusty Russell" <rusty@rustcorp.com.au>,
"Alexander Graf" <agraf@suse.de>,
"Michael S. Tsirkin" <mst@redhat.com>,
aneesh.kumar@linux.vnet.ibm.com,
"Stefan Hajnoczi" <stefanha@redhat.com>,
"Amit Shah" <amit.shah@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Andreas Färber" <afaerber@suse.de>
Subject: Re: [Qemu-devel] [PATCH v8 17/20] virtio-scsi: use virtio wrappers to access headers
Date: Thu, 19 Jun 2014 17:05:30 +0200 [thread overview]
Message-ID: <20140619170530.78e951d5@bahia.local> (raw)
In-Reply-To: <20140613112454.22108.70328.stgit@bahia.local>
On Fri, 13 Jun 2014 13:24:59 +0200
Greg Kurz <gkurz@linux.vnet.ibm.com> wrote:
> From: Rusty Russell <rusty@rustcorp.com.au>
>
> Note that st*_raw and ld*_raw are effectively replaced by st*_p and ld*_p.
>
> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
> Reviewed-by: Anthony Liguori <aliguori@us.ibm.com>
> [ pass VirtIODevice * to memory accessors,
> fix missing tswap32 in virtio_scsi_push_event() by Cédric Le Goater,
> Greg Kurz <gkurz@linux.vnet.ibm.com> ]
> Cc: Cédric Le Goater <clg@fr.ibm.com>
> Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com>
> ---
> 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 d5c37a9..e9afe00 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,6 +316,7 @@ static void virtio_scsi_command_complete(SCSIRequest *r, uint32_t status,
> VirtIOSCSIReq *req = r->hba_private;
> VirtIOSCSI *s = req->dev;
> VirtIOSCSICommon *vs = VIRTIO_SCSI_COMMON(s);
> + VirtIODevice *vdev = VIRTIO_DEVICE(s);
> uint32_t sense_len;
>
> if (r->io_canceled) {
> @@ -324,12 +326,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(vdev, resid);
> } 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(vdev, sense_len);
> }
> virtio_scsi_complete_req(req);
> }
> @@ -425,16 +427,16 @@ static void virtio_scsi_get_config(VirtIODevice *vdev,
> VirtIOSCSIConfig *scsiconf = (VirtIOSCSIConfig *)config;
> VirtIOSCSICommon *s = VIRTIO_SCSI_COMMON(vdev);
>
> - stl_p(&scsiconf->num_queues, s->conf.num_queues);
> - stl_p(&scsiconf->seg_max, 128 - 2);
> - stl_p(&scsiconf->max_sectors, s->conf.max_sectors);
> - stl_p(&scsiconf->cmd_per_lun, s->conf.cmd_per_lun);
> - stl_p(&scsiconf->event_info_size, sizeof(VirtIOSCSIEvent));
> - stl_p(&scsiconf->sense_size, s->sense_size);
> - stl_p(&scsiconf->cdb_size, s->cdb_size);
> - stw_p(&scsiconf->max_channel, VIRTIO_SCSI_MAX_CHANNEL);
> - stw_p(&scsiconf->max_target, VIRTIO_SCSI_MAX_TARGET);
> - stl_p(&scsiconf->max_lun, VIRTIO_SCSI_MAX_LUN);
> + virtio_stl_p(vdev, &scsiconf->num_queues, s->conf.num_queues);
> + virtio_stl_p(vdev, &scsiconf->seg_max, 128 - 2);
> + virtio_stl_p(vdev, &scsiconf->max_sectors, s->conf.max_sectors);
> + virtio_stl_p(vdev, &scsiconf->cmd_per_lun, s->conf.cmd_per_lun);
> + virtio_stl_p(vdev, &scsiconf->event_info_size, sizeof(VirtIOSCSIEvent));
> + virtio_stl_p(vdev, &scsiconf->sense_size, s->sense_size);
> + virtio_stl_p(vdev, &scsiconf->cdb_size, s->cdb_size);
> + virtio_stw_p(vdev, &scsiconf->max_channel, VIRTIO_SCSI_MAX_CHANNEL);
> + virtio_stw_p(vdev, &scsiconf->max_target, VIRTIO_SCSI_MAX_TARGET);
> + virtio_stl_p(vdev, &scsiconf->max_lun, VIRTIO_SCSI_MAX_LUN);
> }
>
> static void virtio_scsi_set_config(VirtIODevice *vdev,
> @@ -443,14 +445,14 @@ static void virtio_scsi_set_config(VirtIODevice *vdev,
> VirtIOSCSIConfig *scsiconf = (VirtIOSCSIConfig *)config;
> VirtIOSCSICommon *vs = VIRTIO_SCSI_COMMON(vdev);
>
> - if ((uint32_t) ldl_p(&scsiconf->sense_size) >= 65536 ||
> - (uint32_t) ldl_p(&scsiconf->cdb_size) >= 256) {
> + if ((uint32_t) virtio_ldl_p(vdev, &scsiconf->sense_size) >= 65536 ||
> + (uint32_t) virtio_ldl_p(vdev, &scsiconf->cdb_size) >= 256) {
> error_report("bad data written to virtio-scsi configuration space");
> exit(1);
> }
>
> - vs->sense_size = ldl_p(&scsiconf->sense_size);
> - vs->cdb_size = ldl_p(&scsiconf->cdb_size);
> + vs->sense_size = virtio_ldl_p(vdev, &scsiconf->sense_size);
> + vs->cdb_size = virtio_ldl_p(vdev, &scsiconf->cdb_size);
> }
>
> static uint32_t virtio_scsi_get_features(VirtIODevice *vdev,
> @@ -529,8 +531,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(vdev, event);
> + evt->reason = virtio_tswap32(vdev, reason);
This chunk is a fix for a different issue actually... I'll send it in a separate patch.
> if (!dev) {
> assert(event == VIRTIO_SCSI_T_EVENTS_MISSED);
> } else {
>
>
--
Gregory Kurz kurzgreg@fr.ibm.com
gkurz@linux.vnet.ibm.com
Software Engineer @ IBM/Meiosys http://www.ibm.com
Tel +33 (0)562 165 496
"Anarchy is about taking complete responsibility for yourself."
Alan Moore.
next prev parent reply other threads:[~2014-06-19 15:05 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-13 11:18 [Qemu-devel] [PATCH v8 00/20] virtio endian-ambivalent target Greg Kurz
2014-06-13 11:18 ` [Qemu-devel] [PATCH v8 01/20] virtio-serial: don't migrate the config space Greg Kurz
2014-06-13 11:33 ` Alexander Graf
2014-06-19 10:40 ` Amit Shah
2014-06-19 11:17 ` Greg Kurz
2014-06-19 11:32 ` Michael S. Tsirkin
2014-06-13 11:19 ` [Qemu-devel] [PATCH v8 02/20] virtio: introduce device specific migration calls Greg Kurz
2014-06-13 11:19 ` [Qemu-devel] [PATCH v8 03/20] virtio-net: implement per-device " Greg Kurz
2014-06-13 11:19 ` [Qemu-devel] [PATCH v8 04/20] virtio-blk: " Greg Kurz
2014-06-13 11:20 ` [Qemu-devel] [PATCH v8 05/20] virtio-serial: " Greg Kurz
2014-06-13 11:20 ` [Qemu-devel] [PATCH v8 06/20] virtio-balloon: " Greg Kurz
2014-06-13 11:21 ` [Qemu-devel] [PATCH v8 07/20] virtio-rng: " Greg Kurz
2014-06-13 11:21 ` [Qemu-devel] [PATCH v8 08/20] virtio: add subsections to the migration stream Greg Kurz
2014-06-13 11:21 ` [Qemu-devel] [PATCH v8 09/20] exec: introduce target_words_bigendian() helper Greg Kurz
2014-06-13 11:41 ` Alexander Graf
2014-06-13 12:05 ` Greg Kurz
2014-06-13 11:22 ` [Qemu-devel] [PATCH v8 10/20] cpu: introduce CPUClass::virtio_is_big_endian() Greg Kurz
2014-06-13 11:42 ` Alexander Graf
2014-06-13 12:08 ` Greg Kurz
2014-06-13 11:23 ` [Qemu-devel] [PATCH v8 11/20] virtio: add endian-ambivalent support to VirtIODevice Greg Kurz
2014-06-13 11:46 ` Alexander Graf
2014-06-13 12:14 ` Greg Kurz
2014-06-13 12:41 ` Alexander Graf
2014-06-13 12:52 ` Greg Kurz
2014-06-13 11:23 ` [Qemu-devel] [PATCH v8 12/20] virtio: memory accessors for endian-ambivalent targets Greg Kurz
2014-06-13 11:24 ` [Qemu-devel] [PATCH v8 13/20] virtio: allow byte swapping for vring Greg Kurz
2014-06-13 11:24 ` [Qemu-devel] [PATCH v8 14/20] virtio-net: use virtio wrappers to access headers Greg Kurz
2014-06-13 11:52 ` Alexander Graf
2014-06-13 12:24 ` Cedric Le Goater
2014-06-13 12:40 ` Greg Kurz
2014-06-13 11:24 ` [Qemu-devel] [PATCH v8 15/20] virtio-balloon: use virtio wrappers to access page frame numbers Greg Kurz
2014-06-13 11:24 ` [Qemu-devel] [PATCH v8 16/20] virtio-blk: use virtio wrappers to access headers Greg Kurz
2014-06-13 11:24 ` [Qemu-devel] [PATCH v8 17/20] virtio-scsi: " Greg Kurz
2014-06-19 15:05 ` Greg Kurz [this message]
2014-06-20 8:24 ` Paolo Bonzini
2014-06-20 8:33 ` Greg Kurz
2014-06-13 11:25 ` [Qemu-devel] [PATCH v8 18/20] virtio-serial-bus: " Greg Kurz
2014-06-13 11:25 ` [Qemu-devel] [PATCH v8 19/20] virtio-9p: " Greg Kurz
2014-06-13 11:26 ` [Qemu-devel] [PATCH v8 20/20] target-ppc: enable virtio endian ambivalent support Greg Kurz
2014-06-13 11:56 ` [Qemu-devel] [PATCH v8 00/20] virtio endian-ambivalent target Alexander Graf
2014-06-16 15:07 ` Greg Kurz
2014-06-16 16:53 ` Amit Shah
2014-06-17 7:36 ` Stefan Hajnoczi
2014-06-17 7:40 ` Alexander Graf
2014-06-18 10:38 ` Stefan Hajnoczi
2014-06-18 12:35 ` Greg Kurz
2014-06-18 15:12 ` Michael S. Tsirkin
2014-06-18 15:14 ` Alexander Graf
2014-06-18 15:26 ` Michael S. Tsirkin
2014-06-19 9:51 ` Stefan Hajnoczi
2014-06-18 12:53 ` Peter Maydell
2014-06-18 13:42 ` Michael S. Tsirkin
2014-06-18 14:28 ` Greg Kurz
2014-06-18 15:05 ` Michael S. Tsirkin
2014-06-18 15:35 ` Peter Maydell
2014-06-18 15:37 ` Alexander Graf
2014-06-18 15:40 ` Peter Maydell
2014-06-18 15:41 ` Alexander Graf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140619170530.78e951d5@bahia.local \
--to=gkurz@linux.vnet.ibm.com \
--cc=afaerber@suse.de \
--cc=agraf@suse.de \
--cc=aliguori@amazon.com \
--cc=amit.shah@redhat.com \
--cc=aneesh.kumar@linux.vnet.ibm.com \
--cc=kwolf@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=rusty@rustcorp.com.au \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).