Re: [PATCH v2 23/37] drm/nouveau/nvif: remove device args

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]<

 



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
> 




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux