summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;