On Thu, Sep 05, 2019 at 10:28:33PM +0200, Johannes Berg wrote: > > > +``VHOST_USER_VQ_CALL`` > > + :id: 34 > > + :equivalent ioctl: N/A > > + :slave payload: vring state description > > + :master payload: N/A > > Oops. This message should be called VHOST_USER_VRING_KICK. > > This file doesn't take about virtqueues, just vrings, and I inverted the > call/kick. > > [...] > > > +``VHOST_USER_VQ_KICK`` > > + :id: 4 > > + :equivalent ioctl: N/A > > + :slave payload: vring state description > > + :master payload: N/A > > Similarly, that should be called VHOST_USER_SLAVE_VRING_CALL. > > Anyway, some comments would be appreciated. I'm working on an > implementation now for my simulation environment, and I guess I can keep > that private etc. but if there's interest I can submit an (optional) > implementation of this for libvhost-user too, I think. Is this really necessary? Can the simulation interpose between the call/kick eventfds in order to control when events happen? CPU --cpu_kickfd--> Simulation --vhost_kickfd--> vhost-user device and: vhost-user device --vhost_callfd--> Simulation -->cpu_callfd-> CPU The simluation controls when the CPU's kick is seen by the device and also when the call is seen by the CPU. I don't understand why new vhost-user protocol messages are required. Stefan