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@xxxxxxxxxxxxx> 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>