[PATCH v2 23/37] drm/nouveau/nvif: remove device args
Danilo Krummrich
dakr at redhat.com
Tue Jul 9 16:18:58 UTC 2024
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 at nvidia.com>
> ---
> 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 at redhat.com>
> */
> -
> #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
>
More information about the Nouveau
mailing list