[+cc Alex] On Wed, Nov 20, 2013 at 10:26 AM, Keith Busch <keith.busch@xxxxxxxxx> wrote: > A user can issue a pci function level reset to a device using sysfs > entry /sys/bus/pci/devices/.../reset. A kernel driver handling the > pci device probably would like to know that such a reset has occured, > so this patch adds a callback in to pci_driver's pci_error_handler. > > Signed-off-by: Keith Busch <keith.busch@xxxxxxxxx> > --- > Assuming this is a good idea, is this the right place to invoke the > reset callback, or should it be up the call stack closer to the sysfs > reset entry point? Or somewhere else entirely? > > drivers/pci/pci.c | 6 ++++++ > include/linux/pci.h | 3 +++ > 2 files changed, 9 insertions(+) > > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c > index b127fbda..5ee6fc0 100644 > --- a/drivers/pci/pci.c > +++ b/drivers/pci/pci.c > @@ -3435,6 +3435,12 @@ static int __pci_dev_reset(struct pci_dev *dev, int probe) > > rc = pci_parent_bus_reset(dev, probe); > done: > + if (rc != -ENOTTY && !probe) { > + struct pci_error_handlers *err_handler = > + dev->driver ? dev->driver->err_handler : NULL; > + if (err_handler && err_handler->function_reset) > + err_handler->function_reset(dev); > + } > return rc; > } > > diff --git a/include/linux/pci.h b/include/linux/pci.h > index 835ec7b..d1f100e 100644 > --- a/include/linux/pci.h > +++ b/include/linux/pci.h > @@ -605,6 +605,9 @@ struct pci_error_handlers { > /* PCI slot has been reset */ > pci_ers_result_t (*slot_reset)(struct pci_dev *dev); > > + /* PCI function has been reset */ > + pci_ers_result_t (*function_reset)(struct pci_dev *dev); > + > /* Device driver may resume normal operations */ > void (*resume)(struct pci_dev *dev); > }; > -- > 1.7.10.4 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-pci" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html