intel/perf: improve dynamic loading config detection
We're currently trying to detect dynamic loading config support by trying to remove to test config (hard coded in the i915 driver) and checking we get ENOENT. This can fail if the test config was updated in Mesa but not yet in i915. A better way to do this is to pick an invalid ID and check for ENOENT. Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Cc: <mesa-stable@lists.freedesktop.org> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
@@ -212,22 +212,10 @@ enumerate_sysfs_metrics(struct gen_perf *perf)
|
|||||||
static bool
|
static bool
|
||||||
kernel_has_dynamic_config_support(struct gen_perf *perf, int fd)
|
kernel_has_dynamic_config_support(struct gen_perf *perf, int fd)
|
||||||
{
|
{
|
||||||
hash_table_foreach(perf->oa_metrics_table, entry) {
|
uint64_t invalid_config_id = UINT64_MAX;
|
||||||
struct gen_perf_query_info *query = entry->data;
|
|
||||||
char config_path[280];
|
|
||||||
uint64_t config_id;
|
|
||||||
|
|
||||||
snprintf(config_path, sizeof(config_path), "%s/metrics/%s/id",
|
|
||||||
perf->sysfs_dev_dir, query->guid);
|
|
||||||
|
|
||||||
/* Look for the test config, which we know we can't replace. */
|
|
||||||
if (read_file_uint64(config_path, &config_id) && config_id == 1) {
|
|
||||||
return perf->ioctl(fd, DRM_IOCTL_I915_PERF_REMOVE_CONFIG,
|
return perf->ioctl(fd, DRM_IOCTL_I915_PERF_REMOVE_CONFIG,
|
||||||
&config_id) < 0 && errno == ENOENT;
|
&invalid_config_id) < 0 && errno == ENOENT;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
Reference in New Issue
Block a user