intel: fix topology query
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>
Wed, 2 Oct 2019 14:13:06 +0000 (17:13 +0300)
committerLionel Landwerlin <lionel.g.landwerlin@intel.com>
Wed, 2 Oct 2019 22:25:44 +0000 (22:25 +0000)
i915 will report ENODEV on generations prior to Haswell because there
is no point in reporting values on those. This is prior any fusing
could happen on parts with identical PCI ids.

This query call was previously only triggered on generations that
support performance queries, which happens to match generation for
which i915 reports topology, but the commit pointed below started
using it on all generations.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Gitlab: https://gitlab.freedesktop.org/mesa/mesa/issues/1860
Cc: <mesa-stable@lists.freedesktop.org>
Fixes: 96e1c945f2 ("i965: Move device info initialization to common code")
Reviewed-by: Mark Janes <mark.a.janes@intel.com>
src/intel/dev/gen_device_info.c

index 3953a1f4af3efb773302aab5c4ba06a8e774d8a4..85fa978f9c1a031ffd60af9b227fb5227bc23ce1 100644 (file)
@@ -1320,6 +1320,9 @@ query_topology(struct gen_device_info *devinfo, int fd)
    if (gen_ioctl(fd, DRM_IOCTL_I915_QUERY, &query))
       return false;
 
+   if (item.length < 0)
+      return false;
+
    struct drm_i915_query_topology_info *topo_info =
       (struct drm_i915_query_topology_info *) calloc(1, item.length);
    item.data_ptr = (uintptr_t) topo_info;