perf: CXL Performance Monitoring Unit driver
authorJonathan Cameron <Jonathan.Cameron@huawei.com>
Fri, 26 May 2023 09:58:23 +0000 (10:58 +0100)
committerDan Williams <dan.j.williams@intel.com>
Mon, 26 Jun 2023 00:47:09 +0000 (17:47 -0700)
commit5d7107c72796df3be2ba574f1cf6eca75c60d5ef
tree7b101326d5f75aa08f4fadf6ee79c22e049b0c72
parent1ad3f701c3999904d0c6cdea299df16c6cd9878d
perf: CXL Performance Monitoring Unit driver

CXL rev 3.0 introduces a standard performance monitoring hardware
block to CXL. Instances are discovered using CXL Register Locator DVSEC
entries. Each CXL component may have multiple PMUs.

This initial driver supports a subset of types of counter.
It supports counters that are either fixed or configurable, but requires
that they support the ability to freeze and write value whilst frozen.

Development done with QEMU model which will be posted shortly.

Example:

$ perf stat -a -e cxl_pmu_mem0.0/h2d_req_snpcur/ -e cxl_pmu_mem0.0/h2d_req_snpdata/ -e cxl_pmu_mem0.0/clock_ticks/ sleep 1

Performance counter stats for 'system wide':

96,757,023,244,321      cxl_pmu_mem0.0/h2d_req_snpcur/
96,757,023,244,365      cxl_pmu_mem0.0/h2d_req_snpdata/
193,514,046,488,653      cxl_pmu_mem0.0/clock_ticks/

       1.090539600 seconds time elapsed

Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Reviewed-by: Kan Liang <kan.liang@linux.intel.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Link: https://lore.kernel.org/r/20230526095824.16336-5-Jonathan.Cameron@huawei.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
MAINTAINERS
drivers/cxl/Kconfig
drivers/perf/Kconfig
drivers/perf/Makefile
drivers/perf/cxl_pmu.c [new file with mode: 0644]