From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36587) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XNOQv-0007kX-1Z for qemu-devel@nongnu.org; Fri, 29 Aug 2014 11:49:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XNOQl-0004qW-WE for qemu-devel@nongnu.org; Fri, 29 Aug 2014 11:49:48 -0400 Received: from mail-we0-x236.google.com ([2a00:1450:400c:c03::236]:33114) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XNOQl-0004qP-Ot for qemu-devel@nongnu.org; Fri, 29 Aug 2014 11:49:39 -0400 Received: by mail-we0-f182.google.com with SMTP id w62so2412969wes.27 for ; Fri, 29 Aug 2014 08:49:38 -0700 (PDT) Date: Fri, 29 Aug 2014 16:49:36 +0100 From: Stefan Hajnoczi Message-ID: <20140829154936.GA19824@stefanha-thinkpad.redhat.com> References: <1409308848-5245-1-git-send-email-marc.mari.barcelo@gmail.com> <1409308848-5245-3-git-send-email-marc.mari.barcelo@gmail.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="h31gzZEtNLTqOjlF" Content-Disposition: inline In-Reply-To: <1409308848-5245-3-git-send-email-marc.mari.barcelo@gmail.com> Subject: Re: [Qemu-devel] [PATCH v7 2/7] tests: Add virtio device initialization List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Marc =?iso-8859-1?Q?Mar=ED?= Cc: Paolo Bonzini , qemu-devel@nongnu.org, Stefan Hajnoczi --h31gzZEtNLTqOjlF Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Fri, Aug 29, 2014 at 12:40:43PM +0200, Marc Mar=ED wrote: > +static uint64_t qvirtio_pci_config_readq(QVirtioDevice *d, void *addr) > +{ > + QVirtioPCIDevice *dev =3D (QVirtioPCIDevice *)d; > + int i; > + union { > + uint8_t bytes[8]; > + uint64_t u64; > + } quad; > + > + if (qtest_big_endian()) { > + for (i =3D 0; i < 8; ++i) { > + quad.bytes[7-i] =3D qpci_io_readb(dev->pdev, addr + i); > + } > + } else { > + for (i =3D 0; i < 8; ++i) { > + quad.bytes[i] =3D qpci_io_readb(dev->pdev, addr + i); > + } > + } > + > + return quad.u64; > +} This assumes that the host is little-endian. The host could be big-endian! qvirtio_pci_config_readq() needs to return a 64-bit value in host CPU endianness. So the logic should be: for (i =3D 0; i < 8; ++i) { quad.bytes[i] =3D qpci_io_readb(dev->pdev, addr + i); } if (qtest_big_endian() !=3D qtest_host_endian()) { quad.u64 =3D bswap64(quad.u64); } return quard.u64; Stefan --h31gzZEtNLTqOjlF Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAEBAgAGBQJUAKEPAAoJEJykq7OBq3PIA2wH/2M1NoV2f45++KXWpmj5AwE2 OWz9ef0QSbJPLfQF3vCYKpOaHjI+eEivmthdRMhEjIcLB0aJUYAqdKzSFFgOeCO/ Vv8K6Z7kn0dDOaAjPskCXsGFPo0BTSLoNLd8XC1/lgjMLbMLOBzPFQchDccCtsaF MesDbErXQvTR9Vt/NIIIZEZU2J3JgYnHuGtwvoZiyjQ7OX4NNfKF2CIMeM2DZI+j J55epjj68FqTkIaSG9ekeBiWi1O4zvS1rp+MDcYurLGKjzrcbzi0He326uod6m59 O+Gi3UjGgjmdfsfXiPNELFjL2B8lvQdaI3dYUu3+JG5gkZuv/EWCedh5W4q8qU0= =lis0 -----END PGP SIGNATURE----- --h31gzZEtNLTqOjlF--