[RFC] PCIe error handling support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all,

We have a PCIe device with several functions, 0, 1, and 2. However only function
1 has and needs a driver. We've added PCIe error handler support to this driver,
but it doesn't work by itself to recover the device because the other two
functions do not have drivers bound to them. This condition is covered by the
following code block in drivers/pci/pcie/err.c:

	if (!pci_dev_set_io_state(dev, state) || !pdrv ||
	    !pdrv->err_handler || !pdrv->err_handler->error_detected) {
		/*
		 * If any device in the subtree does not have an error_detected
		 * callback, PCI_ERS_RESULT_NO_AER_DRIVER prevents subsequent
		 * error callbacks of "any" device in the subtree, and will
		 * exit in the disconnected error state.
		 */
		if (dev->hdr_type != PCI_HEADER_TYPE_BRIDGE) {
			vote = PCI_ERS_RESULT_NO_AER_DRIVER;
			pci_info(dev, "can't recover (no error_detected callback)\n");
		}

The current solution is to bind dummy drivers to these functions with error
handler support. However, these are custom drivers and we're looking for a
solution that would work upstream without having to provide these drivers.
Starting by looking at this code, is a particular reason to require a driver in
order to recover a PCIe device? Would it be feasible to remove this requirement,
at least allowing other existing function drivers to recover themselves and
allowing recovery of the slot? Thanks.

-- 
2.32.0



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux