From: Chen Fan <chen.fan.f...@cn.fujitsu.com> when function 0 is hot-added, we can check the vfio device whether support hot bus reset.
Signed-off-by: Chen Fan <chen.fan.f...@cn.fujitsu.com> --- hw/vfio/pci.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index d94e643..16a4a3b 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -3088,6 +3088,19 @@ post_reset: vfio_pci_post_reset(vdev); } +static void vfio_pci_is_valid(PCIDevice *dev, Error **errp) +{ + VFIOPCIDevice *vdev = DO_UPCAST(VFIOPCIDevice, pdev, dev); + Error *local_err = NULL; + + if (vdev->features & VFIO_FEATURE_ENABLE_AER) { + vfio_check_hot_bus_reset(vdev, &local_err); + if (local_err) { + error_propagate(errp, local_err); + } + } +} + static void vfio_instance_init(Object *obj) { PCIDevice *pci_dev = PCI_DEVICE(obj); @@ -3142,6 +3155,7 @@ static void vfio_pci_dev_class_init(ObjectClass *klass, void *data) set_bit(DEVICE_CATEGORY_MISC, dc->categories); pdc->init = vfio_initfn; pdc->exit = vfio_exitfn; + pdc->is_valid_func = vfio_pci_is_valid; pdc->config_read = vfio_pci_read_config; pdc->config_write = vfio_pci_write_config; pdc->is_express = 1; /* We might be */ -- 1.9.3