[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH V13 3/5] libxl: add pvusb API
>>> On 2/3/2016 at 10:38 PM, in message <56B210FA.7040803@xxxxxxxxxx>, George Dunlap <george.dunlap@xxxxxxxxxx> wrote: > On 03/02/16 07:34, Chun Yan Liu wrote: > > > > > >>>> On 2/3/2016 at 02:11 AM, in message > > <22192.61775.427189.268007@xxxxxxxxxxxxxxxxxxxxxxxx>, Ian Jackson > > <Ian.Jackson@xxxxxxxxxxxxx> wrote: > >> George Dunlap writes ("Re: [Xen-devel] [PATCH V13 3/5] libxl: add pvusb > API"): > >>> There are effectively four states a device can be in, from the > >>> 'assignment' point of view: > >>> > >>> 1. Assigned to the normal Linux device driver(s) for the USB device > >>> > >>> 2. Assigned to no driver > >>> > >>> 3. Assigned to usbback, but not yet assigned to any guest > >>> > >>> 4. Assigned to a guest > >> > >> Thanks for your clear explanation (of which I will snip much). > >> > >>> Additionally, each USB "device" has one or more "interfaces". To > >>> assign a "device" to usbback in the sysfs case means assigning all of > >>> the "interfaces". The code seems to assume that different interfaces > >>> from the same device can be assigned to different drivers. > >> > >> It is indeed the case that in principle a single USB device with > >> multiple interfaces can be assigned to multiple different drivers. > >> > >>> Regarding Ian's comments: > >>> > >>> Since "assigned to the guest" and "listed under the pvusb xenstore > >>> node" are the same thing, is it even *possible* to (safely) unassign > >>> the device from usbback before removing the xenstore nodes? > >> > >> It might be possible to remove some of the xenstore nodes but leave > >> others present, so that usbback detaches, but enough information > >> remains for libxl to know that Xen still `owns' the device. > > > > Indeed "unassign from usbback, but listed under pvusb xenstore" is > > a confusing state. usb-list can list it but guest can not see it. > > What user can do under that state is: reattempt usbdev_remove, if it > > succeeds, everything is cleaned up, that's the best result; but > > possibly it still fails (for example, in my testing, always cannot > > rebind to original driver), in this case, the confusing state will > > be lasting, and the device could not be removed, this is worse. > > As I said in my other mail, I think removing the pvusb nodes should be > done once it's successfully un-bound from usbback, *even if* the re-bind > to the original driver fails. (That is, once it reaches state 2, > usb-list should no longer list it.) > > >>> Perhaps the best approach code-wise is to change the "goto out" on > >>> failure of unbind_usbintf() into a "continue". That way: > >>> > >>> 1. All interfaces which can be re-assigned are re-assigned (and work > >>> as much as possible) > >>> > >>> 2. All interfaces which can be unbound but not re-assigned are at > >>> least unbound (so that reloading the original driver might pick them > >>> up) > >> > >> I certainly don't mind the software trying to do as much of its task > >> as possible. > > > > Could I understand that this way is acceptable? That means: removing > > xenstore, and as much as we could (on failure of "unbind from usbback" > > or "bind to original driver", don't "goto out", just "continue"). > > I think part of it depends on what is *possible*. If it's possible to > safely unbind the device from usbback while retaining its place in the > pvusb-related xenstore nodes, then I think we should (so that the user Juergen, I think you are the person who can answer the question best. Can you confirm that? -Chunyan > can re-try removing it). If it's not possible, then of course we have > to remove the pvusb xenstore nodes first, and then we'll just have to > deal as gracefully as possible with failure unbinding from usbback. > > -George > > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |