PCI error handlers in Linux
Greg KH
greg at kroah.com
Tue Sep 16 14:15:39 EDT 2014
On Wed, Sep 17, 2014 at 02:04:04AM +0800, Alvin Abitria wrote:
> Hello,
>
> In my pci driver for a certain pci device, I implemented the pci error
> handler functions (error_detected, slot_reset methods, etc). I want
> to trigger a pci error for me to exercise those handlers and observe
> its behavior. I've read from the pci error recovery kernel
> documentation that the 1st step is with error_detected method, called
> by the system if it detected any error related to the pci device. The
> good thing is that the system will detect it for the driver,
> simplifying things. But I'm having problems with error detection
> itself.
>
> I tried to trigger the error via the PCI device. On its FW, I
> triggered a reset of its PCI subsystem. As a result, the I/O rate
> dropped to zero and the driver now can't send to the device.
> Something indeed happened in their PCI connection. However, I
> couldn't see my error_detected method being called, when I was
> expecting the kernel will detect the PCI error and call the handler.
> Instead, some warning message appeared in the console as follows:
>
> irq 16: nobody cared
> handlers:
> ...
> ...
> Disabling IRQ # 16
>
> What baffles me more is that the injected PCI error seemed to brought
> down that IRQ 16 device as well - which is definitely not the irq # of
> my driver/device. Any thoughts on why the kernel did not detect that
> PCI error? Is there anything I could possibly missed during
> registration of error handler methods?
>
> If that is so, I'd like to ask for other means of injecting PCI
> errors, in order for me to exercise my error handlers. Thanks!
You might want to ask this on the linux-pci at vger.kernel.org mailing list
instead. The developers there can help you out better than the people
here can.
Hope this helps,
greg k-h
More information about the Kernelnewbies
mailing list