On 2020/3/27 上午9:08, 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
I think we need document that packed=on only enable the qemu support of
packed ring, but whether it is actually enabled depends on the feature
negotiation between qemu, vhost backends and guest drivers.
Thanks
> 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>