Mesa (main): intel/perf: Use intel_i915_query_flags instead of hand-rolling it

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Jul 16 14:29:49 UTC 2021


Module: Mesa
Branch: main
Commit: f5008a48d39fc7df788ce15eac0154f428632022
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f5008a48d39fc7df788ce15eac0154f428632022

Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Wed Jul  7 15:05:46 2021 -0500

intel/perf: Use intel_i915_query_flags instead of hand-rolling it

Reviewed-by: Paulo Zanoni <paulo.r.zanoni at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11770>

---

 src/intel/common/intel_gem.h | 12 ++++++++++--
 src/intel/perf/intel_perf.c  | 32 ++++++++------------------------
 2 files changed, 18 insertions(+), 26 deletions(-)

diff --git a/src/intel/common/intel_gem.h b/src/intel/common/intel_gem.h
index 109b7be37d2..3ac3d7bf330 100644
--- a/src/intel/common/intel_gem.h
+++ b/src/intel/common/intel_gem.h
@@ -83,12 +83,13 @@ intel_ioctl(int fd, unsigned long request, void *arg)
  * it's better to have a common helper.
  */
 static inline int
-intel_i915_query(int fd, uint64_t query_id, void *buffer,
-                 int32_t *buffer_len)
+intel_i915_query_flags(int fd, uint64_t query_id, uint32_t flags,
+                       void *buffer, int32_t *buffer_len)
 {
    struct drm_i915_query_item item = {
       .query_id = query_id,
       .length = *buffer_len,
+      .flags = flags,
       .data_ptr = (uintptr_t)buffer,
    };
 
@@ -108,6 +109,13 @@ intel_i915_query(int fd, uint64_t query_id, void *buffer,
    return 0;
 }
 
+static inline int
+intel_i915_query(int fd, uint64_t query_id, void *buffer,
+                 int32_t *buffer_len)
+{
+   return intel_i915_query_flags(fd, query_id, 0, buffer, buffer_len);
+}
+
 /**
  * Query for the given data, allocating as needed
  *
diff --git a/src/intel/perf/intel_perf.c b/src/intel/perf/intel_perf.c
index f3c7726931e..7c5175ddcba 100644
--- a/src/intel/perf/intel_perf.c
+++ b/src/intel/perf/intel_perf.c
@@ -252,26 +252,13 @@ kernel_has_dynamic_config_support(struct intel_perf_config *perf, int fd)
                     &invalid_config_id) < 0 && errno == ENOENT;
 }
 
-static int
-i915_query_items(struct intel_perf_config *perf, int fd,
-                 struct drm_i915_query_item *items, uint32_t n_items)
-{
-   struct drm_i915_query q = {
-      .num_items = n_items,
-      .items_ptr = to_user_pointer(items),
-   };
-   return intel_ioctl(fd, DRM_IOCTL_I915_QUERY, &q);
-}
-
 static bool
 i915_query_perf_config_supported(struct intel_perf_config *perf, int fd)
 {
-   struct drm_i915_query_item item = {
-      .query_id = DRM_I915_QUERY_PERF_CONFIG,
-      .flags = DRM_I915_QUERY_PERF_CONFIG_LIST,
-   };
-
-   return i915_query_items(perf, fd, &item, 1) == 0 && item.length > 0;
+   int32_t length = 0;
+   return !intel_i915_query_flags(fd, DRM_I915_QUERY_PERF_CONFIG,
+                                  DRM_I915_QUERY_PERF_CONFIG_LIST,
+                                  NULL, &length);
 }
 
 static bool
@@ -283,18 +270,15 @@ i915_query_perf_config_data(struct intel_perf_config *perf,
       struct drm_i915_query_perf_config query;
       struct drm_i915_perf_oa_config config;
    } item_data;
-   struct drm_i915_query_item item = {
-      .query_id = DRM_I915_QUERY_PERF_CONFIG,
-      .flags = DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID,
-      .data_ptr = to_user_pointer(&item_data),
-      .length = sizeof(item_data),
-   };
 
    memset(&item_data, 0, sizeof(item_data));
    memcpy(item_data.query.uuid, guid, sizeof(item_data.query.uuid));
    memcpy(&item_data.config, config, sizeof(item_data.config));
 
-   if (!(i915_query_items(perf, fd, &item, 1) == 0 && item.length > 0))
+   int32_t item_length = sizeof(item_data);
+   if (intel_i915_query_flags(fd, DRM_I915_QUERY_PERF_CONFIG,
+                              DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID,
+                              &item_data, &item_length))
       return false;
 
    memcpy(config, &item_data.config, sizeof(item_data.config));



More information about the mesa-commit mailing list