You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
drm/nouveau/core: remove last printks
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
@@ -20,8 +20,7 @@ static inline struct nvkm_client *
|
||||
nv_client(void *obj)
|
||||
{
|
||||
#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
|
||||
if (unlikely(!nv_iclass(obj, NV_CLIENT_CLASS)))
|
||||
nv_assert("BAD CAST -> NvClient, %08x", nv_hclass(obj));
|
||||
BUG_ON(!nv_iclass(obj, NV_CLIENT_CLASS));
|
||||
#endif
|
||||
return obj;
|
||||
}
|
||||
|
||||
@@ -1,18 +1,11 @@
|
||||
#ifndef __NVKM_DEBUG_H__
|
||||
#define __NVKM_DEBUG_H__
|
||||
extern int nv_info_debug_level;
|
||||
|
||||
#define NV_DBG_FATAL 0
|
||||
#define NV_DBG_ERROR 1
|
||||
#define NV_DBG_WARN 2
|
||||
#define NV_DBG_INFO nv_info_debug_level
|
||||
#define NV_DBG_INFO 3
|
||||
#define NV_DBG_DEBUG 4
|
||||
#define NV_DBG_TRACE 5
|
||||
#define NV_DBG_PARANOIA 6
|
||||
#define NV_DBG_SPAM 7
|
||||
|
||||
#define NV_DBG_INFO_NORMAL 3
|
||||
#define NV_DBG_INFO_SILENT NV_DBG_DEBUG
|
||||
|
||||
#define nv_debug_level(a) nv_info_debug_level = NV_DBG_INFO_##a
|
||||
#endif
|
||||
|
||||
@@ -19,8 +19,7 @@ static inline struct nvkm_engctx *
|
||||
nv_engctx(void *obj)
|
||||
{
|
||||
#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
|
||||
if (unlikely(!nv_iclass(obj, NV_ENGCTX_CLASS)))
|
||||
nv_assert("BAD CAST -> NvEngCtx, %08x", nv_hclass(obj));
|
||||
BUG_ON(!nv_iclass(obj, NV_ENGCTX_CLASS));
|
||||
#endif
|
||||
return obj;
|
||||
}
|
||||
|
||||
@@ -21,8 +21,7 @@ static inline struct nvkm_engine *
|
||||
nv_engine(void *obj)
|
||||
{
|
||||
#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
|
||||
if (unlikely(!nv_iclass(obj, NV_ENGINE_CLASS)))
|
||||
nv_assert("BAD CAST -> NvEngine, %08x", nv_hclass(obj));
|
||||
BUG_ON(!nv_iclass(obj, NV_ENGINE_CLASS));
|
||||
#endif
|
||||
return obj;
|
||||
}
|
||||
|
||||
@@ -24,8 +24,7 @@ static inline struct nvkm_gpuobj *
|
||||
nv_gpuobj(void *obj)
|
||||
{
|
||||
#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
|
||||
if (unlikely(!nv_iclass(obj, NV_GPUOBJ_CLASS)))
|
||||
nv_assert("BAD CAST -> NvGpuObj, %08x", nv_hclass(obj));
|
||||
BUG_ON(!nv_iclass(obj, NV_GPUOBJ_CLASS));
|
||||
#endif
|
||||
return obj;
|
||||
}
|
||||
|
||||
@@ -13,8 +13,7 @@ static inline struct nvkm_namedb *
|
||||
nv_namedb(void *obj)
|
||||
{
|
||||
#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
|
||||
if (unlikely(!nv_iclass(obj, NV_NAMEDB_CLASS)))
|
||||
nv_assert("BAD CAST -> NvNameDB, %08x", nv_hclass(obj));
|
||||
BUG_ON(!nv_iclass(obj, NV_NAMEDB_CLASS));
|
||||
#endif
|
||||
return obj;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef __NVKM_OBJECT_H__
|
||||
#define __NVKM_OBJECT_H__
|
||||
#include <core/os.h>
|
||||
#include <core/printk.h>
|
||||
#include <core/debug.h>
|
||||
|
||||
#define NV_PARENT_CLASS 0x80000000
|
||||
#define NV_NAMEDB_CLASS 0x40000000
|
||||
@@ -32,8 +32,7 @@ nv_object(void *obj)
|
||||
#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
|
||||
if (likely(obj)) {
|
||||
struct nvkm_object *object = obj;
|
||||
if (unlikely(object->_magic != NVKM_OBJECT_MAGIC))
|
||||
nv_assert("BAD CAST -> NvObject, invalid magic");
|
||||
BUG_ON(object->_magic != NVKM_OBJECT_MAGIC);
|
||||
}
|
||||
#endif
|
||||
return obj;
|
||||
@@ -112,7 +111,6 @@ int nvkm_object_ctor(struct nvkm_object *, struct nvkm_object *,
|
||||
void nvkm_object_ref(struct nvkm_object *, struct nvkm_object **);
|
||||
int nvkm_object_inc(struct nvkm_object *);
|
||||
int nvkm_object_dec(struct nvkm_object *, bool suspend);
|
||||
void nvkm_object_debug(void);
|
||||
|
||||
static inline int
|
||||
nv_exec(void *obj, u32 mthd, void *data, u32 size)
|
||||
@@ -138,7 +136,6 @@ static inline u8
|
||||
nv_ro08(void *obj, u64 addr)
|
||||
{
|
||||
u8 data = nv_ofuncs(obj)->rd08(obj, addr);
|
||||
nv_spam(obj, "nv_ro08 0x%08llx 0x%02x\n", addr, data);
|
||||
return data;
|
||||
}
|
||||
|
||||
@@ -146,7 +143,6 @@ static inline u16
|
||||
nv_ro16(void *obj, u64 addr)
|
||||
{
|
||||
u16 data = nv_ofuncs(obj)->rd16(obj, addr);
|
||||
nv_spam(obj, "nv_ro16 0x%08llx 0x%04x\n", addr, data);
|
||||
return data;
|
||||
}
|
||||
|
||||
@@ -154,28 +150,24 @@ static inline u32
|
||||
nv_ro32(void *obj, u64 addr)
|
||||
{
|
||||
u32 data = nv_ofuncs(obj)->rd32(obj, addr);
|
||||
nv_spam(obj, "nv_ro32 0x%08llx 0x%08x\n", addr, data);
|
||||
return data;
|
||||
}
|
||||
|
||||
static inline void
|
||||
nv_wo08(void *obj, u64 addr, u8 data)
|
||||
{
|
||||
nv_spam(obj, "nv_wo08 0x%08llx 0x%02x\n", addr, data);
|
||||
nv_ofuncs(obj)->wr08(obj, addr, data);
|
||||
}
|
||||
|
||||
static inline void
|
||||
nv_wo16(void *obj, u64 addr, u16 data)
|
||||
{
|
||||
nv_spam(obj, "nv_wo16 0x%08llx 0x%04x\n", addr, data);
|
||||
nv_ofuncs(obj)->wr16(obj, addr, data);
|
||||
}
|
||||
|
||||
static inline void
|
||||
nv_wo32(void *obj, u64 addr, u32 data)
|
||||
{
|
||||
nv_spam(obj, "nv_wo32 0x%08llx 0x%08x\n", addr, data);
|
||||
nv_ofuncs(obj)->wr32(obj, addr, data);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,8 +27,7 @@ static inline struct nvkm_parent *
|
||||
nv_parent(void *obj)
|
||||
{
|
||||
#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
|
||||
if (unlikely(!(nv_iclass(obj, NV_PARENT_CLASS))))
|
||||
nv_assert("BAD CAST -> NvParent, %08x", nv_hclass(obj));
|
||||
BUG_ON(!(nv_iclass(obj, NV_PARENT_CLASS)));
|
||||
#endif
|
||||
return obj;
|
||||
}
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
#ifndef __NVKM_PRINTK_H__
|
||||
#define __NVKM_PRINTK_H__
|
||||
#include <core/os.h>
|
||||
#include <core/debug.h>
|
||||
struct nvkm_object;
|
||||
|
||||
void __printf(3, 4)
|
||||
nv_printk_(struct nvkm_object *, int, const char *, ...);
|
||||
|
||||
#define nv_printk(o,l,f,a...) do { \
|
||||
if (NV_DBG_##l <= CONFIG_NOUVEAU_DEBUG) \
|
||||
nv_printk_(nv_object(o), NV_DBG_##l, f, ##a); \
|
||||
} while(0)
|
||||
|
||||
#define nv_fatal(o,f,a...) nv_printk((o), FATAL, f, ##a)
|
||||
#define nv_error(o,f,a...) nv_printk((o), ERROR, f, ##a)
|
||||
#define nv_warn(o,f,a...) nv_printk((o), WARN, f, ##a)
|
||||
#define nv_info(o,f,a...) nv_printk((o), INFO, f, ##a)
|
||||
#define nv_debug(o,f,a...) nv_printk((o), DEBUG, f, ##a)
|
||||
#define nv_trace(o,f,a...) nv_printk((o), TRACE, f, ##a)
|
||||
#define nv_spam(o,f,a...) nv_printk((o), SPAM, f, ##a)
|
||||
#define nv_ioctl(o,f,a...) nv_trace(nvkm_client(o), "ioctl: "f, ##a)
|
||||
|
||||
#define nv_assert(f,a...) do { \
|
||||
if (NV_DBG_FATAL <= CONFIG_NOUVEAU_DEBUG) \
|
||||
nv_printk_(NULL, NV_DBG_FATAL, f "\n", ##a); \
|
||||
BUG_ON(1); \
|
||||
} while(0)
|
||||
#endif
|
||||
@@ -22,8 +22,7 @@ static inline struct nvkm_subdev *
|
||||
nv_subdev(void *obj)
|
||||
{
|
||||
#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
|
||||
if (unlikely(!nv_iclass(obj, NV_SUBDEV_CLASS)))
|
||||
nv_assert("BAD CAST -> NvSubDev, %08x", nv_hclass(obj));
|
||||
BUG_ON(!nv_iclass(obj, NV_SUBDEV_CLASS));
|
||||
#endif
|
||||
return obj;
|
||||
}
|
||||
|
||||
@@ -14,8 +14,7 @@ static inline struct nvkm_instobj *
|
||||
nv_memobj(void *obj)
|
||||
{
|
||||
#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
|
||||
if (unlikely(!nv_iclass(obj, NV_MEMOBJ_CLASS)))
|
||||
nv_assert("BAD CAST -> NvMemObj, %08x", nv_hclass(obj));
|
||||
BUG_ON(!nv_iclass(obj, NV_MEMOBJ_CLASS));
|
||||
#endif
|
||||
return obj;
|
||||
}
|
||||
|
||||
@@ -538,7 +538,6 @@ nouveau_drm_device_remove(struct drm_device *dev)
|
||||
drm_put_dev(dev);
|
||||
|
||||
nvkm_object_ref(NULL, &device);
|
||||
nvkm_object_debug();
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -731,7 +730,6 @@ nouveau_pmops_runtime_suspend(struct device *dev)
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
nv_debug_level(SILENT);
|
||||
drm_kms_helper_poll_disable(drm_dev);
|
||||
vga_switcheroo_set_dynamic_switch(pdev, VGA_SWITCHEROO_OFF);
|
||||
nouveau_switcheroo_optimus_dsm();
|
||||
@@ -768,7 +766,6 @@ nouveau_pmops_runtime_resume(struct device *dev)
|
||||
nvif_mask(device, 0x88488, (1 << 25), (1 << 25));
|
||||
vga_switcheroo_set_dynamic_switch(pdev, VGA_SWITCHEROO_ON);
|
||||
drm_dev->switch_power_state = DRM_SWITCH_POWER_ON;
|
||||
nv_debug_level(NORMAL);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,5 @@ nvkm-y += nvkm/core/notify.o
|
||||
nvkm-y += nvkm/core/object.o
|
||||
nvkm-y += nvkm/core/option.o
|
||||
nvkm-y += nvkm/core/parent.o
|
||||
nvkm-y += nvkm/core/printk.o
|
||||
nvkm-y += nvkm/core/ramht.o
|
||||
nvkm-y += nvkm/core/subdev.o
|
||||
|
||||
@@ -111,11 +111,11 @@ nvkm_client_notify_new(struct nvkm_object *object,
|
||||
if (!notify)
|
||||
return -ENOMEM;
|
||||
|
||||
nv_ioctl(client, "notify new size %d\n", size);
|
||||
nvif_ioctl(object, "notify new size %d\n", size);
|
||||
if (nvif_unpack(req->v0, 0, 0, true)) {
|
||||
nv_ioctl(client, "notify new vers %d reply %d route %02x "
|
||||
"token %llx\n", req->v0.version,
|
||||
req->v0.reply, req->v0.route, req->v0.token);
|
||||
nvif_ioctl(object, "notify new vers %d reply %d route %02x "
|
||||
"token %llx\n", req->v0.version,
|
||||
req->v0.reply, req->v0.route, req->v0.token);
|
||||
notify->version = req->v0.version;
|
||||
notify->size = sizeof(notify->rep.v0);
|
||||
notify->rep.v0.version = req->v0.version;
|
||||
@@ -146,10 +146,10 @@ nvkm_client_mthd_devlist(struct nvkm_object *object, void *data, u32 size)
|
||||
} *args = data;
|
||||
int ret;
|
||||
|
||||
nv_ioctl(object, "client devlist size %d\n", size);
|
||||
nvif_ioctl(object, "client devlist size %d\n", size);
|
||||
if (nvif_unpack(args->v0, 0, 0, true)) {
|
||||
nv_ioctl(object, "client devlist vers %d count %d\n",
|
||||
args->v0.version, args->v0.count);
|
||||
nvif_ioctl(object, "client devlist vers %d count %d\n",
|
||||
args->v0.version, args->v0.count);
|
||||
if (size == sizeof(args->v0.device[0]) * args->v0.count) {
|
||||
ret = nvkm_device_list(args->v0.device, args->v0.count);
|
||||
if (ret >= 0) {
|
||||
@@ -233,25 +233,27 @@ nvkm_client_create_(const char *name, u64 devname, const char *cfg,
|
||||
int
|
||||
nvkm_client_init(struct nvkm_client *client)
|
||||
{
|
||||
struct nvkm_object *object = &client->namedb.parent.object;
|
||||
int ret;
|
||||
nv_debug(client, "init running\n");
|
||||
nvif_trace(object, "init running\n");
|
||||
ret = nvkm_handle_init(client->root);
|
||||
nv_debug(client, "init completed with %d\n", ret);
|
||||
nvif_trace(object, "init completed with %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
nvkm_client_fini(struct nvkm_client *client, bool suspend)
|
||||
{
|
||||
struct nvkm_object *object = &client->namedb.parent.object;
|
||||
const char *name[2] = { "fini", "suspend" };
|
||||
int ret, i;
|
||||
nv_debug(client, "%s running\n", name[suspend]);
|
||||
nv_debug(client, "%s notify\n", name[suspend]);
|
||||
nvif_trace(object, "%s running\n", name[suspend]);
|
||||
nvif_trace(object, "%s notify\n", name[suspend]);
|
||||
for (i = 0; i < ARRAY_SIZE(client->notify); i++)
|
||||
nvkm_client_notify_put(client, i);
|
||||
nv_debug(client, "%s object\n", name[suspend]);
|
||||
nvif_trace(object, "%s object\n", name[suspend]);
|
||||
ret = nvkm_handle_fini(client->root, suspend);
|
||||
nv_debug(client, "%s completed with %d\n", name[suspend], ret);
|
||||
nvif_trace(object, "%s completed with %d\n", name[suspend], ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -143,12 +143,12 @@ nvkm_engctx_init(struct nvkm_engctx *engctx)
|
||||
}
|
||||
|
||||
if (ret) {
|
||||
nv_error(parent, "failed to attach %s context, %d\n",
|
||||
subdev->name, ret);
|
||||
nvkm_error(pardev, "failed to attach %s context, %d\n",
|
||||
subdev->name, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
nv_debug(parent, "attached %s context\n", subdev->name);
|
||||
nvkm_trace(pardev, "attached %s context\n", subdev->name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -170,12 +170,12 @@ nvkm_engctx_fini(struct nvkm_engctx *engctx, bool suspend)
|
||||
}
|
||||
|
||||
if (ret) {
|
||||
nv_error(parent, "failed to detach %s context, %d\n",
|
||||
subdev->name, ret);
|
||||
nvkm_error(pardev, "failed to detach %s context, %d\n",
|
||||
subdev->name, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
nv_debug(parent, "detached %s context\n", subdev->name);
|
||||
nvkm_trace(pardev, "detached %s context\n", subdev->name);
|
||||
return nvkm_gpuobj_fini(&engctx->gpuobj, suspend);
|
||||
}
|
||||
|
||||
|
||||
@@ -55,16 +55,19 @@ nvkm_engine_create_(struct nvkm_object *parent, struct nvkm_object *engobj,
|
||||
|
||||
if (device->disable_mask & (1ULL << engidx)) {
|
||||
if (!nvkm_boolopt(device->cfgopt, iname, false)) {
|
||||
nv_debug(engine, "engine disabled by hw/fw\n");
|
||||
nvkm_debug(&engine->subdev,
|
||||
"engine disabled by hw/fw\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
nv_warn(engine, "ignoring hw/fw engine disable\n");
|
||||
nvkm_warn(&engine->subdev,
|
||||
"ignoring hw/fw engine disable\n");
|
||||
}
|
||||
|
||||
if (!nvkm_boolopt(device->cfgopt, iname, enable)) {
|
||||
if (!enable)
|
||||
nv_warn(engine, "disabled, %s=1 to enable\n", iname);
|
||||
nvkm_warn(&engine->subdev,
|
||||
"disabled, %s=1 to enable\n", iname);
|
||||
return -ENODEV;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,10 +69,8 @@ nvkm_gpuobj_create_(struct nvkm_object *parent, struct nvkm_object *engine,
|
||||
pargpu = pargpu->parent;
|
||||
}
|
||||
|
||||
if (unlikely(pargpu == NULL)) {
|
||||
nv_error(parent, "no gpuobj heap\n");
|
||||
if (WARN_ON(pargpu == NULL))
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
addr = nv_gpuobj(pargpu)->addr;
|
||||
heap = &nv_gpuobj(pargpu)->heap;
|
||||
|
||||
@@ -25,9 +25,8 @@
|
||||
#include <core/client.h>
|
||||
|
||||
#define hprintk(h,l,f,a...) do { \
|
||||
struct nvkm_client *c = nvkm_client((h)->object); \
|
||||
struct nvkm_handle *p = (h)->parent; u32 n = p ? p->name : ~0; \
|
||||
nv_printk((c), l, "0x%08x:0x%08x "f, n, (h)->name, ##a); \
|
||||
nvif_printk((h)->object, l, INFO, "0x%08x:0x%08x "f, n, (h)->name, ##a);\
|
||||
} while(0)
|
||||
|
||||
int
|
||||
|
||||
@@ -39,9 +39,9 @@ nvkm_ioctl_nop(struct nvkm_handle *handle, void *data, u32 size)
|
||||
} *args = data;
|
||||
int ret;
|
||||
|
||||
nv_ioctl(object, "nop size %d\n", size);
|
||||
nvif_ioctl(object, "nop size %d\n", size);
|
||||
if (nvif_unvers(args->none)) {
|
||||
nv_ioctl(object, "nop\n");
|
||||
nvif_ioctl(object, "nop\n");
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -57,14 +57,14 @@ nvkm_ioctl_sclass(struct nvkm_handle *handle, void *data, u32 size)
|
||||
int ret;
|
||||
|
||||
if (!nv_iclass(object, NV_PARENT_CLASS)) {
|
||||
nv_debug(object, "cannot have children (sclass)\n");
|
||||
nvif_debug(object, "cannot have children (sclass)\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
nv_ioctl(object, "sclass size %d\n", size);
|
||||
nvif_ioctl(object, "sclass size %d\n", size);
|
||||
if (nvif_unpack(args->v0, 0, 0, true)) {
|
||||
nv_ioctl(object, "sclass vers %d count %d\n",
|
||||
args->v0.version, args->v0.count);
|
||||
nvif_ioctl(object, "sclass vers %d count %d\n",
|
||||
args->v0.version, args->v0.count);
|
||||
if (size == args->v0.count * sizeof(args->v0.oclass[0])) {
|
||||
ret = nvkm_parent_lclass(object, args->v0.oclass,
|
||||
args->v0.count);
|
||||
@@ -95,20 +95,20 @@ nvkm_ioctl_new(struct nvkm_handle *handle, void *data, u32 size)
|
||||
u32 _handle, _oclass;
|
||||
int ret;
|
||||
|
||||
nv_ioctl(client, "new size %d\n", size);
|
||||
nvif_ioctl(handle->object, "new size %d\n", size);
|
||||
if (nvif_unpack(args->v0, 0, 0, true)) {
|
||||
_handle = args->v0.handle;
|
||||
_oclass = args->v0.oclass;
|
||||
} else
|
||||
return ret;
|
||||
|
||||
nv_ioctl(client, "new vers %d handle %08x class %08x "
|
||||
"route %02x token %llx\n",
|
||||
args->v0.version, _handle, _oclass,
|
||||
args->v0.route, args->v0.token);
|
||||
nvif_ioctl(handle->object, "new vers %d handle %08x class %08x "
|
||||
"route %02x token %llx\n",
|
||||
args->v0.version, _handle, _oclass,
|
||||
args->v0.route, args->v0.token);
|
||||
|
||||
if (!nv_iclass(handle->object, NV_PARENT_CLASS)) {
|
||||
nv_debug(handle->object, "cannot have children (ctor)\n");
|
||||
nvif_debug(handle->object, "cannot have children (ctor)\n");
|
||||
ret = -ENODEV;
|
||||
goto fail_class;
|
||||
}
|
||||
@@ -118,7 +118,7 @@ nvkm_ioctl_new(struct nvkm_handle *handle, void *data, u32 size)
|
||||
/* check that parent supports the requested subclass */
|
||||
ret = nvkm_parent_sclass(&parent->object, _oclass, &engine, &oclass);
|
||||
if (ret) {
|
||||
nv_debug(parent, "illegal class 0x%04x\n", _oclass);
|
||||
nvif_debug(&parent->object, "illegal class 0x%04x\n", _oclass);
|
||||
goto fail_class;
|
||||
}
|
||||
|
||||
@@ -188,9 +188,9 @@ nvkm_ioctl_del(struct nvkm_handle *handle, void *data, u32 size)
|
||||
} *args = data;
|
||||
int ret;
|
||||
|
||||
nv_ioctl(object, "delete size %d\n", size);
|
||||
nvif_ioctl(object, "delete size %d\n", size);
|
||||
if (nvif_unvers(args->none)) {
|
||||
nv_ioctl(object, "delete\n");
|
||||
nvif_ioctl(object, "delete\n");
|
||||
nvkm_handle_fini(handle, false);
|
||||
nvkm_handle_destroy(handle);
|
||||
}
|
||||
@@ -208,10 +208,10 @@ nvkm_ioctl_mthd(struct nvkm_handle *handle, void *data, u32 size)
|
||||
} *args = data;
|
||||
int ret;
|
||||
|
||||
nv_ioctl(object, "mthd size %d\n", size);
|
||||
nvif_ioctl(object, "mthd size %d\n", size);
|
||||
if (nvif_unpack(args->v0, 0, 0, true)) {
|
||||
nv_ioctl(object, "mthd vers %d mthd %02x\n",
|
||||
args->v0.version, args->v0.method);
|
||||
nvif_ioctl(object, "mthd vers %d mthd %02x\n",
|
||||
args->v0.version, args->v0.method);
|
||||
if (ret = -ENODEV, ofuncs->mthd)
|
||||
ret = ofuncs->mthd(object, args->v0.method, data, size);
|
||||
}
|
||||
@@ -230,10 +230,10 @@ nvkm_ioctl_rd(struct nvkm_handle *handle, void *data, u32 size)
|
||||
} *args = data;
|
||||
int ret;
|
||||
|
||||
nv_ioctl(object, "rd size %d\n", size);
|
||||
nvif_ioctl(object, "rd size %d\n", size);
|
||||
if (nvif_unpack(args->v0, 0, 0, false)) {
|
||||
nv_ioctl(object, "rd vers %d size %d addr %016llx\n",
|
||||
args->v0.version, args->v0.size, args->v0.addr);
|
||||
nvif_ioctl(object, "rd vers %d size %d addr %016llx\n",
|
||||
args->v0.version, args->v0.size, args->v0.addr);
|
||||
switch (args->v0.size) {
|
||||
case 1:
|
||||
if (ret = -ENODEV, ofuncs->rd08) {
|
||||
@@ -272,11 +272,12 @@ nvkm_ioctl_wr(struct nvkm_handle *handle, void *data, u32 size)
|
||||
} *args = data;
|
||||
int ret;
|
||||
|
||||
nv_ioctl(object, "wr size %d\n", size);
|
||||
nvif_ioctl(object, "wr size %d\n", size);
|
||||
if (nvif_unpack(args->v0, 0, 0, false)) {
|
||||
nv_ioctl(object, "wr vers %d size %d addr %016llx data %08x\n",
|
||||
args->v0.version, args->v0.size, args->v0.addr,
|
||||
args->v0.data);
|
||||
nvif_ioctl(object,
|
||||
"wr vers %d size %d addr %016llx data %08x\n",
|
||||
args->v0.version, args->v0.size, args->v0.addr,
|
||||
args->v0.data);
|
||||
switch (args->v0.size) {
|
||||
case 1:
|
||||
if (ret = -ENODEV, ofuncs->wr08) {
|
||||
@@ -315,9 +316,9 @@ nvkm_ioctl_map(struct nvkm_handle *handle, void *data, u32 size)
|
||||
} *args = data;
|
||||
int ret;
|
||||
|
||||
nv_ioctl(object, "map size %d\n", size);
|
||||
nvif_ioctl(object, "map size %d\n", size);
|
||||
if (nvif_unpack(args->v0, 0, 0, false)) {
|
||||
nv_ioctl(object, "map vers %d\n", args->v0.version);
|
||||
nvif_ioctl(object, "map vers %d\n", args->v0.version);
|
||||
if (ret = -ENODEV, ofuncs->map) {
|
||||
ret = ofuncs->map(object, &args->v0.handle,
|
||||
&args->v0.length);
|
||||
@@ -336,9 +337,9 @@ nvkm_ioctl_unmap(struct nvkm_handle *handle, void *data, u32 size)
|
||||
} *args = data;
|
||||
int ret;
|
||||
|
||||
nv_ioctl(object, "unmap size %d\n", size);
|
||||
nvif_ioctl(object, "unmap size %d\n", size);
|
||||
if (nvif_unvers(args->none)) {
|
||||
nv_ioctl(object, "unmap\n");
|
||||
nvif_ioctl(object, "unmap\n");
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -355,10 +356,10 @@ nvkm_ioctl_ntfy_new(struct nvkm_handle *handle, void *data, u32 size)
|
||||
struct nvkm_event *event;
|
||||
int ret;
|
||||
|
||||
nv_ioctl(object, "ntfy new size %d\n", size);
|
||||
nvif_ioctl(object, "ntfy new size %d\n", size);
|
||||
if (nvif_unpack(args->v0, 0, 0, true)) {
|
||||
nv_ioctl(object, "ntfy new vers %d event %02x\n",
|
||||
args->v0.version, args->v0.event);
|
||||
nvif_ioctl(object, "ntfy new vers %d event %02x\n",
|
||||
args->v0.version, args->v0.event);
|
||||
if (ret = -ENODEV, ofuncs->ntfy)
|
||||
ret = ofuncs->ntfy(object, args->v0.event, &event);
|
||||
if (ret == 0) {
|
||||
@@ -383,10 +384,10 @@ nvkm_ioctl_ntfy_del(struct nvkm_handle *handle, void *data, u32 size)
|
||||
} *args = data;
|
||||
int ret;
|
||||
|
||||
nv_ioctl(object, "ntfy del size %d\n", size);
|
||||
nvif_ioctl(object, "ntfy del size %d\n", size);
|
||||
if (nvif_unpack(args->v0, 0, 0, false)) {
|
||||
nv_ioctl(object, "ntfy del vers %d index %d\n",
|
||||
args->v0.version, args->v0.index);
|
||||
nvif_ioctl(object, "ntfy del vers %d index %d\n",
|
||||
args->v0.version, args->v0.index);
|
||||
ret = nvkm_client_notify_del(client, args->v0.index);
|
||||
}
|
||||
|
||||
@@ -403,10 +404,10 @@ nvkm_ioctl_ntfy_get(struct nvkm_handle *handle, void *data, u32 size)
|
||||
} *args = data;
|
||||
int ret;
|
||||
|
||||
nv_ioctl(object, "ntfy get size %d\n", size);
|
||||
nvif_ioctl(object, "ntfy get size %d\n", size);
|
||||
if (nvif_unpack(args->v0, 0, 0, false)) {
|
||||
nv_ioctl(object, "ntfy get vers %d index %d\n",
|
||||
args->v0.version, args->v0.index);
|
||||
nvif_ioctl(object, "ntfy get vers %d index %d\n",
|
||||
args->v0.version, args->v0.index);
|
||||
ret = nvkm_client_notify_get(client, args->v0.index);
|
||||
}
|
||||
|
||||
@@ -423,10 +424,10 @@ nvkm_ioctl_ntfy_put(struct nvkm_handle *handle, void *data, u32 size)
|
||||
} *args = data;
|
||||
int ret;
|
||||
|
||||
nv_ioctl(object, "ntfy put size %d\n", size);
|
||||
nvif_ioctl(object, "ntfy put size %d\n", size);
|
||||
if (nvif_unpack(args->v0, 0, 0, false)) {
|
||||
nv_ioctl(object, "ntfy put vers %d index %d\n",
|
||||
args->v0.version, args->v0.index);
|
||||
nvif_ioctl(object, "ntfy put vers %d index %d\n",
|
||||
args->v0.version, args->v0.index);
|
||||
ret = nvkm_client_notify_put(client, args->v0.index);
|
||||
}
|
||||
|
||||
@@ -463,15 +464,15 @@ nvkm_ioctl_path(struct nvkm_handle *parent, u32 type, u32 nr, u32 *path,
|
||||
int ret;
|
||||
|
||||
while ((object = parent->object), nr--) {
|
||||
nv_ioctl(object, "path 0x%08x\n", path[nr]);
|
||||
nvif_ioctl(object, "path 0x%08x\n", path[nr]);
|
||||
if (!nv_iclass(object, NV_PARENT_CLASS)) {
|
||||
nv_debug(object, "cannot have children (path)\n");
|
||||
nvif_debug(object, "cannot have children (path)\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (!(namedb = (void *)nv_pclass(object, NV_NAMEDB_CLASS)) ||
|
||||
!(handle = nvkm_namedb_get(namedb, path[nr]))) {
|
||||
nv_debug(object, "handle 0x%08x not found\n", path[nr]);
|
||||
nvif_debug(object, "handle 0x%08x not found\n", path[nr]);
|
||||
return -ENOENT;
|
||||
}
|
||||
nvkm_namedb_put(handle);
|
||||
@@ -479,7 +480,7 @@ nvkm_ioctl_path(struct nvkm_handle *parent, u32 type, u32 nr, u32 *path,
|
||||
}
|
||||
|
||||
if (owner != NVIF_IOCTL_V0_OWNER_ANY && owner != handle->route) {
|
||||
nv_ioctl(object, "object route != owner\n");
|
||||
nvif_ioctl(object, "object route != owner\n");
|
||||
return -EACCES;
|
||||
}
|
||||
*route = handle->route;
|
||||
@@ -497,25 +498,26 @@ int
|
||||
nvkm_ioctl(struct nvkm_client *client, bool supervisor,
|
||||
void *data, u32 size, void **hack)
|
||||
{
|
||||
struct nvkm_object *object = &client->namedb.parent.object;
|
||||
union {
|
||||
struct nvif_ioctl_v0 v0;
|
||||
} *args = data;
|
||||
int ret;
|
||||
|
||||
client->super = supervisor;
|
||||
nv_ioctl(client, "size %d\n", size);
|
||||
nvif_ioctl(object, "size %d\n", size);
|
||||
|
||||
if (nvif_unpack(args->v0, 0, 0, true)) {
|
||||
nv_ioctl(client, "vers %d type %02x path %d owner %02x\n",
|
||||
args->v0.version, args->v0.type, args->v0.path_nr,
|
||||
args->v0.owner);
|
||||
nvif_ioctl(object, "vers %d type %02x path %d owner %02x\n",
|
||||
args->v0.version, args->v0.type, args->v0.path_nr,
|
||||
args->v0.owner);
|
||||
ret = nvkm_ioctl_path(client->root, args->v0.type,
|
||||
args->v0.path_nr, args->v0.path,
|
||||
data, size, args->v0.owner,
|
||||
&args->v0.route, &args->v0.token);
|
||||
}
|
||||
|
||||
nv_ioctl(client, "return %d\n", ret);
|
||||
nvif_ioctl(object, "return %d\n", ret);
|
||||
if (hack) {
|
||||
*hack = client->data;
|
||||
client->data = NULL;
|
||||
|
||||
@@ -24,11 +24,6 @@
|
||||
#include <core/object.h>
|
||||
#include <core/engine.h>
|
||||
|
||||
#ifdef NVKM_OBJECT_MAGIC
|
||||
static struct list_head _objlist = LIST_HEAD_INIT(_objlist);
|
||||
static DEFINE_SPINLOCK(_objlist_lock);
|
||||
#endif
|
||||
|
||||
int
|
||||
nvkm_object_create_(struct nvkm_object *parent, struct nvkm_object *engine,
|
||||
struct nvkm_oclass *oclass, u32 pclass,
|
||||
@@ -49,9 +44,6 @@ nvkm_object_create_(struct nvkm_object *parent, struct nvkm_object *engine,
|
||||
|
||||
#ifdef NVKM_OBJECT_MAGIC
|
||||
object->_magic = NVKM_OBJECT_MAGIC;
|
||||
spin_lock(&_objlist_lock);
|
||||
list_add(&object->list, &_objlist);
|
||||
spin_unlock(&_objlist_lock);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
@@ -69,11 +61,6 @@ _nvkm_object_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
|
||||
void
|
||||
nvkm_object_destroy(struct nvkm_object *object)
|
||||
{
|
||||
#ifdef NVKM_OBJECT_MAGIC
|
||||
spin_lock(&_objlist_lock);
|
||||
list_del(&object->list);
|
||||
spin_unlock(&_objlist_lock);
|
||||
#endif
|
||||
nvkm_object_ref(NULL, (struct nvkm_object **)&object->engine);
|
||||
nvkm_object_ref(NULL, &object->parent);
|
||||
kfree(object);
|
||||
@@ -111,11 +98,6 @@ nvkm_object_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
|
||||
ret = ofuncs->ctor(parent, engine, oclass, data, size, &object);
|
||||
*pobject = object;
|
||||
if (ret < 0) {
|
||||
if (ret != -ENODEV) {
|
||||
nv_error(parent, "failed to create 0x%08x, %d\n",
|
||||
oclass->handle, ret);
|
||||
}
|
||||
|
||||
if (object) {
|
||||
ofuncs->dtor(object);
|
||||
*pobject = NULL;
|
||||
@@ -125,7 +107,6 @@ nvkm_object_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
|
||||
}
|
||||
|
||||
if (ret == 0) {
|
||||
nv_trace(object, "created\n");
|
||||
atomic_set(&object->refcount, 1);
|
||||
}
|
||||
|
||||
@@ -135,7 +116,6 @@ nvkm_object_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
|
||||
static void
|
||||
nvkm_object_dtor(struct nvkm_object *object)
|
||||
{
|
||||
nv_trace(object, "destroying\n");
|
||||
nv_ofuncs(object)->dtor(object);
|
||||
}
|
||||
|
||||
@@ -144,12 +124,10 @@ nvkm_object_ref(struct nvkm_object *obj, struct nvkm_object **ref)
|
||||
{
|
||||
if (obj) {
|
||||
atomic_inc(&obj->refcount);
|
||||
nv_trace(obj, "inc() == %d\n", atomic_read(&obj->refcount));
|
||||
}
|
||||
|
||||
if (*ref) {
|
||||
int dead = atomic_dec_and_test(&(*ref)->refcount);
|
||||
nv_trace(*ref, "dec() == %d\n", atomic_read(&(*ref)->refcount));
|
||||
if (dead)
|
||||
nvkm_object_dtor(*ref);
|
||||
}
|
||||
@@ -163,37 +141,28 @@ nvkm_object_inc(struct nvkm_object *object)
|
||||
int ref = atomic_add_return(1, &object->usecount);
|
||||
int ret;
|
||||
|
||||
nv_trace(object, "use(+1) == %d\n", atomic_read(&object->usecount));
|
||||
if (ref != 1)
|
||||
return 0;
|
||||
|
||||
nv_trace(object, "initialising...\n");
|
||||
if (object->parent) {
|
||||
ret = nvkm_object_inc(object->parent);
|
||||
if (ret) {
|
||||
nv_error(object, "parent failed, %d\n", ret);
|
||||
if (ret)
|
||||
goto fail_parent;
|
||||
}
|
||||
}
|
||||
|
||||
if (object->engine) {
|
||||
mutex_lock(&nv_subdev(object->engine)->mutex);
|
||||
ret = nvkm_object_inc(&object->engine->subdev.object);
|
||||
mutex_unlock(&nv_subdev(object->engine)->mutex);
|
||||
if (ret) {
|
||||
nv_error(object, "engine failed, %d\n", ret);
|
||||
if (ret)
|
||||
goto fail_engine;
|
||||
}
|
||||
}
|
||||
|
||||
ret = nv_ofuncs(object)->init(object);
|
||||
atomic_set(&object->usecount, 1);
|
||||
if (ret) {
|
||||
nv_error(object, "init failed, %d\n", ret);
|
||||
if (ret)
|
||||
goto fail_self;
|
||||
}
|
||||
|
||||
nv_trace(object, "initialised\n");
|
||||
return 0;
|
||||
|
||||
fail_self:
|
||||
@@ -213,14 +182,8 @@ fail_parent:
|
||||
static int
|
||||
nvkm_object_decf(struct nvkm_object *object)
|
||||
{
|
||||
int ret;
|
||||
|
||||
nv_trace(object, "stopping...\n");
|
||||
|
||||
ret = nv_ofuncs(object)->fini(object, false);
|
||||
nv_ofuncs(object)->fini(object, false);
|
||||
atomic_set(&object->usecount, 0);
|
||||
if (ret)
|
||||
nv_warn(object, "failed fini, %d\n", ret);
|
||||
|
||||
if (object->engine) {
|
||||
mutex_lock(&nv_subdev(object->engine)->mutex);
|
||||
@@ -231,58 +194,44 @@ nvkm_object_decf(struct nvkm_object *object)
|
||||
if (object->parent)
|
||||
nvkm_object_dec(object->parent, false);
|
||||
|
||||
nv_trace(object, "stopped\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
nvkm_object_decs(struct nvkm_object *object)
|
||||
{
|
||||
int ret, rret;
|
||||
|
||||
nv_trace(object, "suspending...\n");
|
||||
int ret;
|
||||
|
||||
ret = nv_ofuncs(object)->fini(object, true);
|
||||
atomic_set(&object->usecount, 0);
|
||||
if (ret) {
|
||||
nv_error(object, "failed suspend, %d\n", ret);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (object->engine) {
|
||||
mutex_lock(&nv_subdev(object->engine)->mutex);
|
||||
ret = nvkm_object_dec(&object->engine->subdev.object, true);
|
||||
mutex_unlock(&nv_subdev(object->engine)->mutex);
|
||||
if (ret) {
|
||||
nv_warn(object, "engine failed suspend, %d\n", ret);
|
||||
if (ret)
|
||||
goto fail_engine;
|
||||
}
|
||||
}
|
||||
|
||||
if (object->parent) {
|
||||
ret = nvkm_object_dec(object->parent, true);
|
||||
if (ret) {
|
||||
nv_warn(object, "parent failed suspend, %d\n", ret);
|
||||
if (ret)
|
||||
goto fail_parent;
|
||||
}
|
||||
}
|
||||
|
||||
nv_trace(object, "suspended\n");
|
||||
return 0;
|
||||
|
||||
fail_parent:
|
||||
if (object->engine) {
|
||||
mutex_lock(&nv_subdev(object->engine)->mutex);
|
||||
rret = nvkm_object_inc(&object->engine->subdev.object);
|
||||
nvkm_object_inc(&object->engine->subdev.object);
|
||||
mutex_unlock(&nv_subdev(object->engine)->mutex);
|
||||
if (rret)
|
||||
nv_fatal(object, "engine failed to reinit, %d\n", rret);
|
||||
}
|
||||
|
||||
fail_engine:
|
||||
rret = nv_ofuncs(object)->init(object);
|
||||
if (rret)
|
||||
nv_fatal(object, "failed to reinit, %d\n", rret);
|
||||
nv_ofuncs(object)->init(object);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -293,8 +242,6 @@ nvkm_object_dec(struct nvkm_object *object, bool suspend)
|
||||
int ref = atomic_add_return(-1, &object->usecount);
|
||||
int ret;
|
||||
|
||||
nv_trace(object, "use(-1) == %d\n", atomic_read(&object->usecount));
|
||||
|
||||
if (ref == 0) {
|
||||
if (suspend)
|
||||
ret = nvkm_object_decs(object);
|
||||
@@ -309,22 +256,3 @@ nvkm_object_dec(struct nvkm_object *object, bool suspend)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
nvkm_object_debug(void)
|
||||
{
|
||||
#ifdef NVKM_OBJECT_MAGIC
|
||||
struct nvkm_object *object;
|
||||
if (!list_empty(&_objlist)) {
|
||||
nv_fatal(NULL, "*******************************************\n");
|
||||
nv_fatal(NULL, "* AIIIII! object(s) still exist!!!\n");
|
||||
nv_fatal(NULL, "*******************************************\n");
|
||||
list_for_each_entry(object, &_objlist, list) {
|
||||
nv_fatal(object, "%p/%p/%d/%d\n",
|
||||
object->parent, object->engine,
|
||||
atomic_read(&object->refcount),
|
||||
atomic_read(&object->usecount));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user