I exchanged some emails with Bjorn/Christoph and it looks like ChristophWe will change pcie_flr() to return error code. I will make this change+static int pcistub_device_reset(struct pci_dev *dev)The lack of error check here puzzled me, but I see the function
+{
+ struct xen_pcibk_dev_data *dev_data;
+ bool slot = false, bus = false;
+ struct pcistub_args arg = {};
+
+ if (!dev)
+ return -EINVAL;
+
+ dev_dbg(&dev->dev, "[%s]\n", __func__);
+
+ /* First check and try FLR */
+ if (pcie_has_flr(dev)) {
+ dev_dbg(&dev->dev, "resetting %s device using FLR\n",
+ pci_name(dev));
+ pcie_flr(dev);
indeed returns void right now. I think the prereq patch should
change this along with exporting the function - you really don't
want the device to be handed to a guest when the FLR timed
out.
in the next version of this patch.