mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
724142f8c4
This patch adds support for performance reporting private feature for FPGA Management Engine (FME). Now it supports several different performance counters, including 'basic', 'cache', 'fabric', 'vtd' and 'vtd_sip'. It allows user to use standard linux tools to access these performance counters. e.g. List all events by "perf list" perf list | grep fme dfl_fme0/cache_read_hit/ [Kernel PMU event] dfl_fme0/cache_read_miss/ [Kernel PMU event] ... dfl_fme0/fab_mmio_read/ [Kernel PMU event] dfl_fme0/fab_mmio_write/ [Kernel PMU event] ... dfl_fme0/fab_port_mmio_read,portid=?/ [Kernel PMU event] dfl_fme0/fab_port_mmio_write,portid=?/ [Kernel PMU event] ... dfl_fme0/vtd_port_devtlb_1g_fill,portid=?/ [Kernel PMU event] dfl_fme0/vtd_port_devtlb_2m_fill,portid=?/ [Kernel PMU event] ... dfl_fme0/vtd_sip_iotlb_1g_hit/ [Kernel PMU event] dfl_fme0/vtd_sip_iotlb_1g_miss/ [Kernel PMU event] ... dfl_fme0/clock [Kernel PMU event] ... e.g. check increased counter value after run one application using "perf stat" command. perf stat -e dfl_fme0/fab_mmio_read/,dfl_fme0/fab_mmio_write/ ./test Performance counter stats for './test': 1 dfl_fme0/fab_mmio_read/ 2 dfl_fme0/fab_mmio_write/ 1.009496520 seconds time elapsed Please note that fabric counters support both fab_* and fab_port_*, but actually they are sharing one set of performance counters in hardware. If user wants to monitor overall data events on fab_* then fab_port_* can't be supported at the same time, see example below: perf stat -e dfl_fme0/fab_mmio_read/,dfl_fme0/fab_port_mmio_write,portid=0/ Performance counter stats for 'system wide': 0 dfl_fme0/fab_mmio_read/ <not supported> dfl_fme0/fab_port_mmio_write,portid=0/ 2.141064085 seconds time elapsed Signed-off-by: Luwei Kang <luwei.kang@intel.com> Signed-off-by: Xu Yilun <yilun.xu@intel.com> Signed-off-by: Wu Hao <hao.wu@intel.com> Link: https://lore.kernel.org/r/1587949583-12058-3-git-send-email-hao.wu@intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
105 lines
4.7 KiB
Plaintext
105 lines
4.7 KiB
Plaintext
What: /sys/bus/event_source/devices/dfl_fmeX/format
|
|
Date: April 2020
|
|
KernelVersion: 5.8
|
|
Contact: Wu Hao <hao.wu@intel.com>
|
|
Description: Read-only. Attribute group to describe the magic bits
|
|
that go into perf_event_attr.config for a particular pmu.
|
|
(See ABI/testing/sysfs-bus-event_source-devices-format).
|
|
|
|
Each attribute under this group defines a bit range of the
|
|
perf_event_attr.config. All supported attributes are listed
|
|
below.
|
|
|
|
event = "config:0-11" - event ID
|
|
evtype = "config:12-15" - event type
|
|
portid = "config:16-23" - event source
|
|
|
|
For example,
|
|
|
|
fab_mmio_read = "event=0x06,evtype=0x02,portid=0xff"
|
|
|
|
It shows this fab_mmio_read is a fabric type (0x02) event with
|
|
0x06 local event id for overall monitoring (portid=0xff).
|
|
|
|
What: /sys/bus/event_source/devices/dfl_fmeX/cpumask
|
|
Date: April 2020
|
|
KernelVersion: 5.8
|
|
Contact: Wu Hao <hao.wu@intel.com>
|
|
Description: Read-only. This file always returns cpu which the PMU is bound
|
|
for access to all fme pmu performance monitoring events.
|
|
|
|
What: /sys/bus/event_source/devices/dfl_fmeX/events
|
|
Date: April 2020
|
|
KernelVersion: 5.8
|
|
Contact: Wu Hao <hao.wu@intel.com>
|
|
Description: Read-only. Attribute group to describe performance monitoring
|
|
events specific to fme. Each attribute in this group describes
|
|
a single performance monitoring event supported by this fme pmu.
|
|
The name of the file is the name of the event.
|
|
(See ABI/testing/sysfs-bus-event_source-devices-events).
|
|
|
|
All supported performance monitoring events are listed below.
|
|
|
|
Basic events (evtype=0x00)
|
|
|
|
clock = "event=0x00,evtype=0x00,portid=0xff"
|
|
|
|
Cache events (evtype=0x01)
|
|
|
|
cache_read_hit = "event=0x00,evtype=0x01,portid=0xff"
|
|
cache_read_miss = "event=0x01,evtype=0x01,portid=0xff"
|
|
cache_write_hit = "event=0x02,evtype=0x01,portid=0xff"
|
|
cache_write_miss = "event=0x03,evtype=0x01,portid=0xff"
|
|
cache_hold_request = "event=0x05,evtype=0x01,portid=0xff"
|
|
cache_data_write_port_contention =
|
|
"event=0x06,evtype=0x01,portid=0xff"
|
|
cache_tag_write_port_contention =
|
|
"event=0x07,evtype=0x01,portid=0xff"
|
|
cache_tx_req_stall = "event=0x08,evtype=0x01,portid=0xff"
|
|
cache_rx_req_stall = "event=0x09,evtype=0x01,portid=0xff"
|
|
cache_eviction = "event=0x0a,evtype=0x01,portid=0xff"
|
|
|
|
Fabric events (evtype=0x02)
|
|
|
|
fab_pcie0_read = "event=0x00,evtype=0x02,portid=0xff"
|
|
fab_pcie0_write = "event=0x01,evtype=0x02,portid=0xff"
|
|
fab_pcie1_read = "event=0x02,evtype=0x02,portid=0xff"
|
|
fab_pcie1_write = "event=0x03,evtype=0x02,portid=0xff"
|
|
fab_upi_read = "event=0x04,evtype=0x02,portid=0xff"
|
|
fab_upi_write = "event=0x05,evtype=0x02,portid=0xff"
|
|
fab_mmio_read = "event=0x06,evtype=0x02,portid=0xff"
|
|
fab_mmio_write = "event=0x07,evtype=0x02,portid=0xff"
|
|
fab_port_pcie0_read = "event=0x00,evtype=0x02,portid=?"
|
|
fab_port_pcie0_write = "event=0x01,evtype=0x02,portid=?"
|
|
fab_port_pcie1_read = "event=0x02,evtype=0x02,portid=?"
|
|
fab_port_pcie1_write = "event=0x03,evtype=0x02,portid=?"
|
|
fab_port_upi_read = "event=0x04,evtype=0x02,portid=?"
|
|
fab_port_upi_write = "event=0x05,evtype=0x02,portid=?"
|
|
fab_port_mmio_read = "event=0x06,evtype=0x02,portid=?"
|
|
fab_port_mmio_write = "event=0x07,evtype=0x02,portid=?"
|
|
|
|
VTD events (evtype=0x03)
|
|
|
|
vtd_port_read_transaction = "event=0x00,evtype=0x03,portid=?"
|
|
vtd_port_write_transaction = "event=0x01,evtype=0x03,portid=?"
|
|
vtd_port_devtlb_read_hit = "event=0x02,evtype=0x03,portid=?"
|
|
vtd_port_devtlb_write_hit = "event=0x03,evtype=0x03,portid=?"
|
|
vtd_port_devtlb_4k_fill = "event=0x04,evtype=0x03,portid=?"
|
|
vtd_port_devtlb_2m_fill = "event=0x05,evtype=0x03,portid=?"
|
|
vtd_port_devtlb_1g_fill = "event=0x06,evtype=0x03,portid=?"
|
|
|
|
VTD SIP events (evtype=0x04)
|
|
|
|
vtd_sip_iotlb_4k_hit = "event=0x00,evtype=0x04,portid=0xff"
|
|
vtd_sip_iotlb_2m_hit = "event=0x01,evtype=0x04,portid=0xff"
|
|
vtd_sip_iotlb_1g_hit = "event=0x02,evtype=0x04,portid=0xff"
|
|
vtd_sip_slpwc_l3_hit = "event=0x03,evtype=0x04,portid=0xff"
|
|
vtd_sip_slpwc_l4_hit = "event=0x04,evtype=0x04,portid=0xff"
|
|
vtd_sip_rcc_hit = "event=0x05,evtype=0x04,portid=0xff"
|
|
vtd_sip_iotlb_4k_miss = "event=0x06,evtype=0x04,portid=0xff"
|
|
vtd_sip_iotlb_2m_miss = "event=0x07,evtype=0x04,portid=0xff"
|
|
vtd_sip_iotlb_1g_miss = "event=0x08,evtype=0x04,portid=0xff"
|
|
vtd_sip_slpwc_l3_miss = "event=0x09,evtype=0x04,portid=0xff"
|
|
vtd_sip_slpwc_l4_miss = "event=0x0a,evtype=0x04,portid=0xff"
|
|
vtd_sip_rcc_miss = "event=0x0b,evtype=0x04,portid=0xff"
|