[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v7 2/7] tests: Add virtio device initialization
From: |
Marc Marí |
Subject: |
Re: [Qemu-devel] [PATCH v7 2/7] tests: Add virtio device initialization |
Date: |
Fri, 29 Aug 2014 21:31:28 +0200 |
El Fri, 29 Aug 2014 16:49:36 +0100
Stefan Hajnoczi <address@hidden> escribió:
> On Fri, Aug 29, 2014 at 12:40:43PM +0200, Marc Marí wrote:
> > +static uint64_t qvirtio_pci_config_readq(QVirtioDevice *d, void
> > *addr) +{
> > + QVirtioPCIDevice *dev = (QVirtioPCIDevice *)d;
> > + int i;
> > + union {
> > + uint8_t bytes[8];
> > + uint64_t u64;
> > + } quad;
> > +
> > + if (qtest_big_endian()) {
> > + for (i = 0; i < 8; ++i) {
> > + quad.bytes[7-i] = qpci_io_readb(dev->pdev, addr + i);
> > + }
> > + } else {
> > + for (i = 0; i < 8; ++i) {
> > + quad.bytes[i] = 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 = 0; i < 8; ++i) {
> quad.bytes[i] = qpci_io_readb(dev->pdev, addr + i);
> }
> if (qtest_big_endian() != qtest_host_endian()) {
> quad.u64 = bswap64(quad.u64);
> }
> return quard.u64;
>
> Stefan
Sorry, I messed up. These are the things that one is not used to think
about, as this is usally taken for granted because the OS handles it.
Marc
- [Qemu-devel] [PATCH v7 0/7] Virtio PCI libqos driver, Marc Marí, 2014/08/29
- [Qemu-devel] [PATCH v7 3/7] libqos: Added basic virtqueue support to virtio implementation, Marc Marí, 2014/08/29
- [Qemu-devel] [PATCH v7 4/7] libqos: Added indirect descriptor support to virtio implementation, Marc Marí, 2014/08/29
- [Qemu-devel] [PATCH v7 5/7] libqos: Added test case for configuration changes in virtio-blk test, Marc Marí, 2014/08/29
- [Qemu-devel] [PATCH v7 6/7] libqos: Added MSI-X support, Marc Marí, 2014/08/29
- [Qemu-devel] [PATCH v7 7/7] libqos: Added EVENT_IDX support, Marc Marí, 2014/08/29