summaryrefslogtreecommitdiff
path: root/nvkm
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2014-12-05 12:21:34 +1000
committerBen Skeggs <bskeggs@redhat.com>2015-01-10 23:57:07 +1000
commit0f7caae334a9340c7d00d725c5c32120e47d790b (patch)
tree027eacafb04c382f0f7d818181abce96c7ab09c5 /nvkm
parent74e97c155ad14e3cba89d4f6b646d30cf9bc2e16 (diff)
downloadnouveau-0f7caae334a9340c7d00d725c5c32120e47d790b.tar.gz
core: can now assume client/device object tree based on object.engine
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'nvkm')
-rw-r--r--nvkm/core/printk.c10
-rw-r--r--nvkm/engine/device/base.c7
2 files changed, 10 insertions, 7 deletions
diff --git a/nvkm/core/printk.c b/nvkm/core/printk.c
index 1060e3a17..81f559692 100644
--- a/nvkm/core/printk.c
+++ b/nvkm/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/nvkm/engine/device/base.c b/nvkm/engine/device/base.c
index 7c0cbcde7..0a6abc23f 100644
--- a/nvkm/engine/device/base.c
+++ b/nvkm/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;