On Fri, Jul 05, 2024 at 04:37:07AM +1000, Ben Skeggs wrote: > 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 we can remove > the arguments. "so remove the argument." Sorry for repeating that, I somehow missed the point to say "here and for subsequent commits". > > Signed-off-by: Ben Skeggs <bskeggs@xxxxxxxxxx> > --- > drivers/gpu/drm/nouveau/include/nvif/cl0080.h | 7 ---- > drivers/gpu/drm/nouveau/include/nvif/device.h | 3 +- > drivers/gpu/drm/nouveau/nouveau_drm.c | 7 +--- > drivers/gpu/drm/nouveau/nvif/device.c | 9 +++-- > .../gpu/drm/nouveau/nvkm/engine/device/user.c | 36 ++----------------- > 5 files changed, 9 insertions(+), 53 deletions(-) > > diff --git a/drivers/gpu/drm/nouveau/include/nvif/cl0080.h b/drivers/gpu/drm/nouveau/include/nvif/cl0080.h > index fa161b74d967..ea937fa7bc55 100644 > --- a/drivers/gpu/drm/nouveau/include/nvif/cl0080.h > +++ b/drivers/gpu/drm/nouveau/include/nvif/cl0080.h > @@ -2,13 +2,6 @@ > #ifndef __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_TIME 0x01 > > diff --git a/drivers/gpu/drm/nouveau/include/nvif/device.h b/drivers/gpu/drm/nouveau/include/nvif/device.h > index b0e59800a320..f7c1b3a43c84 100644 > --- a/drivers/gpu/drm/nouveau/include/nvif/device.h > +++ b/drivers/gpu/drm/nouveau/include/nvif/device.h > @@ -18,8 +18,7 @@ struct nvif_device { > struct nvif_user user; > }; > > -int nvif_device_ctor(struct nvif_object *, const char *name, u32 handle, > - s32 oclass, void *, u32, struct nvif_device *); > +int nvif_device_ctor(struct nvif_client *, const char *name, struct nvif_device *); > void nvif_device_dtor(struct nvif_device *); > u64 nvif_device_time(struct nvif_device *); > > diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c > index 8951a0805239..0beeff8552a2 100644 > --- a/drivers/gpu/drm/nouveau/nouveau_drm.c > +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c > @@ -261,12 +261,7 @@ nouveau_cli_init(struct nouveau_drm *drm, const char *sname, > goto done; > } > > - ret = nvif_device_ctor(&cli->base.object, "drmDevice", 0, NV_DEVICE, > - &(struct nv_device_v0) { > - .device = ~0, > - .priv = true, > - }, sizeof(struct nv_device_v0), > - &cli->device); > + ret = nvif_device_ctor(&cli->base, "drmDevice", &cli->device); > if (ret) { > NV_PRINTK(err, cli, "Device allocation failed: %d\n", ret); > goto done; > diff --git a/drivers/gpu/drm/nouveau/nvif/device.c b/drivers/gpu/drm/nouveau/nvif/device.c > index 8c3d883f3313..b14bccb9a93f 100644 > --- a/drivers/gpu/drm/nouveau/nvif/device.c > +++ b/drivers/gpu/drm/nouveau/nvif/device.c > @@ -21,8 +21,8 @@ > * > * Authors: Ben Skeggs <bskeggs@xxxxxxxxxx> > */ > - > #include <nvif/device.h> > +#include <nvif/client.h> > > u64 > nvif_device_time(struct nvif_device *device) > @@ -48,11 +48,10 @@ nvif_device_dtor(struct nvif_device *device) > } > > int > -nvif_device_ctor(struct nvif_object *parent, const char *name, u32 handle, > - s32 oclass, void *data, u32 size, struct nvif_device *device) > +nvif_device_ctor(struct nvif_client *client, const char *name, struct nvif_device *device) > { > - int ret = nvif_object_ctor(parent, name ? name : "nvifDevice", handle, > - oclass, data, size, &device->object); > + int ret = nvif_object_ctor(&client->object, name ? name : "nvifDevice", 0, > + 0x0080, NULL, 0, &device->object); > device->runlist = NULL; > device->user.func = NULL; > if (ret == 0) { > diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/device/user.c b/drivers/gpu/drm/nouveau/nvkm/engine/device/user.c > index d937c54e8dfa..65bd6712bce2 100644 > --- a/drivers/gpu/drm/nouveau/nvkm/engine/device/user.c > +++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/user.c > @@ -357,7 +357,7 @@ nvkm_udevice_child_get(struct nvkm_object *object, int index, > } > > static const struct nvkm_object_func > -nvkm_udevice_super = { > +nvkm_udevice = { > .init = nvkm_udevice_init, > .fini = nvkm_udevice_fini, > .mthd = nvkm_udevice_mthd, > @@ -371,50 +371,20 @@ nvkm_udevice_super = { > .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 > nvkm_udevice_new(const struct nvkm_oclass *oclass, void *data, u32 size, > struct nvkm_object **pobject) > { > - union { > - struct nv_device_v0 v0; > - } *args = data; > struct nvkm_client *client = oclass->client; > - struct nvkm_object *parent = &client->object; > - const struct nvkm_object_func *func; > 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))) > return -ENOMEM; > - nvkm_object_ctor(func, oclass, &udev->object); > + nvkm_object_ctor(&nvkm_udevice, oclass, &udev->object); > *pobject = &udev->object; > > /* find the device that matches what the client requested */ > - if (args->v0.device != ~0) > - udev->device = nvkm_device_find(args->v0.device); > - else > - udev->device = nvkm_device_find(client->device); > + udev->device = nvkm_device_find(client->device); > if (!udev->device) > return -ENODEV; > > -- > 2.45.1 >