From 05da248bbe91fecb29e1f2fb9b978c4d2ee6da8e Mon Sep 17 00:00:00 2001 From: Ben Skeggs Date: Wed, 25 May 2016 17:02:11 +1000 Subject: [PATCH] drm/nouveau/core/client: destroy client objects over nvif Preparation for supporting subclients, and also good for consistency. Signed-off-by: Ben Skeggs --- drivers/gpu/drm/nouveau/nouveau_nvif.c | 10 ---------- drivers/gpu/drm/nouveau/nvif/client.c | 6 +++--- drivers/gpu/drm/nouveau/nvkm/core/ioctl.c | 13 +++++++------ 3 files changed, 10 insertions(+), 19 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_nvif.c b/drivers/gpu/drm/nouveau/nouveau_nvif.c index 5219da4805b5..69341a65dc42 100644 --- a/drivers/gpu/drm/nouveau/nouveau_nvif.c +++ b/drivers/gpu/drm/nouveau/nouveau_nvif.c @@ -71,15 +71,6 @@ nvkm_client_suspend(void *priv) return nvkm_object_fini(&client->object, true); } -static void -nvkm_client_driver_fini(void *priv) -{ - struct nvkm_client *client = priv; - struct nvkm_object *object = &client->object; - nvkm_object_fini(object, false); - nvkm_object_del(&object); -} - static int nvkm_client_ntfy(const void *header, u32 length, const void *data, u32 size) { @@ -128,7 +119,6 @@ const struct nvif_driver nvif_driver_nvkm = { .name = "nvkm", .init = nvkm_client_driver_init, - .fini = nvkm_client_driver_fini, .suspend = nvkm_client_suspend, .resume = nvkm_client_resume, .ioctl = nvkm_client_ioctl, diff --git a/drivers/gpu/drm/nouveau/nvif/client.c b/drivers/gpu/drm/nouveau/nvif/client.c index 29c20dfd894d..ad1307b6f783 100644 --- a/drivers/gpu/drm/nouveau/nvif/client.c +++ b/drivers/gpu/drm/nouveau/nvif/client.c @@ -47,11 +47,11 @@ nvif_client_resume(struct nvif_client *client) void nvif_client_fini(struct nvif_client *client) { + nvif_object_fini(&client->object); if (client->driver) { - client->driver->fini(client->object.priv); + if (client->driver->fini) + client->driver->fini(client->object.priv); client->driver = NULL; - client->object.client = NULL; - nvif_object_fini(&client->object); } } diff --git a/drivers/gpu/drm/nouveau/nvkm/core/ioctl.c b/drivers/gpu/drm/nouveau/nvkm/core/ioctl.c index 25c800b426ca..be19bbe56bba 100644 --- a/drivers/gpu/drm/nouveau/nvkm/core/ioctl.c +++ b/drivers/gpu/drm/nouveau/nvkm/core/ioctl.c @@ -158,7 +158,7 @@ nvkm_ioctl_del(struct nvkm_client *client, nvkm_object_del(&object); } - return ret; + return ret ? ret : 1; } static int @@ -441,12 +441,13 @@ nvkm_ioctl(struct nvkm_client *client, bool supervisor, &args->v0.route, &args->v0.token); } - nvif_ioctl(object, "return %d\n", ret); - if (hack) { - *hack = client->data; - client->data = NULL; + if (ret != 1) { + nvif_ioctl(object, "return %d\n", ret); + if (hack) { + *hack = client->data; + client->data = NULL; + } } - client->super = false; return ret; } -- 2.20.1