summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2014-12-05 12:21:34 +1000
committerBen Skeggs <bskeggs@redhat.com>2015-01-22 12:14:54 +1000
commit8000fb219179e0be23cef03588dcd6c00a2035f3 (patch)
tree5170b688ad8932989096aa58408a0b6fcc973b64
parentbdda4703f145ef5a098d100a071e272a65abd01d (diff)
drm/nouveau/core: can now assume client/device object tree based on object.engine
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r--drivers/gpu/drm/nouveau/core/core/printk.c10
-rw-r--r--drivers/gpu/drm/nouveau/core/engine/device/base.c7
2 files changed, 10 insertions, 7 deletions
diff --git a/drivers/gpu/drm/nouveau/core/core/printk.c b/drivers/gpu/drm/nouveau/core/core/printk.c
index 1060e3a173fe..81f559692624 100644
--- a/drivers/gpu/drm/nouveau/core/core/printk.c
+++ b/drivers/gpu/drm/nouveau/core/core/printk.c
@@ -64,11 +64,13 @@ nv_printk_(struct nouveau_object *object, int level, const char *fmt, ...)
struct nouveau_object *subdev;
char obuf[64], *ofmt = "";
- subdev = object;
- while (subdev && !nv_iclass(subdev, NV_SUBDEV_CLASS))
- subdev = subdev->parent;
- if (!subdev)
+ if (object->engine == NULL) {
+ subdev = object;
+ while (subdev && !nv_iclass(subdev, NV_SUBDEV_CLASS))
+ subdev = subdev->parent;
+ } else {
subdev = object->engine;
+ }
device = subdev;
if (device->parent)
diff --git a/drivers/gpu/drm/nouveau/core/engine/device/base.c b/drivers/gpu/drm/nouveau/core/engine/device/base.c
index 7c0cbcde7b2f..0a6abc23f85d 100644
--- a/drivers/gpu/drm/nouveau/core/engine/device/base.c
+++ b/drivers/gpu/drm/nouveau/core/engine/device/base.c
@@ -512,9 +512,10 @@ struct nouveau_device *
nv_device(void *obj)
{
struct nouveau_object *device = nv_object(obj);
- while (device && device->parent)
- device = device->parent;
- if (!nv_iclass(device, NV_ENGINE_CLASS)) {
+ if (device->engine == NULL) {
+ while (device && device->parent)
+ device = device->parent;
+ } else {
device = nv_object(obj)->engine;
if (device && device->parent)
device = device->parent;