From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37300) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WxduO-0000qO-Hb for qemu-devel@nongnu.org; Thu, 19 Jun 2014 11:05:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WxduF-0003H7-Pm for qemu-devel@nongnu.org; Thu, 19 Jun 2014 11:05:48 -0400 Received: from e06smtp13.uk.ibm.com ([195.75.94.109]:58464) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WxduF-0003Gn-9k for qemu-devel@nongnu.org; Thu, 19 Jun 2014 11:05:39 -0400 Received: from /spool/local by e06smtp13.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 19 Jun 2014 16:05:36 +0100 Received: from b06cxnps3075.portsmouth.uk.ibm.com (d06relay10.portsmouth.uk.ibm.com [9.149.109.195]) by d06dlp01.portsmouth.uk.ibm.com (Postfix) with ESMTP id 4D7F317D804E for ; Thu, 19 Jun 2014 16:06:58 +0100 (BST) Received: from d06av05.portsmouth.uk.ibm.com (d06av05.portsmouth.uk.ibm.com [9.149.37.229]) by b06cxnps3075.portsmouth.uk.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id s5JF5XBO24379438 for ; Thu, 19 Jun 2014 15:05:33 GMT Received: from d06av05.portsmouth.uk.ibm.com (localhost [127.0.0.1]) by d06av05.portsmouth.uk.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id s5JF5Wgu020622 for ; Thu, 19 Jun 2014 09:05:33 -0600 Date: Thu, 19 Jun 2014 17:05:30 +0200 From: Greg Kurz Message-ID: <20140619170530.78e951d5@bahia.local> In-Reply-To: <20140613112454.22108.70328.stgit@bahia.local> References: <20140613111703.22108.14322.stgit@bahia.local> <20140613112454.22108.70328.stgit@bahia.local> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v8 17/20] virtio-scsi: use virtio wrappers to access headers List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Kevin Wolf , Peter Maydell , Anthony Liguori , Juan Quintela , Rusty Russell , Alexander Graf , "Michael S. Tsirkin" , aneesh.kumar@linux.vnet.ibm.com, Stefan Hajnoczi , Amit Shah , Paolo Bonzini , Andreas =?UTF-8?B?RsOkcmJlcg==?= On Fri, 13 Jun 2014 13:24:59 +0200 Greg Kurz wrote: > From: Rusty Russell >=20 > Note that st*_raw and ld*_raw are effectively replaced by st*_p and ld*_p. >=20 > Signed-off-by: Rusty Russell > Reviewed-by: Anthony Liguori > [ pass VirtIODevice * to memory accessors, > fix missing tswap32 in virtio_scsi_push_event() by C=C3=A9dric Le Goate= r, > Greg Kurz ] > Cc: C=C3=A9dric Le Goater > Signed-off-by: Greg Kurz > --- > hw/scsi/virtio-scsi.c | 38 ++++++++++++++++++++------------------ > 1 file changed, 20 insertions(+), 18 deletions(-) >=20 > 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 > #include > #include > +#include "hw/virtio/virtio-access.h" >=20 > typedef struct VirtIOSCSIReq { > VirtIOSCSI *dev; > @@ -315,6 +316,7 @@ static void virtio_scsi_command_complete(SCSIRequest = *r, uint32_t status, > VirtIOSCSIReq *req =3D r->hba_private; > VirtIOSCSI *s =3D req->dev; > VirtIOSCSICommon *vs =3D VIRTIO_SCSI_COMMON(s); > + VirtIODevice *vdev =3D VIRTIO_DEVICE(s); > uint32_t sense_len; >=20 > if (r->io_canceled) { > @@ -324,12 +326,12 @@ static void virtio_scsi_command_complete(SCSIReques= t *r, uint32_t status, > req->resp.cmd->response =3D VIRTIO_SCSI_S_OK; > req->resp.cmd->status =3D status; > if (req->resp.cmd->status =3D=3D GOOD) { > - req->resp.cmd->resid =3D tswap32(resid); > + req->resp.cmd->resid =3D virtio_tswap32(vdev, resid); > } else { > req->resp.cmd->resid =3D 0; > sense_len =3D scsi_req_get_sense(r, req->resp.cmd->sense, > vs->sense_size); > - req->resp.cmd->sense_len =3D tswap32(sense_len); > + req->resp.cmd->sense_len =3D virtio_tswap32(vdev, sense_len); > } > virtio_scsi_complete_req(req); > } > @@ -425,16 +427,16 @@ static void virtio_scsi_get_config(VirtIODevice *vd= ev, > VirtIOSCSIConfig *scsiconf =3D (VirtIOSCSIConfig *)config; > VirtIOSCSICommon *s =3D VIRTIO_SCSI_COMMON(vdev); >=20 > - 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(VirtIOSCSIEven= t)); > + 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); > } >=20 > static void virtio_scsi_set_config(VirtIODevice *vdev, > @@ -443,14 +445,14 @@ static void virtio_scsi_set_config(VirtIODevice *vd= ev, > VirtIOSCSIConfig *scsiconf =3D (VirtIOSCSIConfig *)config; > VirtIOSCSICommon *vs =3D VIRTIO_SCSI_COMMON(vdev); >=20 > - if ((uint32_t) ldl_p(&scsiconf->sense_size) >=3D 65536 || > - (uint32_t) ldl_p(&scsiconf->cdb_size) >=3D 256) { > + if ((uint32_t) virtio_ldl_p(vdev, &scsiconf->sense_size) >=3D 65536 = || > + (uint32_t) virtio_ldl_p(vdev, &scsiconf->cdb_size) >=3D 256) { > error_report("bad data written to virtio-scsi configuration spac= e"); > exit(1); > } >=20 > - vs->sense_size =3D ldl_p(&scsiconf->sense_size); > - vs->cdb_size =3D ldl_p(&scsiconf->cdb_size); > + vs->sense_size =3D virtio_ldl_p(vdev, &scsiconf->sense_size); > + vs->cdb_size =3D virtio_ldl_p(vdev, &scsiconf->cdb_size); > } >=20 > static uint32_t virtio_scsi_get_features(VirtIODevice *vdev, > @@ -529,8 +531,8 @@ static void virtio_scsi_push_event(VirtIOSCSI *s, SCS= IDevice *dev, >=20 > evt =3D req->resp.event; > memset(evt, 0, sizeof(VirtIOSCSIEvent)); > - evt->event =3D event; > - evt->reason =3D reason; > + evt->event =3D virtio_tswap32(vdev, event); > + evt->reason =3D virtio_tswap32(vdev, reason); This chunk is a fix for a different issue actually... I'll send it in a sep= arate patch. > if (!dev) { > assert(event =3D=3D VIRTIO_SCSI_T_EVENTS_MISSED); > } else { >=20 >=20 --=20 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.