drm/i915: Whitelist COMMON_SLICE_CHICKEN2
diff mbox series

Message ID 20190910224226.13978-1-kenneth@whitecape.org
State New
Headers show
Series
  • drm/i915: Whitelist COMMON_SLICE_CHICKEN2
Related show

Commit Message

Kenneth Graunke Sept. 10, 2019, 10:42 p.m. UTC
This allows userspace to use "legacy" mode for push constants, where
they are committed at 3DPRIMITIVE or flush time, rather than being
committed at 3DSTATE_BINDING_TABLE_POINTERS_XS time.  Gen6-8 and Gen11
both use the "legacy" behavior - only Gen9 works in the "new" way.

Conflating push constants with binding tables is painful for userspace,
we would like to be able to avoid doing so.

Cc: stable@vger.kernel.org
---
 drivers/gpu/drm/i915/gt/intel_workarounds.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Chris Wilson Sept. 11, 2019, 7:41 a.m. UTC | #1
Quoting Kenneth Graunke (2019-09-10 23:42:26)
> This allows userspace to use "legacy" mode for push constants, where
> they are committed at 3DPRIMITIVE or flush time, rather than being
> committed at 3DSTATE_BINDING_TABLE_POINTERS_XS time.  Gen6-8 and Gen11
> both use the "legacy" behavior - only Gen9 works in the "new" way.
> 
> Conflating push constants with binding tables is painful for userspace,
> we would like to be able to avoid doing so.
> 
> Cc: stable@vger.kernel.org
> ---
>  drivers/gpu/drm/i915/gt/intel_workarounds.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> index 243d3f77be13..41d0f786e06d 100644
> --- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
> +++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> @@ -1062,6 +1062,9 @@ static void gen9_whitelist_build(struct i915_wa_list *w)
>  
>         /* WaAllowUMDToModifyHDCChicken1:skl,bxt,kbl,glk,cfl */
>         whitelist_reg(w, GEN8_HDC_CHICKEN1);
> +
> +       /* WaSendPushConstantsFromMMIO:skl,bxt */
> +       whitelist_reg(w, COMMON_SLICE_CHICKEN2);

A couple bits in there look like they could do with a validation pass to
make sure they don't kill the machine when incorrectly set. However,
we can raise the bar tomorrow, for now this doesn't look any worse than
any other potential bad bit. Passed our sanity checks that this is
ordinarily a privileged register (i.e. whitelisting is required)
and that it is context saved, so include a s-o-b and

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>

(s-o-b required!)
-Chris

Patch
diff mbox series

diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c
index 243d3f77be13..41d0f786e06d 100644
--- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
+++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
@@ -1062,6 +1062,9 @@  static void gen9_whitelist_build(struct i915_wa_list *w)
 
 	/* WaAllowUMDToModifyHDCChicken1:skl,bxt,kbl,glk,cfl */
 	whitelist_reg(w, GEN8_HDC_CHICKEN1);
+
+	/* WaSendPushConstantsFromMMIO:skl,bxt */
+	whitelist_reg(w, COMMON_SLICE_CHICKEN2);
 }
 
 static void skl_whitelist_build(struct intel_engine_cs *engine)