arm-cmn.rst 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. =============================
  2. Arm Coherent Mesh Network PMU
  3. =============================
  4. CMN-600 is a configurable mesh interconnect consisting of a rectangular
  5. grid of crosspoints (XPs), with each crosspoint supporting up to two
  6. device ports to which various AMBA CHI agents are attached.
  7. CMN implements a distributed PMU design as part of its debug and trace
  8. functionality. This consists of a local monitor (DTM) at every XP, which
  9. counts up to 4 event signals from the connected device nodes and/or the
  10. XP itself. Overflow from these local counters is accumulated in up to 8
  11. global counters implemented by the main controller (DTC), which provides
  12. overall PMU control and interrupts for global counter overflow.
  13. PMU events
  14. ----------
  15. The PMU driver registers a single PMU device for the whole interconnect,
  16. see /sys/bus/event_source/devices/arm_cmn_0. Multi-chip systems may link
  17. more than one CMN together via external CCIX links - in this situation,
  18. each mesh counts its own events entirely independently, and additional
  19. PMU devices will be named arm_cmn_{1..n}.
  20. Most events are specified in a format based directly on the TRM
  21. definitions - "type" selects the respective node type, and "eventid" the
  22. event number. Some events require an additional occupancy ID, which is
  23. specified by "occupid".
  24. * Since RN-D nodes do not have any distinct events from RN-I nodes, they
  25. are treated as the same type (0xa), and the common event templates are
  26. named "rnid_*".
  27. * The cycle counter is treated as a synthetic event belonging to the DTC
  28. node ("type" == 0x3, "eventid" is ignored).
  29. * XP events also encode the port and channel in the "eventid" field, to
  30. match the underlying pmu_event0_id encoding for the pmu_event_sel
  31. register. The event templates are named with prefixes to cover all
  32. permutations.
  33. By default each event provides an aggregate count over all nodes of the
  34. given type. To target a specific node, "bynodeid" must be set to 1 and
  35. "nodeid" to the appropriate value derived from the CMN configuration
  36. (as defined in the "Node ID Mapping" section of the TRM).
  37. Watchpoints
  38. -----------
  39. The PMU can also count watchpoint events to monitor specific flit
  40. traffic. Watchpoints are treated as a synthetic event type, and like PMU
  41. events can be global or targeted with a particular XP's "nodeid" value.
  42. Since the watchpoint direction is otherwise implicit in the underlying
  43. register selection, separate events are provided for flit uploads and
  44. downloads.
  45. The flit match value and mask are passed in config1 and config2 ("val"
  46. and "mask" respectively). "wp_dev_sel", "wp_chn_sel", "wp_grp" and
  47. "wp_exclusive" are specified per the TRM definitions for dtm_wp_config0.
  48. Where a watchpoint needs to match fields from both match groups on the
  49. REQ or SNP channel, it can be specified as two events - one for each
  50. group - with the same nonzero "combine" value. The count for such a
  51. pair of combined events will be attributed to the primary match.
  52. Watchpoint events with a "combine" value of 0 are considered independent
  53. and will count individually.