summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--shared-core/i915_dma.c9
-rw-r--r--shared/i915_dma.c9
2 files changed, 16 insertions, 2 deletions
diff --git a/shared-core/i915_dma.c b/shared-core/i915_dma.c
index 80f643cd..6d85e050 100644
--- a/shared-core/i915_dma.c
+++ b/shared-core/i915_dma.c
@@ -306,7 +306,14 @@ static int do_validate_cmd( int cmd )
case 0x1c:
return 1;
case 0x1d:
- return (cmd & 0xffff) + 2;
+ switch ((cmd>>16)&0xff) {
+ case 0x3:
+ return (cmd & 0x1f) + 2;
+ case 0x4:
+ return (cmd & 0xf) + 2;
+ default:
+ return (cmd & 0xffff) + 2;
+ }
case 0x1e:
if (cmd & (1<<23))
return (cmd & 0xffff) + 1;
diff --git a/shared/i915_dma.c b/shared/i915_dma.c
index 80f643cd..6d85e050 100644
--- a/shared/i915_dma.c
+++ b/shared/i915_dma.c
@@ -306,7 +306,14 @@ static int do_validate_cmd( int cmd )
case 0x1c:
return 1;
case 0x1d:
- return (cmd & 0xffff) + 2;
+ switch ((cmd>>16)&0xff) {
+ case 0x3:
+ return (cmd & 0x1f) + 2;
+ case 0x4:
+ return (cmd & 0xf) + 2;
+ default:
+ return (cmd & 0xffff) + 2;
+ }
case 0x1e:
if (cmd & (1<<23))
return (cmd & 0xffff) + 1;