The event aer_record is generated after receiving an error message by a rootport's ISR, kicking a DPC work by the ISR, and investigating devices in the hierarchy under the rootport by the DPC work. This patch adds an event aer_irq to tell the receipt of error message submitted to root port. This could be used to probe what behavior of system/driver tends to cause/generate the error message. Signed-off-by: Hidetoshi Seto <seto.hidetoshi@xxxxxxxxxxxxxx> --- drivers/pci/pcie/aer/aerdrv.c | 5 +++++ include/trace/events/pcie_aer.h | 25 +++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 0 deletions(-) diff --git a/drivers/pci/pcie/aer/aerdrv.c b/drivers/pci/pcie/aer/aerdrv.c index 0612bd9..9853993 100644 --- a/drivers/pci/pcie/aer/aerdrv.c +++ b/drivers/pci/pcie/aer/aerdrv.c @@ -29,6 +29,8 @@ #include "aerdrv.h" #include "../../pci.h" +#include <trace/events/pcie_aer.h> + /* * Version Information */ @@ -133,6 +135,9 @@ irqreturn_t aer_irq(int irq, void *context) pci_read_config_dword(pdev->port, pos + PCI_ERR_ROOT_ERR_SRC, &id); pci_write_config_dword(pdev->port, pos + PCI_ERR_ROOT_STATUS, status); + /* Emit the trace record */ + trace_aer_irq(pdev->port, status, id); + /* Store error source for later DPC handler */ if (!set_e_source(rpc, status, id)) { /* diff --git a/include/trace/events/pcie_aer.h b/include/trace/events/pcie_aer.h index d1d6497..aceb6d7 100644 --- a/include/trace/events/pcie_aer.h +++ b/include/trace/events/pcie_aer.h @@ -62,6 +62,31 @@ TRACE_EVENT(aer_record, ) ); +TRACE_EVENT(aer_irq, + + TP_PROTO(struct pci_dev *pdev, int status, int id), + + TP_ARGS(pdev, status, id), + + TP_STRUCT__entry( + __field( u32, status ) + __field( u32, id ) + __string( dstr, dev_driver_string(&pdev->dev) ) + __string( name, dev_name(&pdev->dev) ) + ), + + TP_fast_assign( + __entry->status = status; + __entry->id = id; + __assign_str(dstr, dev_driver_string(&pdev->dev)); + __assign_str(name, dev_name(&pdev->dev)); + ), + + TP_printk("%s %s: status=%08xh, id=%08xh", + __get_str(dstr), __get_str(name), __entry->status, __entry->id + ) +); + #endif /* _TRACE_PCIE_AER_H */ /* This part must be outside protection */ -- 1.7.0.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