PATCH 1 is just a clean-up. There should be no functional change. PATCH 2 and 3 are for device hot-remove case. Currently the driver will stop working or even cause panic, if we do hot add/remove quickly a few times. With the 2 patches, everything works reliably in my tests now.
There can be still a potential issue with hot-remove when we unload the driver at the same time. That would require more work of proper synchronization among the 3 paths: the .probe/.remove, the channel callback, and the offloaded hv_pci_devices_present()/hv_eject_device_work(). But for now, PATCH 2 and 3 do improve the situation a lot. Dexuan Cui (3): PCI: hv: use the correct buffer size in new_pcichild_device() PCI: hv: fix hv_pci_remove() for hot-remove PCI: hv: delete the device earlier from hbus->children for hot-remove drivers/pci/host/pci-hyperv.c | 67 ++++++++++++++++++++++++++----------------- 1 file changed, 40 insertions(+), 27 deletions(-) -- 2.7.4