aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Bloomfield <[email protected]>2018-09-20 09:45:10 -0700
committerJon Bloomfield <[email protected]>2019-11-05 11:38:34 -0800
commit926abff21a8f29ef159a3ac893b05c6e50e043c3 (patch)
tree55c640b8d7c5c0fa596fd2cbfcfc5d46da8270d1
parentf8c08d8faee5567803c8c533865296ca30286bbf (diff)
drm/i915/cmdparser: Ignore Length operands during command matching
Some of the gen instruction macros (e.g. MI_DISPLAY_FLIP) have the length directly encoded in them. Since these are used directly in the tables, the Length becomes part of the comparison used for matching during parsing. Thus, if the cmd being parsed has a different length to that in the table, it is not matched and the cmd is accepted via the default variable length path. Fix by masking out everything except the Opcode in the cmd tables Cc: Tony Luck <[email protected]> Cc: Dave Airlie <[email protected]> Cc: Takashi Iwai <[email protected]> Cc: Tyler Hicks <[email protected]> Signed-off-by: Jon Bloomfield <[email protected]> Reviewed-by: Chris Wilson <[email protected]>
-rw-r--r--drivers/gpu/drm/i915/i915_cmd_parser.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_cmd_parser.c b/drivers/gpu/drm/i915/i915_cmd_parser.c
index 365eea2b95bd..d78debed06e2 100644
--- a/drivers/gpu/drm/i915/i915_cmd_parser.c
+++ b/drivers/gpu/drm/i915/i915_cmd_parser.c
@@ -189,7 +189,7 @@ struct drm_i915_cmd_table {
#define CMD(op, opm, f, lm, fl, ...) \
{ \
.flags = (fl) | ((f) ? CMD_DESC_FIXED : 0), \
- .cmd = { (op), ~0u << (opm) }, \
+ .cmd = { (op & ~0u << (opm)), ~0u << (opm) }, \
.length = { (lm) }, \
__VA_ARGS__ \
}