virtio-mmio: Update the device to OASIS spec version
authorPawel Moll <pawel.moll@arm.com>
Fri, 23 Jan 2015 04:15:55 +0000 (14:45 +1030)
committerRusty Russell <rusty@rustcorp.com.au>
Fri, 23 Jan 2015 04:27:10 +0000 (14:57 +1030)
commit1862ee22ce2e28087299aebb6556a5cdc122d0ef
treef28c2d0aae6d7e9bde82b269d09da72d727f8522
parent76545f066d2a85464a9f81de2e159b199cc2942b
virtio-mmio: Update the device to OASIS spec version

This patch add a support for second version of the virtio-mmio device,
which follows OASIS "Virtual I/O Device (VIRTIO) Version 1.0"
specification.

Main changes:

1. The control register symbolic names use the new device/driver
   nomenclature rather than the old guest/host one.

2. The driver detect the device version (version 1 is the pre-OASIS
   spec, version 2 is compatible with fist revision of the OASIS spec)
   and drives the device accordingly.

3. New version uses direct addressing (64 bit address split into two
   low/high register) instead of the guest page size based one,
   and addresses each part of the queue (descriptors, available, used)
   separately.

4. The device activity is now explicitly triggered by writing to the
   "queue ready" register.

5. Whole 64 bit features are properly handled now (both ways).

Signed-off-by: Pawel Moll <pawel.moll@arm.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
drivers/virtio/virtio_mmio.c
include/linux/virtio_mmio.h