On Fri, Mar 27, 2020 at 02:08:48AM +0100, Halil Pasic wrote:
On Thu, 26 Mar 2020 11:32:14 +0100
Bjoern Walk <bwalk(a)linux.ibm.com> wrote:
> + <p>
> + The attribute <code>packed</code> controls the usage of packed
> + virtqueues.
This reads to me, like if packed='on' is specified, then packed
virtqueues are used (or the device fails); if packed='off' is specified
is specified then split virtqueue format is used.
But that statement is not always true. One might still end up using
split despite of packed='on'. One example is a setup vhost-net setup.
The in kernel implementation namely does not support packed queues, so
F_RING_PACKED does not get offered by the device.
Another reason why one could end up with F_RING_PACKED not getting
negotiated is lack of guest support.
Please note that this behavior is a little different than what we do for
cpus (and cpu models). There one either gets what he asked for, or the
VM won't get constructed.
I believe, we should at least document this cleanly. Cc-ing Michael
and Jason as hypervisor experts on these topics.
Regards,
Halil
Note that it's not very different from e.g. event index.
It can't hurt to mention that this flag only affects QEMU
as Jason suggested.
> Compared to regular split queues, packed queues consist of
> + only a single descriptor ring replacing available and used ring, index
> + and descriptor buffer. This can result in better cache utilization and
> + performance. Possible values are <code>on</code> or
<code>off</code>.
> + <span class="since">Since 6.3.0 (QEMU and KVM
only)</span>
> + </p>