qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 3/8] virtio: Add support for guest setting of


From: Peter Maydell
Subject: Re: [Qemu-devel] [PATCH v2 3/8] virtio: Add support for guest setting of queue size
Date: Thu, 25 Jul 2013 10:34:07 +0100

On 25 July 2013 10:03, Michael S. Tsirkin <address@hidden> wrote:
> On Thu, Jul 25, 2013 at 09:50:21AM +0100, Peter Maydell wrote:
>> On 25 July 2013 06:38, Michael S. Tsirkin <address@hidden> wrote:
>> > On Fri, Jul 12, 2013 at 09:36:57PM +0100, Peter Maydell wrote:
>> >> The MMIO virtio transport spec allows the guest to tell the host how
>> >> large the queue size is. Add virtio_queue_set_num() function which
>> >> implements this in the QEMU common virtio support code.
>> >>
>> >> Signed-off-by: Peter Maydell <address@hidden>
>> >
>> > Probably needs to go back to default value on reset?
>>
>> Tricky, since the default value is "whatever was passed to
>> virtio_add_queue()" and we don't save that anywhere.
>>
>> For virtio-mmio it is a guest bug to fail to write to the
>> QueueNum register, so the current behaviour is not out of
>> specification (and not harmful either AFAICT).
>
> Best not to leak info across reboots.
> Also if guest sets num = 0 it will cause all kind of
> harm, no?

Yes, I had the thought on the way into work that we shouldn't
allow the guest to switch between 0 and non-zero.

>> I guess we could add a vring.defaultnum, which would be
>> set by virtio_add_queue/virtio_del_queue, and have reset
>> copy defaultnum into num. No migration needed for defaultnum
>> because it's always the same for a particular qemu config.
>
> Sounds good.
>
>> > Need to migrate?
>>
>> It's already migrated (though I'm not entirely sure why).
>>
>> > Is the default value a max legal value? If yes probably a good
>> > idea to enforce this.
>>
>> virtio_add_queue() already enforces this -- it will abort()
>> if you try to set up a queue with a default size greater
>> than VIRTQUEUE_MAX_SIZE.
>
> No I mean does default value have some meaning?

It's not clear to me -- virtio_add_queue() doesn't document
the semantics of its queue_size parameter.

> Does host supply a hint of a max value
> besides VIRTQUEUE_MAX_SIZE?

The spec says there's a QueueNumMax register which returns
the maximum for the selected queue. The current implementation
of virtio-mmio always returns VIRTQUEUE_MAX_SIZE. We could
return the default size as the QueueNumMax instead but that
would seem to be limiting the guest unnecessarily.

-- PMM



reply via email to

[Prev in Thread] Current Thread [Next in Thread]