diff options
author | Jeff McGee <jeff.mcgee@intel.com> | 2015-03-09 19:06:54 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-03-17 17:30:31 -0400 |
commit | a1559ffefb2a80eabbee65d7cc04e828d4fd557d (patch) | |
tree | 6fc5ff825c6714e2c7f5ace5f05fc8155028c010 /drivers | |
parent | cd9bfacb8726681c9bda57a679d8f7ba61ecc9f8 (diff) |
drm/i915: Export total subslice and EU counts
Setup new I915_GETPARAM ioctl entries for subslice total and
EU total. Userspace drivers need these values when constructing
GPGPU commands. This kernel query method is intended to replace
the PCI ID-based tables that userspace drivers currently maintain.
The kernel driver can employ fuse register reads as needed to
ensure the most accurate determination of GT config attributes.
This first became important with Cherryview in which the config
could differ between devices with the same PCI ID.
The kernel detection of these values is device-specific and not
included in this patch. Because zero is not a valid value for any of
these parameters, a value of zero is interpreted as unknown for the
device. Userspace drivers should continue to maintain ID-based tables
for older devices not supported by the new query method.
v2: Increment our I915_GETPARAM indices to fit after REVISION
which was merged ahead of us.
For: VIZ-4636
Signed-off-by: Jeff McGee <jeff.mcgee@intel.com>
Tested-by: Zhigang Gong <zhigang.gong@linux.intel.com>
Acked-by: Zhigang Gong <zhigang.gong@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/i915/i915_dma.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c index 8e914303b831..d49ed68f041e 100644 --- a/drivers/gpu/drm/i915/i915_dma.c +++ b/drivers/gpu/drm/i915/i915_dma.c | |||
@@ -153,6 +153,16 @@ static int i915_getparam(struct drm_device *dev, void *data, | |||
153 | case I915_PARAM_MMAP_VERSION: | 153 | case I915_PARAM_MMAP_VERSION: |
154 | value = 1; | 154 | value = 1; |
155 | break; | 155 | break; |
156 | case I915_PARAM_SUBSLICE_TOTAL: | ||
157 | value = INTEL_INFO(dev)->subslice_total; | ||
158 | if (!value) | ||
159 | return -ENODEV; | ||
160 | break; | ||
161 | case I915_PARAM_EU_TOTAL: | ||
162 | value = INTEL_INFO(dev)->eu_total; | ||
163 | if (!value) | ||
164 | return -ENODEV; | ||
165 | break; | ||
156 | default: | 166 | default: |
157 | DRM_DEBUG("Unknown parameter %d\n", param->param); | 167 | DRM_DEBUG("Unknown parameter %d\n", param->param); |
158 | return -EINVAL; | 168 | return -EINVAL; |