Pawel Moll <pawel.moll@xxxxxxx> writes: > On Fri, 2013-10-11 at 15:36 +0100, Marc Zyngier wrote: >> As virtio-mmio config registers are specified to be little-endian, >> using readl() to read the magic value and then memcmp() to check it >> fails on BE (as readl() has an implicit swab). >> >> Fix it by encoding the magic value as an integer instead of a string. >> >> Cc: Rusty Russell <rusty@xxxxxxxxxxxxxxx> >> Cc: Michael S. Tsirkin <mst@xxxxxxxxxx> >> Cc: Pawel Moll <pawel.moll@xxxxxxx> >> Signed-off-by: Marc Zyngier <marc.zyngier@xxxxxxx> >> --- >> drivers/virtio/virtio_mmio.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c >> index 1ba0d68..57f24fd 100644 >> --- a/drivers/virtio/virtio_mmio.c >> +++ b/drivers/virtio/virtio_mmio.c >> @@ -470,7 +470,7 @@ static int virtio_mmio_probe(struct platform_device *pdev) >> >> /* Check magic value */ >> magic = readl(vm_dev->base + VIRTIO_MMIO_MAGIC_VALUE); >> - if (memcmp(&magic, "virt", 4) != 0) { >> + if (magic != ('v' | 'i' << 8 | 'r' << 16 | 't' << 24)) { >> dev_warn(&pdev->dev, "Wrong magic value 0x%08lx!\n", magic); >> return -ENODEV; >> } > > The new spec will clarify this: > > * 0x000 | R | MagicValue > Magic value. Must be 0x74726976 (a Little Endian equivalent > of a "virt" string). > > ... but I like the 'v'i'r't' characters still being there :-) > > Acked-by: Pawel Moll <pawel.moll@xxxxxxx> Applied, thanks. Cheers, Rusty. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html