Browse Source

drm/nouveau/dmaobj: reject unsupported parent types instead of half-succeeding

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs 13 years ago
parent
commit
1971f04e16

+ 8 - 5
drivers/gpu/drm/nouveau/core/engine/dmaobj/nv04.c

@@ -23,6 +23,7 @@
  */
 
 #include <core/gpuobj.h>
+#include <core/class.h>
 
 #include <subdev/fb.h>
 #include <subdev/vm/nv04.h>
@@ -118,16 +119,18 @@ nv04_dmaobj_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
 		return ret;
 
 	switch (nv_mclass(parent)) {
-	case 0x006b:
-	case 0x006e:
-	case 0x176e:
-	case 0x406e:
+	case NV_DEVICE_CLASS:
+		break;
+	case NV03_CHANNEL_DMA_CLASS:
+	case NV10_CHANNEL_DMA_CLASS:
+	case NV17_CHANNEL_DMA_CLASS:
+	case NV40_CHANNEL_DMA_CLASS:
 		ret = dmaeng->bind(dmaeng, *pobject, &dmaobj->base, &gpuobj);
 		nouveau_object_ref(NULL, pobject);
 		*pobject = nv_object(gpuobj);
 		break;
 	default:
-		break;
+		return -EINVAL;
 	}
 
 	return ret;

+ 8 - 5
drivers/gpu/drm/nouveau/core/engine/dmaobj/nv50.c

@@ -23,6 +23,7 @@
  */
 
 #include <core/gpuobj.h>
+#include <core/class.h>
 
 #include <subdev/fb.h>
 #include <engine/dmaobj.h>
@@ -109,16 +110,18 @@ nv50_dmaobj_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
 		return ret;
 
 	switch (nv_mclass(parent)) {
-	case 0x506e:
-	case 0x506f:
-	case 0x826e:
-	case 0x826f:
+	case NV_DEVICE_CLASS:
+		break;
+	case NV50_CHANNEL_DMA_CLASS:
+	case NV84_CHANNEL_DMA_CLASS:
+	case NV50_CHANNEL_IND_CLASS:
+	case NV84_CHANNEL_IND_CLASS:
 		ret = dmaeng->bind(dmaeng, *pobject, &dmaobj->base, &gpuobj);
 		nouveau_object_ref(NULL, pobject);
 		*pobject = nv_object(gpuobj);
 		break;
 	default:
-		break;
+		return -EINVAL;
 	}
 
 	return ret;