[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [Xen-unstable] XenbusState signaling with regard to pci-detach on HVM guests
Friday, August 8, 2014, 9:09:55 AM, you wrote: >>>> On 08.08.14 at 00:04, <linux@xxxxxxxxxxxxxx> wrote: >> Here are both a crude patch for xen/libxl and pciback that change the >> signaling >> and now allow the removal of an individual pci device from a HVM guest. >> I hope i took the right states based on the descriptions and code i found. >> >> What these patches try to do on remove of a pci device (and when everything >> goes well) is: >> - after libxl has removed the device from the guest with a qmp command >> - let libxl set the pci-device-state to XenbusStateClosing AND >> set pci-root-state to XenbusStateReconfiguring >> - libxl waits for the pci-root-state to change to XenbusStateReconfigured >> >> - pciback has a watch on the pci-root-state and removes the device and >> resets in >> pci config space, after that it sets the pci-device-state to >> XenbusStateClosed AND >> set pci-root-state to XenbusStateReconfigured >> >> - libxl now continues from the on XenbusStateReconfigured, cleans up the >> xenstore entries for >> the device and finally sets pci-root-state back to XenbusStateConnected > A fundamental question: Will the changed libxl work with an > unchanged pciback no worse than the unchanged libxl does in > all possible scenarios? The thing is that extending the required > protocol between two components may only be done in a fully > backward compatible way. > Jan That was my concern as well .. although it's already spaghetti .. There are already multiple scenario's: - pciback has to serve both libxl and xend - there are 3 guest types - PV Guests for which pci-front does most of the signaling (and libxl a small part) - HVM guest with Qemu traditional, libxl does the signaling - HVM guest with Qemu xen, libxl does the signaling There already are discrepancies: - with PV guests, the running state for the pci-device-root is XenbusStateConnected(4), but the running state for the actual pci-devices is XenbusStateInitialised(3) - with HVM guests, the running state for the pci-device-root differs, and is XenbusStateInitialised(3) Looks clear to me that should have all been XenbusStateConnected(4) - On remove at present libxl sets the pci-device-root state to XenbusStateReconfiguring(7), for both PV guests and HVM guests - However at present pciback doesn't seem to reset that back, so it would stay in that state for ever. That doesn't seem to be right as well. PV-guests seems to shortcut that libxl part, by doing some direct signaling via a direct xenbus connect, from pciback/xenbus.c: static DEFINE_XENBUS_DRIVER(xen_pcibk, DRV_NAME, .probe = xen_pcibk_xenbus_probe, .remove = xen_pcibk_xenbus_remove, .otherend_changed = xen_pcibk_frontend_changed, ); So how feasible is it to keep on trying to work around on things .. when there is that much spaghetti :-) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |