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

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
Loading
Loading
Loading
Loading
+0 −7
Original line number Diff line number Diff line
@@ -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

+1 −2
Original line number Diff line number Diff line
@@ -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 *);

+1 −6
Original line number Diff line number Diff line
@@ -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;
+4 −5
Original line number Diff line number Diff line
@@ -21,8 +21,8 @@
 *
 * Authors: Ben Skeggs <bskeggs@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) {
+3 −33
Original line number Diff line number Diff line
@@ -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,49 +371,19 @@ 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);
	if (!udev->device)
		return -ENODEV;