drm/i915: Use the precomputed value for whether to enable command parsing
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 24 Nov 2016 12:58:51 +0000 (12:58 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 12 Nov 2019 18:16:14 +0000 (19:16 +0100)
commit 41736a8e3331a67445b271e73be39536c498659e upstream.

As i915.enable_cmd_parser is an unsafe option, make it read-only at
runtime. Now that it is constant, we can use the value determined during
initialisation as to whether we need the cmdparser at execbuffer time.

v2: Remove the inline for its single user, it is clear enough (and
shorter) without!

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Signed-off-by: Jon Bloomfield <jon.bloomfield@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20161124125851.6615-1-chris@chris-wilson.co.uk
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/i915/i915_cmd_parser.c
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gem_execbuffer.c
drivers/gpu/drm/i915/i915_params.c
drivers/gpu/drm/i915/i915_params.h

index 2e3e9cd6c53cc4ee81a6db243db973c48ed3461a..bdfdb4595a9e1b6d85701c6755180ac005b41a05 100644 (file)
@@ -1131,27 +1131,6 @@ unpin_src:
        return dst;
 }
 
-/**
- * intel_engine_needs_cmd_parser() - should a given engine use software
- *                                   command parsing?
- * @engine: the engine in question
- *
- * Only certain platforms require software batch buffer command parsing, and
- * only when enabled via module parameter.
- *
- * Return: true if the engine requires software command parsing
- */
-bool intel_engine_needs_cmd_parser(struct intel_engine_cs *engine)
-{
-       if (!engine->needs_cmd_parser)
-               return false;
-
-       if (!USES_PPGTT(engine->i915))
-               return false;
-
-       return (i915.enable_cmd_parser == 1);
-}
-
 static bool check_cmd(const struct intel_engine_cs *engine,
                      const struct drm_i915_cmd_descriptor *desc,
                      const u32 *cmd, u32 length,
@@ -1374,7 +1353,7 @@ int i915_cmd_parser_get_version(struct drm_i915_private *dev_priv)
 
        /* If the command parser is not enabled, report 0 - unsupported */
        for_each_engine(engine, dev_priv) {
-               if (intel_engine_needs_cmd_parser(engine)) {
+               if (engine->needs_cmd_parser) {
                        active = true;
                        break;
                }
index 9320f8265cc693145655f182586b5edba252a719..54b768618beae9f7f36cbcd59290db58739cfae5 100644 (file)
@@ -3455,7 +3455,6 @@ const char *i915_cache_level_str(struct drm_i915_private *i915, int type);
 int i915_cmd_parser_get_version(struct drm_i915_private *dev_priv);
 void intel_engine_init_cmd_parser(struct intel_engine_cs *engine);
 void intel_engine_cleanup_cmd_parser(struct intel_engine_cs *engine);
-bool intel_engine_needs_cmd_parser(struct intel_engine_cs *engine);
 int intel_engine_cmd_parser(struct intel_engine_cs *engine,
                            struct drm_i915_gem_object *batch_obj,
                            struct drm_i915_gem_object *shadow_batch_obj,
index 2117f172d7a2b46d849f062b49952bc124fb4e5c..4e66f99a771c07d3babc762ea4741c116a261785 100644 (file)
@@ -1711,7 +1711,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
        }
 
        params->args_batch_start_offset = args->batch_start_offset;
-       if (intel_engine_needs_cmd_parser(engine) && args->batch_len) {
+       if (engine->needs_cmd_parser && args->batch_len) {
                struct i915_vma *vma;
 
                vma = i915_gem_execbuffer_parse(engine, &shadow_exec_entry,
index 768ad89d9cd40cf93093713f7db08f7bc10e7ebd..9d9dfe194b9b188750f32e9864fac50abdee2c91 100644 (file)
@@ -49,7 +49,7 @@ struct i915_params i915 __read_mostly = {
        .reset = true,
        .invert_brightness = 0,
        .disable_display = 0,
-       .enable_cmd_parser = 1,
+       .enable_cmd_parser = true,
        .use_mmio_flip = 0,
        .mmio_debug = 0,
        .verbose_state_checks = 1,
@@ -178,9 +178,9 @@ MODULE_PARM_DESC(invert_brightness,
 module_param_named(disable_display, i915.disable_display, bool, 0400);
 MODULE_PARM_DESC(disable_display, "Disable display (default: false)");
 
-module_param_named_unsafe(enable_cmd_parser, i915.enable_cmd_parser, int, 0600);
+module_param_named_unsafe(enable_cmd_parser, i915.enable_cmd_parser, bool, 0400);
 MODULE_PARM_DESC(enable_cmd_parser,
-                "Enable command parsing (1=enabled [default], 0=disabled)");
+                "Enable command parsing (true=enabled [default], false=disabled)");
 
 module_param_named_unsafe(use_mmio_flip, i915.use_mmio_flip, int, 0600);
 MODULE_PARM_DESC(use_mmio_flip,
index 3a0dd78ddb38f88fa7b447a51702f3539c0590d1..82ac6e886eed227f2bac7ee63610913f7a1e3320 100644 (file)
@@ -44,7 +44,6 @@ struct i915_params {
        int disable_power_well;
        int enable_ips;
        int invert_brightness;
-       int enable_cmd_parser;
        int enable_guc_loading;
        int enable_guc_submission;
        int guc_log_level;
@@ -53,6 +52,7 @@ struct i915_params {
        int edp_vswing;
        unsigned int inject_load_failure;
        /* leave bools at the end to not create holes */
+       bool enable_cmd_parser;
        bool enable_hangcheck;
        bool fastboot;
        bool prefault_disable;