This patch-set adds new pci controller event and LTSSM tracepoint used by host 
drivers
which provide LTSSM trace functionality. The first user is pcie-dw-rockchip 
with a 256
Bytes FIFO for recording LTSSM transition.

Dependency
======
Need to apply on top of Mani's rework of error handling of 
dw_pcie_wait_for_link()
API in order to show the proper LTSSM name for dwc-based controller[1].

[1] 
https://lore.kernel.org/linux-pci/20260107-pci-dwc-suspend-rework-v4-0-9b5f3c72d...@oss.qualcomm.com/T/#mfc5885b2afdeef4db1322597eaee61967558821e

Testing
=======

This series was tested on RK3588/RK3588s EVB1 with NVMe SSD connected to PCIe3 
and PCIe2
root ports.

echo 1 > 
/sys/kernel/debug/tracing/events/pci_controller/pcie_ltssm_state_transition/enable
cat /sys/kernel/debug/tracing/trace_pipe

 # tracer: nop
 #
 # entries-in-buffer/entries-written: 64/64   #P:8
 #
 #                                _-----=> irqs-off/BH-disabled
 #                               / _----=> need-resched
 #                              | / _---=> hardirq/softirq
 #                              || / _--=> preempt-depth
 #                              ||| / _-=> migrate-disable
 #                              |||| /     delay
 #           TASK-PID     CPU#  |||||  TIMESTAMP  FUNCTION
 #              | |         |   |||||     |         |
      kworker/0:0-9       [000] .....     5.600194: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: DETECT_ACT rate: Unknown
      kworker/0:0-9       [000] .....     5.600198: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: DETECT_WAIT rate: 
Unknown
      kworker/0:0-9       [000] .....     5.600199: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: DETECT_ACT rate: Unknown
      kworker/0:0-9       [000] .....     5.600201: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: POLL_ACTIVE rate: 
Unknown
      kworker/0:0-9       [000] .....     5.600202: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: POLL_CONFIG rate: 
Unknown
      kworker/0:0-9       [000] .....     5.600204: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: CFG_LINKWD_START rate: 
Unknown
      kworker/0:0-9       [000] .....     5.600206: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: CFG_LINKWD_ACEPT rate: 
Unknown
      kworker/0:0-9       [000] .....     5.600207: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: CFG_LANENUM_WAI rate: 
Unknown
      kworker/0:0-9       [000] .....     5.600208: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: CFG_LANENUM_ACEPT rate: 
Unknown
      kworker/0:0-9       [000] .....     5.600210: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: CFG_COMPLETE rate: 
Unknown
      kworker/0:0-9       [000] .....     5.600212: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: CFG_IDLE rate: Unknown
      kworker/0:0-9       [000] .....     5.600213: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: L0 rate: 2.5 GT/s
      kworker/0:0-9       [000] .....     5.600214: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: RCVRY_LOCK rate: Unknown
      kworker/0:0-9       [000] .....     5.600216: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: RCVRY_RCVRCFG rate: 
Unknown
      kworker/0:0-9       [000] .....     5.600217: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: RCVRY_SPEED rate: 
Unknown
      kworker/0:0-9       [000] .....     5.600218: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: RCVRY_LOCK rate: Unknown
      kworker/0:0-9       [000] .....     5.600220: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: RCVRY_EQ1 rate: Unknown
      kworker/0:0-9       [000] .....     5.600221: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: RCVRY_EQ2 rate: 8.0 GT/s
      kworker/0:0-9       [000] .....     5.600222: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: RCVRY_EQ3 rate: 8.0 GT/s
      kworker/0:0-9       [000] .....     5.600224: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: RCVRY_LOCK rate: 8.0 
GT/s
      kworker/0:0-9       [000] .....     5.600225: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: RCVRY_RCVRCFG rate: 8.0 
GT/s
      kworker/0:0-9       [000] .....     5.600226: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: RCVRY_IDLE rate: 8.0 
GT/s
      kworker/0:0-9       [000] .....     5.600227: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: L0 rate: 8.0 GT/s
      kworker/0:0-9       [000] .....     5.600228: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: RCVRY_LOCK rate: 8.0 
GT/s
      kworker/0:0-9       [000] .....     5.600229: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: RCVRY_RCVRCFG rate: 8.0 
GT/s
      kworker/0:0-9       [000] .....     5.600231: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: RCVRY_IDLE rate: 8.0 
GT/s
      kworker/0:0-9       [000] .....     5.600232: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: L0 rate: 8.0 GT/s
      kworker/0:0-9       [000] .....     5.600233: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: L123_SEND_EIDLE rate: 
8.0 GT/s
      kworker/0:0-9       [000] .....     5.600234: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: L1_IDLE rate: 8.0 GT/s
      kworker/0:0-9       [000] .....     5.600236: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: RCVRY_LOCK rate: 8.0 
GT/s
      kworker/0:0-9       [000] .....     5.600237: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: RCVRY_RCVRCFG rate: 8.0 
GT/s
      kworker/0:0-9       [000] .....     5.600238: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: RCVRY_IDLE rate: 8.0 
GT/s
      kworker/0:0-9       [000] .....     5.600239: 
pcie_ltssm_state_transition: dev: a40000000.pcie state: L0 rate: 8.0 GT/s


Changes in v2:
- create PCI controller tracepoint instead of debugfs(Mani)
- Link to v1:  
https://lore.kernel.org/linux-pci/ym435w3ltwc7vln7g6j3ijswsarubwjazux65ttcqtrbr3i5fu@gig3qlzdkopf/T/#t

Shawn Lin (3):
  PCI: trace: Add pci-controller LTSSM transition tracepoint
  Documentation: tracing: Add PCI controller event documentation
  PCI: dw-rockchip: Add pcie_ltssm_state_transition trace support

 Documentation/trace/events-pci-conotroller.rst | 41 ++++++++++++
 drivers/pci/controller/dwc/pcie-dw-rockchip.c  | 92 ++++++++++++++++++++++++++
 drivers/pci/trace.c                            |  1 +
 include/trace/events/pci_controller.h          | 44 ++++++++++++
 4 files changed, 178 insertions(+)
 create mode 100644 Documentation/trace/events-pci-conotroller.rst
 create mode 100644 include/trace/events/pci_controller.h

-- 
2.7.4


Reply via email to