s390x/pci: make hot-unplug handler smoother
commit93d16d81c8af0fe93a04bee8a4cb3259f480cab6
authorYi Min Zhao <zyimin@linux.vnet.ibm.com>
Wed, 27 Apr 2016 09:44:17 +0000 (27 17:44 +0800)
committerCornelia Huck <cornelia.huck@de.ibm.com>
Mon, 11 Jul 2016 07:48:05 +0000 (11 09:48 +0200)
tree9eba3fcf41a1f91cf634cd32a719eda8a539e026
parentcdd85eb2804018ab46a742ebf64dc5366b9fae73
s390x/pci: make hot-unplug handler smoother

The current implementation of hot-unplug handler is abrupt. Any pci
operation will be just rejected if pci device is unconfigured. Thus a
pci device can not be reset or destroyed in a right, smooth and safe
way.

Improve this as follows:
- Notify the guest via a HP_EVENT_DECONFIGURE_REQUEST(0x303) event in
  the unplug handler, giving it a chance to deconfigure the device via
  sclp and allowing us to continue hot-unplug afterwards.
- Set up a timer that will generate the HP_EVENT_CONFIGURE_TO_STBRES
  (0x304) event as before if the guest did not react after an adequate
  time.

Signed-off-by: Yi Min Zhao <zyimin@linux.vnet.ibm.com>
Reviewed-by: Pierre Morel <pmorel@linux.vnet.ibm.com>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
hw/s390x/s390-pci-bus.c
hw/s390x/s390-pci-bus.h