Commit fabc65d1 authored by Ben Skeggs's avatar Ben Skeggs Committed by Danilo Krummrich

drm/nouveau/nvif: remove device args

These were once used by used by userspace tools (with nvkm built as a
library), to access multiple GPUs from a single nvif_client.

The DRM code just uses the driver's default device, so remove the
arguments.
Signed-off-by: default avatarBen Skeggs <bskeggs@nvidia.com>
Signed-off-by: default avatarDanilo Krummrich <dakr@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20240726043828.58966-24-bskeggs@nvidia.com
parent 246b228e
...@@ -2,13 +2,6 @@ ...@@ -2,13 +2,6 @@
#ifndef __NVIF_CL0080_H__ #ifndef __NVIF_CL0080_H__
#define __NVIF_CL0080_H__ #define __NVIF_CL0080_H__
struct nv_device_v0 {
__u8 version;
__u8 priv;
__u8 pad02[6];
__u64 device; /* device identifier, ~0 for client default */
};
#define NV_DEVICE_V0_INFO 0x00 #define NV_DEVICE_V0_INFO 0x00
#define NV_DEVICE_V0_TIME 0x01 #define NV_DEVICE_V0_TIME 0x01
......
...@@ -18,8 +18,7 @@ struct nvif_device { ...@@ -18,8 +18,7 @@ struct nvif_device {
struct nvif_user user; struct nvif_user user;
}; };
int nvif_device_ctor(struct nvif_object *, const char *name, u32 handle, int nvif_device_ctor(struct nvif_client *, const char *name, struct nvif_device *);
s32 oclass, void *, u32, struct nvif_device *);
void nvif_device_dtor(struct nvif_device *); void nvif_device_dtor(struct nvif_device *);
u64 nvif_device_time(struct nvif_device *); u64 nvif_device_time(struct nvif_device *);
......
...@@ -261,12 +261,7 @@ nouveau_cli_init(struct nouveau_drm *drm, const char *sname, ...@@ -261,12 +261,7 @@ nouveau_cli_init(struct nouveau_drm *drm, const char *sname,
goto done; goto done;
} }
ret = nvif_device_ctor(&cli->base.object, "drmDevice", 0, NV_DEVICE, ret = nvif_device_ctor(&cli->base, "drmDevice", &cli->device);
&(struct nv_device_v0) {
.device = ~0,
.priv = true,
}, sizeof(struct nv_device_v0),
&cli->device);
if (ret) { if (ret) {
NV_PRINTK(err, cli, "Device allocation failed: %d\n", ret); NV_PRINTK(err, cli, "Device allocation failed: %d\n", ret);
goto done; goto done;
......
...@@ -21,8 +21,8 @@ ...@@ -21,8 +21,8 @@
* *
* Authors: Ben Skeggs <bskeggs@redhat.com> * Authors: Ben Skeggs <bskeggs@redhat.com>
*/ */
#include <nvif/device.h> #include <nvif/device.h>
#include <nvif/client.h>
u64 u64
nvif_device_time(struct nvif_device *device) nvif_device_time(struct nvif_device *device)
...@@ -48,11 +48,10 @@ nvif_device_dtor(struct nvif_device *device) ...@@ -48,11 +48,10 @@ nvif_device_dtor(struct nvif_device *device)
} }
int int
nvif_device_ctor(struct nvif_object *parent, const char *name, u32 handle, nvif_device_ctor(struct nvif_client *client, const char *name, struct nvif_device *device)
s32 oclass, void *data, u32 size, struct nvif_device *device)
{ {
int ret = nvif_object_ctor(parent, name ? name : "nvifDevice", handle, int ret = nvif_object_ctor(&client->object, name ? name : "nvifDevice", 0,
oclass, data, size, &device->object); 0x0080, NULL, 0, &device->object);
device->runlist = NULL; device->runlist = NULL;
device->user.func = NULL; device->user.func = NULL;
if (ret == 0) { if (ret == 0) {
......
...@@ -357,7 +357,7 @@ nvkm_udevice_child_get(struct nvkm_object *object, int index, ...@@ -357,7 +357,7 @@ nvkm_udevice_child_get(struct nvkm_object *object, int index,
} }
static const struct nvkm_object_func static const struct nvkm_object_func
nvkm_udevice_super = { nvkm_udevice = {
.init = nvkm_udevice_init, .init = nvkm_udevice_init,
.fini = nvkm_udevice_fini, .fini = nvkm_udevice_fini,
.mthd = nvkm_udevice_mthd, .mthd = nvkm_udevice_mthd,
...@@ -371,50 +371,20 @@ nvkm_udevice_super = { ...@@ -371,50 +371,20 @@ nvkm_udevice_super = {
.sclass = nvkm_udevice_child_get, .sclass = nvkm_udevice_child_get,
}; };
static const struct nvkm_object_func
nvkm_udevice = {
.init = nvkm_udevice_init,
.fini = nvkm_udevice_fini,
.mthd = nvkm_udevice_mthd,
.sclass = nvkm_udevice_child_get,
};
static int static int
nvkm_udevice_new(const struct nvkm_oclass *oclass, void *data, u32 size, nvkm_udevice_new(const struct nvkm_oclass *oclass, void *data, u32 size,
struct nvkm_object **pobject) struct nvkm_object **pobject)
{ {
union {
struct nv_device_v0 v0;
} *args = data;
struct nvkm_client *client = oclass->client; struct nvkm_client *client = oclass->client;
struct nvkm_object *parent = &client->object;
const struct nvkm_object_func *func;
struct nvkm_udevice *udev; struct nvkm_udevice *udev;
int ret = -ENOSYS;
nvif_ioctl(parent, "create device size %d\n", size);
if (!(ret = nvif_unpack(ret, &data, &size, args->v0, 0, 0, false))) {
nvif_ioctl(parent, "create device v%d device %016llx\n",
args->v0.version, args->v0.device);
} else
return ret;
/* give priviledged clients register access */
if (args->v0.priv)
func = &nvkm_udevice_super;
else
func = &nvkm_udevice;
if (!(udev = kzalloc(sizeof(*udev), GFP_KERNEL))) if (!(udev = kzalloc(sizeof(*udev), GFP_KERNEL)))
return -ENOMEM; return -ENOMEM;
nvkm_object_ctor(func, oclass, &udev->object); nvkm_object_ctor(&nvkm_udevice, oclass, &udev->object);
*pobject = &udev->object; *pobject = &udev->object;
/* find the device that matches what the client requested */ /* find the device that matches what the client requested */
if (args->v0.device != ~0) udev->device = nvkm_device_find(client->device);
udev->device = nvkm_device_find(args->v0.device);
else
udev->device = nvkm_device_find(client->device);
if (!udev->device) if (!udev->device)
return -ENODEV; return -ENODEV;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment