On 2015/2/26 20:01, Michael S. Tsirkin wrote: > On Thu, Feb 26, 2015 at 01:55:54PM +0200, Nikolay Nikolaev wrote: >> On Thu, Feb 26, 2015 at 11:36 AM, Michael S. Tsirkin <m...@redhat.com> wrote: >>> >>> On Thu, Feb 26, 2015 at 09:30:40AM +0000, Gaohaifeng (A) wrote: >>>> Hi >>>> >>>> I want to use pxe to install a guest os whose nic type is vhost user. >>>> However >>>> pxe rom doesn’t support msi-x interrupt, so qemu won’t start vhost net. >>>> >>>> Call relationship: >>>> >>>> virtio_net_vhost_status-> vhost_net_query-> vhost_dev_query-> >>>> virtio_pci_query_guest_notifiers -> msix_enabled >>>> >>>> >>>> >>>> In my test, I remove the msix check for vhost user interface and >>>> successfully >>>> install the guest os by pxe. >>>> >>>> Is it OK to do like this and will it cause other problems? >>>> >>>> >>>> >>>> Thanks. >>>> >>>> Haifeng Gao >>>> >>> >>> I think we should fix it. >>> As a quick hack, you should be able to just use vhostforce. >> >> >> But isn't that what vhostforce is for, runnign vhost with non >> MSI-enabled guests? >> >> regards, >> Nikolay Nikolaev > > It isn't really. > > kernel vhost is more or less an optimization. since it performs > slowly for non msi guests, it turns itself off for them by default, > and you fall back to virtio in qemu which for non msi seems to be > faster. to re-enable, set force to on. > > vhost user doesn't work with virtio in qemu, it should > ignore vhostforce and just handle non msix guests.
If I understand correctly (if not,pls correct me), We can ignore vhostforce value and set it to true. So even non msix can use vhost user nic. code like this: --- vhost-user.c +++ vhost-user.c @@ -230,7 +230,6 @@ { const NetdevVhostUserOptions *vhost_user_opts; CharDriverState *chr; - bool vhostforce; assert(opts->kind == NET_CLIENT_OPTIONS_KIND_VHOST_USER); vhost_user_opts = opts->vhost_user; @@ -247,12 +247,6 @@ return -1; } - /* vhostforce for non-MSIX */ - if (vhost_user_opts->has_vhostforce) { - vhostforce = vhost_user_opts->vhostforce; - } else { - vhostforce = false; - } - return net_vhost_user_init(peer, "vhost_user", name, chr, vhostforce); + return net_vhost_user_init(peer, "vhost_user", name, chr, true); } > > > >>> >>> >>> -- >>> MST >>> > > . >