On Fri, Aug 31, 2018 at 01:18:53PM +0100, Chris Wilson wrote: > In a multi-device system there is no guarantee that the fd being probed > in intel_get_drm_devid() is the same as was opened earlier. Any cache > may outlive the fd, so is frought with lifetime issues. The primary > reason for caching the devid was to avoid extra ioctls in the > dmesg/strace, but hopefully all users now grab the id in their fixture > and not inside every function. > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Katarzyna Dec <katarzyna.dec@xxxxxxxxx> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx> > --- > lib/drmtest.c | 3 --- > lib/intel_chipset.c | 14 +++++++++----- > 2 files changed, 9 insertions(+), 8 deletions(-) > > diff --git a/lib/drmtest.c b/lib/drmtest.c > index fae6f86f2..ecb535f5d 100644 > --- a/lib/drmtest.c > +++ b/lib/drmtest.c > @@ -75,8 +75,6 @@ > * and [batchbuffer](igt-gpu-tools-intel-batchbuffer.html) libraries as dependencies. > */ > > -uint16_t __drm_device_id; > - > static int __get_drm_device_name(int fd, char *name) > { > drm_version_t version; > @@ -142,7 +140,6 @@ static bool has_known_intel_chipset(int fd) > if (!intel_gen(devid)) > return false; > > - __drm_device_id = devid; > return true; > } > > diff --git a/lib/intel_chipset.c b/lib/intel_chipset.c > index ab35fa70c..4748a3fb8 100644 > --- a/lib/intel_chipset.c > +++ b/lib/intel_chipset.c > @@ -112,8 +112,6 @@ intel_get_pci_device(void) > return pci_dev; > } > > -extern uint16_t __drm_device_id; > - > /** > * intel_get_drm_devid: > * @fd: open i915 drm file descriptor > @@ -127,16 +125,22 @@ extern uint16_t __drm_device_id; > uint32_t > intel_get_drm_devid(int fd) > { > + struct drm_i915_getparam gp; > const char *override; > + int devid = 0; > > igt_assert(is_i915_device(fd)); > - igt_assert(__drm_device_id); > > override = getenv("INTEL_DEVID_OVERRIDE"); > if (override) > return strtol(override, NULL, 0); > - else > - return __drm_device_id; > + > + memset(&gp, 0, sizeof(gp)); > + gp.param = I915_PARAM_CHIPSET_ID; > + gp.value = &devid; > + ioctl(fd, DRM_IOCTL_I915_GETPARAM, &gp, sizeof(gp)); > + > + return devid; > } > > /** > -- > 2.19.0.rc1 > > _______________________________________________ > igt-dev mailing list > igt-dev@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/igt-dev _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx