diff options
author | Ben Widawsky <benjamin.widawsky@intel.com> | 2016-04-04 17:31:04 -0700 |
---|---|---|
committer | Ben Widawsky <ben@bwidawsk.net> | 2017-07-03 21:29:36 -0700 |
commit | 4be05c5f48c43dcc68b17111a081524d14f53f98 (patch) | |
tree | c3d42c09e92e8218fbc000c56334a7571f7740d8 | |
parent | ee2da0ac24fb8d50a03b263eb1fa2e82849eda95 (diff) |
drm/i915: Version the MOCS settingsmocs-new
Let's do this again...
Starting on GEN9
v2: Update 1.5 year old patch. Add comments. Update commit message.
Signed-off-by: Ben Widawsky <benjamin.widawsky@intel.com>
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_pci.c | 13 | ||||
-rw-r--r-- | include/uapi/drm/i915_drm.h | 7 |
4 files changed, 21 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 9167a73f3c69..26c27b6ae814 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -401,6 +401,9 @@ static int i915_getparam(struct drm_device *dev, void *data, if (!value) return -ENODEV; break; + case I915_PARAM_MOCS_TABLE_VERSION: + value = INTEL_INFO(dev_priv)->mocs_version; + break; default: DRM_DEBUG("Unknown parameter %d\n", param->param); return -EINVAL; diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index effbe4f72a64..9b30f6e6ef9b 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -859,6 +859,8 @@ struct intel_device_info { u16 degamma_lut_size; u16 gamma_lut_size; } color; + + u8 mocs_version; }; struct intel_display_error_state; diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c index 04aaf553e3fa..d81d8a4a89ec 100644 --- a/drivers/gpu/drm/i915/i915_pci.c +++ b/drivers/gpu/drm/i915/i915_pci.c @@ -356,7 +356,8 @@ static const struct intel_device_info intel_cherryview_info = { .platform = INTEL_SKYLAKE, \ .has_csr = 1, \ .has_guc = 1, \ - .ddb_size = 896 + .ddb_size = 896, \ + .mocs_version = 1 static const struct intel_device_info intel_skylake_info = { SKL_PLATFORM, @@ -390,6 +391,7 @@ static const struct intel_device_info intel_skylake_gt3_info = { .has_full_ppgtt = 1, \ .has_full_48bit_ppgtt = 1, \ .has_reset_engine = 1, \ + .mocs_version = 1, \ GEN_DEFAULT_PIPEOFFSETS, \ IVB_CURSOR_OFFSETS, \ BDW_COLORS @@ -413,7 +415,8 @@ static const struct intel_device_info intel_geminilake_info = { .platform = INTEL_KABYLAKE, \ .has_csr = 1, \ .has_guc = 1, \ - .ddb_size = 896 + .ddb_size = 896, \ + .mocs_version = 1 static const struct intel_device_info intel_kabylake_info = { KBL_PLATFORM, @@ -431,7 +434,8 @@ static const struct intel_device_info intel_kabylake_gt3_info = { .platform = INTEL_COFFEELAKE, \ .has_csr = 1, \ .has_guc = 1, \ - .ddb_size = 896 + .ddb_size = 896, \ + .mocs_version = 1 static const struct intel_device_info intel_coffeelake_info = { CFL_PLATFORM, @@ -448,7 +452,8 @@ static const struct intel_device_info intel_cannonlake_info = { .platform = INTEL_CANNONLAKE, .gen = 10, .ddb_size = 1024, - .has_csr = 1, + .has_csr = 1, \ + .mocs_version = 1 }; /* diff --git a/include/uapi/drm/i915_drm.h b/include/uapi/drm/i915_drm.h index 7ccbd6a2bbe0..57ed19f32e51 100644 --- a/include/uapi/drm/i915_drm.h +++ b/include/uapi/drm/i915_drm.h @@ -431,6 +431,13 @@ typedef struct drm_i915_irq_wait { */ #define I915_PARAM_HAS_EXEC_BATCH_FIRST 48 +/* What version of the MOCS table we have. For GEN9 GPUs, the PRM defined + * non-optimal settings for the MOCS table. As a result, we were required to use a + * small subset, and later add new settings. This param allows userspace to + * determine which settings are there. + */ +#define I915_PARAM_MOCS_TABLE_VERSION 49 + typedef struct drm_i915_getparam { __s32 param; /* |