drm/i915: Disable snooping (userptr, set-cache-level) on gen4
The original gen4 has an issue where writes (both render and blt) into snoopable pages are lost. We've previously worked around this in userspace (ddx, igt) by simply not requesting snoopable buffers, but upon rediscovering this problem for a third time, make the kernel reject such requests with -ENODEV. This disables snooping on userspace buffers for i965g and i965gm (original gen4) machines. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20170906192424.26970-1-chris@chris-wilson.co.uk
This commit is contained in:
parent
bb9d2d0505
commit
df0700e530
drivers/gpu/drm/i915
@ -168,6 +168,7 @@ static const struct intel_device_info intel_i965g_info __initconst = {
|
||||
.platform = INTEL_I965G,
|
||||
.has_overlay = 1,
|
||||
.hws_needs_physical = 1,
|
||||
.has_snoop = false,
|
||||
};
|
||||
|
||||
static const struct intel_device_info intel_i965gm_info __initconst = {
|
||||
@ -177,6 +178,7 @@ static const struct intel_device_info intel_i965gm_info __initconst = {
|
||||
.has_overlay = 1,
|
||||
.supports_tv = 1,
|
||||
.hws_needs_physical = 1,
|
||||
.has_snoop = false,
|
||||
};
|
||||
|
||||
static const struct intel_device_info intel_g45_info __initconst = {
|
||||
|
@ -412,8 +412,6 @@ void intel_device_info_runtime_init(struct drm_i915_private *dev_priv)
|
||||
else if (INTEL_INFO(dev_priv)->gen >= 9)
|
||||
gen9_sseu_info_init(dev_priv);
|
||||
|
||||
WARN_ON(info->has_snoop != !info->has_llc);
|
||||
|
||||
DRM_DEBUG_DRIVER("slice mask: %04x\n", info->sseu.slice_mask);
|
||||
DRM_DEBUG_DRIVER("slice total: %u\n", hweight8(info->sseu.slice_mask));
|
||||
DRM_DEBUG_DRIVER("subslice total: %u\n",
|
||||
|
Loading…
Reference in New Issue
Block a user