diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2015-02-18 15:58:06 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2015-02-18 16:04:12 +0000 |
commit | eaa7e6183cedee10acfa321ac3c66bfe58c0ed5a (patch) | |
tree | 20a84d07613de8b3df42e09a1c45c44a5805c19b /lib/intel_chipset.c | |
parent | a22548fec06faba738a2d59b45b54704e4757685 (diff) |
lib: Cache DRM device id to reduce number of ioctls
The DRM device id for the igfx is fixed, since there can only be one in
the system. So once we query it for the first time we can safely report
that value on every subsequent request, cutting out a lot of noisy
ioctls from inside tests.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'lib/intel_chipset.c')
-rw-r--r-- | lib/intel_chipset.c | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/lib/intel_chipset.c b/lib/intel_chipset.c index fafd232f..a3085734 100644 --- a/lib/intel_chipset.c +++ b/lib/intel_chipset.c @@ -112,6 +112,8 @@ intel_get_pci_device(void) return pci_dev; } +extern uint16_t __drm_device_id; + /** * intel_get_drm_devid: * @fd: open i915 drm file descriptor @@ -125,26 +127,15 @@ intel_get_pci_device(void) uint32_t intel_get_drm_devid(int fd) { - uint32_t devid = 0; const char *override; - override = getenv("INTEL_DEVID_OVERRIDE"); - if (override) { - devid = strtod(override, NULL); - } else { - struct drm_i915_getparam gp; - int ret; - - memset(&gp, 0, sizeof(gp)); - gp.param = I915_PARAM_CHIPSET_ID; - gp.value = (int *)&devid; - - ret = ioctl(fd, DRM_IOCTL_I915_GETPARAM, &gp, sizeof(gp)); - igt_assert(ret == 0); - errno = 0; - } + igt_assert(__drm_device_id); - return devid; + override = getenv("INTEL_DEVID_OVERRIDE"); + if (override) + return strtod(override, NULL); + else + return __drm_device_id; } /** |