[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2] libxl_qmp: wait for completion of device removal
On Mon, Aug 05, 2019 at 03:46:35PM +0100, Ian Jackson wrote: > Chao Gao writes ("Re: [PATCH v2] libxl_qmp: wait for completion of device > removal"): > > On Wed, Jul 03, 2019 at 05:03:17PM +0100, Anthony PERARD wrote: > > >On Wed, Jul 03, 2019 at 01:56:13PM +0800, Chao Gao wrote: > > >> To remove a device from a domain, a qmp command is sent to qemu. But it > > >> is > > >> handled by qemu asychronously. Even the qmp command is claimed to be > > >> done, > > >> the actual handling in qemu side may happen later. > > >> This behavior brings two questions: > > >> 1. Attaching a device back to a domain right after detaching the device > > >> from > > >> that domain would fail with error: > > >> > > >> libxl: error: libxl_qmp.c:341:qmp_handle_error_response: Domain > > >> 1:received an > > >> error message from QMP server: Duplicate ID 'pci-pt-60_00.0' for device > > >> > > >> 2. Accesses to PCI configuration space in Qemu may overlap with later > > >> device > > >> reset issued by 'xl' or by pciback. > > >> > > >> In order to avoid mentioned questions, wait for the completion of device > > >> removal by querying all pci devices using qmp command and ensuring the > > >> target > > >> device isn't listed. Only retry 5 times to avoid 'xl' potentially being > > >> blocked > > >> by qemu. > ... > > Could we merge this patch? or need comments from someone else? > > I see this patch was in fact merged. > > However, there is a problem. > > It adds a new call to "qmp_synchronous_send". We have been trying to > make libxl not trust qemu and that means abolishing all uses of > qmp_synchronous_send. Now I know that currently we haven't done that > for PCI passthrough but we should not be adding more techncial debt > unless we have to. > > Unfortunately the place where this patch has to add code already uses > this synchronous interface and currently it is therefore not easy to > do what Chao Gao needed to do. So it was probably right to accept > this patch. > > Maybe we should introduce a thing which can make a libxl__ev_qmp from > a libxl__qmp_handler, or make libxl__qmp_handler contain a > libxl__ev_qmp, or something ? If we had had that, Chao Gao could have > provided a patch introducing new calls to libxl__ev_qmp_send etc. That looks complicated. I'd rather get rid of that qmp_synchronous_send stuff. > Additionally: is it really the case that there is no way to have qemu > send us a signal when the work is done ? This polling is rather poor. There is, QEMU sends an event when the device is removed. Maybe we could design a new API for libxl__ev_qmp to handle events, I think that's for another day. Also, see [1] which reimplements that polling with ev_qmp and ev_timer and have a note about using events instead: [1] https://lists.xenproject.org/archives/html/xen-devel/2019-08/msg00241.html Thanks, -- Anthony PERARD _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |