[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: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [PATCH v7 2/7] tests: Add virtio device initialization |
Date: |
Fri, 29 Aug 2014 16:49:36 +0100 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
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
pgpm7UwjVTHmz.pgp
Description: PGP signature
- [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