linux/drivers/fpga
Wu Hao 724142f8c4 fpga: dfl: fme: add performance reporting support
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>
2020-04-28 15:49:28 +02:00
..
altera-cvp.c fpga: altera-cvp: Add Stratix10 (V2) Support 2019-08-24 11:38:29 -07:00
altera-fpga2sdram.c fpga: bridge: add devm_fpga_bridge_create 2018-10-16 11:13:50 +02:00
altera-freeze-bridge.c fpga: bridge: add devm_fpga_bridge_create 2018-10-16 11:13:50 +02:00
altera-hps2fpga.c fpga: bridge: add devm_fpga_bridge_create 2018-10-16 11:13:50 +02:00
altera-pr-ip-core-plat.c fpga: altera-pr-ip: Make alt_pr_unregister function void 2019-07-24 14:11:52 -07:00
altera-pr-ip-core.c fpga: altera-pr-ip: Make alt_pr_unregister function void 2019-07-24 14:11:52 -07:00
altera-ps-spi.c fpga: altera-ps-spi: Fix getting of optional confd gpio 2019-08-18 17:40:02 -07:00
dfl-afu-dma-region.c mm: add account_locked_vm utility function 2019-07-16 19:23:25 -07:00
dfl-afu-error.c fpga: dfl: afu: add error reporting support. 2019-09-03 19:35:41 -07:00
dfl-afu-main.c fpga: dfl: afu: remove set but not used variable 'afu' 2020-01-02 20:46:43 -08:00
dfl-afu-region.c fpga: dfl: afu: add afu sub feature support 2018-07-15 13:55:47 +02:00
dfl-afu.h fpga: dfl: afu: add error reporting support. 2019-09-03 19:35:41 -07:00
dfl-fme-br.c fpga: bridge: add devm_fpga_bridge_create 2018-10-16 11:13:50 +02:00
dfl-fme-error.c fpga: dfl: fme: add global error reporting support 2019-09-03 19:35:41 -07:00
dfl-fme-main.c fpga: dfl: fme: add performance reporting support 2020-04-28 15:49:28 +02:00
dfl-fme-mgr.c fpga: dfl-fme-mgr: fix FME_PR_INTFC_ID register address. 2019-07-03 19:58:58 +02:00
dfl-fme-perf.c fpga: dfl: fme: add performance reporting support 2020-04-28 15:49:28 +02:00
dfl-fme-pr.c fpga: dfl: add id_table for dfl private feature driver 2019-08-05 18:01:24 +02:00
dfl-fme-pr.h fpga: dfl: fme: add partial reconfiguration sub feature support 2018-07-15 13:55:46 +02:00
dfl-fme-region.c fpga: dfl-fme-region: Use platform_get_drvdata() 2018-11-26 20:47:10 +01:00
dfl-fme.h fpga: dfl: fme: add performance reporting support 2020-04-28 15:49:28 +02:00
dfl-pci.c fpga: dfl: pci: fix return value of cci_pci_sriov_configure 2020-03-30 20:45:30 -07:00
dfl.c fpga: dfl: make init callback optional 2019-09-03 19:35:40 -07:00
dfl.h fpga: dfl: fme: add performance reporting support 2020-04-28 15:49:28 +02:00
fpga-bridge.c drivers: Introduce device lookup variants by of_node 2019-07-30 13:07:41 +02:00
fpga-mgr.c drivers: Introduce device lookup variants by of_node 2019-07-30 13:07:41 +02:00
fpga-region.c fpga: add devm_fpga_region_create 2018-10-16 11:13:50 +02:00
ice40-spi.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441 2019-06-05 17:37:17 +02:00
Kconfig fpga: dfl: fme: add performance reporting support 2020-04-28 15:49:28 +02:00
machxo2-spi.c fpga: mgr: add devm_fpga_mgr_create 2018-10-16 11:13:50 +02:00
Makefile fpga: dfl: fme: add performance reporting support 2020-04-28 15:49:28 +02:00
of-fpga-region.c drivers: Add generic helper to match by of_node 2019-06-24 05:22:31 +02:00
socfpga-a10.c fpga: mgr: add devm_fpga_mgr_create 2018-10-16 11:13:50 +02:00
socfpga.c fpga: mgr: add devm_fpga_mgr_create 2018-10-16 11:13:50 +02:00
stratix10-soc.c firmware: fpga: replace the error codes with the standard ones 2020-04-28 15:38:37 +02:00
ts73xx-fpga.c fpga: remove redundant dev_err message 2020-01-02 20:57:34 -08:00
xilinx-pr-decoupler.c fpga: xilinx-pr-decoupler: Remove clk_get error message for probe defer 2020-01-10 12:51:56 -08:00
xilinx-spi.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 422 2019-06-05 17:37:15 +02:00
zynq-fpga.c fpga: zynq: Remove clk_get error message for probe defer 2020-03-30 20:45:21 -07:00
zynqmp-fpga.c firmware: xilinx: Remove eemi ops for fpga related APIs 2020-04-28 15:45:09 +02:00