On Fri, 21 Aug 2015 17:05:47 +0800
Jason Wang <[email protected]> wrote:
> diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
> index 788b556..c971ba2 100644
> --- a/hw/virtio/virtio.c
> +++ b/hw/virtio/virtio.c
> @@ -1056,6 +1056,17 @@ static bool virtio_virtqueue_needed(void *opaque)
> return virtio_host_has_feature(vdev, VIRTIO_F_VERSION_1);
> }
>
> +static bool virtio_modern_state_needed(void *opaque)
> +{
> + VirtIODevice *vdev = opaque;
> + BusState *qbus = qdev_get_parent_bus(DEVICE(vdev));
> + VirtioBusClass *k = VIRTIO_BUS_GET_CLASS(qbus);
> +
> + return virtio_virtqueue_needed(opaque) &&
Why does core want to check that? Shouldn't that be done by the class
instead (but see below)?
> + k->has_modern_state &&
> + k->has_modern_state(qbus->parent);
> +}
I don't really like this "modern_state" stuff (which is pci specific)
creeping into core.
How about introducing "extra_state" and/or "extra_queue_state" (or
something like that) instead?