diff options
author | Lionel Landwerlin <[email protected]> | 2020-04-06 10:42:22 +0300 |
---|---|---|
committer | Lionel Landwerlin <[email protected]> | 2020-05-20 14:02:27 +0300 |
commit | d0e11231a4fa7c7c4da2b4f9aed47a6000687f18 (patch) | |
tree | a28c6b9329009a52fbf1b1cf6d75beebeef6b5ca /src/intel/perf/gen_perf.c | |
parent | 2001a80d4a81f2e8194b29cca301dd1b27be9acb (diff) |
intel/perf: repurpose INTEL_DEBUG=no-oaconfig
We initially used this debug option to mean "don't bother registering
the OA configuration into the kernel".
This change makes this option suppress any interaction with the
i915/perf interface. This is useful when debugging self modifying
batches with performance queries while running on the intel_mi_runner.
Signed-off-by: Lionel Landwerlin <[email protected]>
Reviewed-by: Jason Ekstrand <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2775>
Diffstat (limited to 'src/intel/perf/gen_perf.c')
-rw-r--r-- | src/intel/perf/gen_perf.c | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/src/intel/perf/gen_perf.c b/src/intel/perf/gen_perf.c index e9ad6dd570f..6fd66a1d2dd 100644 --- a/src/intel/perf/gen_perf.c +++ b/src/intel/perf/gen_perf.c @@ -80,6 +80,9 @@ get_sysfs_dev_dir(struct gen_perf_config *perf, int fd) perf->sysfs_dev_dir[0] = '\0'; + if (unlikely(INTEL_DEBUG & DEBUG_NO_OACONFIG)) + return true; + if (fstat(fd, &sb)) { DBG("Failed to stat DRM fd\n"); return false; @@ -232,6 +235,16 @@ enumerate_sysfs_metrics(struct gen_perf_config *perf, closedir(metricsdir); } +static void +add_all_metrics(struct gen_perf_config *perf, + const struct gen_device_info *devinfo) +{ + hash_table_foreach(perf->oa_metrics_table, entry) { + const struct gen_perf_query_info *query = entry->data; + register_oa_config(perf, devinfo, query, 0); + } +} + static bool kernel_has_dynamic_config_support(struct gen_perf_config *perf, int fd) { @@ -394,11 +407,16 @@ init_oa_sys_vars(struct gen_perf_config *perf, const struct gen_device_info *dev { uint64_t min_freq_mhz = 0, max_freq_mhz = 0; - if (!read_sysfs_drm_device_file_uint64(perf, "gt_min_freq_mhz", &min_freq_mhz)) - return false; + if (likely(!(INTEL_DEBUG & DEBUG_NO_OACONFIG))) { + if (!read_sysfs_drm_device_file_uint64(perf, "gt_min_freq_mhz", &min_freq_mhz)) + return false; - if (!read_sysfs_drm_device_file_uint64(perf, "gt_max_freq_mhz", &max_freq_mhz)) - return false; + if (!read_sysfs_drm_device_file_uint64(perf, "gt_max_freq_mhz", &max_freq_mhz)) + return false; + } else { + min_freq_mhz = 300; + max_freq_mhz = 1000; + } memset(&perf->sys_vars, 0, sizeof(perf->sys_vars)); perf->sys_vars.gt_min_freq = min_freq_mhz * 1000000; @@ -679,11 +697,14 @@ load_oa_metrics(struct gen_perf_config *perf, int fd, */ oa_register(perf); - if (likely((INTEL_DEBUG & DEBUG_NO_OACONFIG) == 0) && - kernel_has_dynamic_config_support(perf, fd)) - init_oa_configs(perf, fd, devinfo); - else - enumerate_sysfs_metrics(perf, devinfo); + if (likely(!(INTEL_DEBUG & DEBUG_NO_OACONFIG))) { + if (kernel_has_dynamic_config_support(perf, fd)) + init_oa_configs(perf, fd, devinfo); + else + enumerate_sysfs_metrics(perf, devinfo); + } else { + add_all_metrics(perf, devinfo); + } build_unique_counter_list(perf); |