On 3/29/2017 3:09 PM, Yuanhan Liu wrote:
On Wed, Mar 29, 2017 at 03:03:16PM +0800, Tan, Jianfeng wrote:
On 3/29/2017 2:27 PM, Yuanhan Liu wrote:
On Tue, Mar 28, 2017 at 08:21:53AM +0000, Jianfeng Tan wrote:
For virtio PCI devices, interrupt should be configured before setting
VIRTIO_CONFIG_STATUS_DRIVER_OK so that QEMU can properly set eventfds
in the host.
For virtio virtual devices, VIRTIO_CONFIG_STATUS_DRIVER_OK should be
set firstly, so that intr_handle is initialized in
virtio_user_start_device().
I'm wondering why can't you let virtio-user follow virtio-pci?
It's because that virtio-user not only counts on virtio_user_start_device()
to allocate intr_handle, it also needs the information in this function to
initialize this struct. For virtio-pci, similar information is from
rte_intr_enable/rte_intr_efd_enable.
Or do you mean we can move calling virtio_user_start_device() ahead? I can
hardly find other place instead of DRIVER_OK.
For example, virtio_user_dev_init()?
But in that way, there is only one chance to negotiate features with the
backend. What if we change the configuration through
rte_eth_dev_configure()?
Yes, we can just put callfd/kickfd creation and intr_handle
initialization into virtio_user_dev_init(), and its destructor into
virtio_user_dev_uninit(). It sounds like a feasible way to go.
Thanks,
Jianfeng