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

drm/nouveau: pass cli to nouveau_channel_new() instead of drm+device



Both of these are stored in nouveau_cli already, and also allows the
removal of some void casts.

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-32-bskeggs@nvidia.com
parent 3019023e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1172,7 +1172,7 @@ nv04_crtc_page_flip(struct drm_crtc *crtc, struct drm_framebuffer *fb,
	chan = drm->channel;
	if (!chan)
		return -ENODEV;
	cli = (void *)chan->user.client;
	cli = chan->cli;
	push = chan->chan.push;

	s = kzalloc(sizeof(*s), GFP_KERNEL);
+1 −1
Original line number Diff line number Diff line
@@ -405,7 +405,7 @@ nouveau_abi16_ioctl_channel_alloc(ABI16_IOCTL_ARGS)
	list_add(&chan->head, &abi16->channels);

	/* create channel object and initialise dma and fence management */
	ret = nouveau_channel_new(drm, device, false, runm, init->fb_ctxdma_handle,
	ret = nouveau_channel_new(cli, false, runm, init->fb_ctxdma_handle,
				  init->tt_ctxdma_handle, &chan->chan);
	if (ret)
		goto done;
+1 −1
Original line number Diff line number Diff line
@@ -859,7 +859,7 @@ nouveau_bo_move_m2mf(struct ttm_buffer_object *bo, int evict,
{
	struct nouveau_drm *drm = nouveau_bdev(bo->bdev);
	struct nouveau_channel *chan = drm->ttm.chan;
	struct nouveau_cli *cli = (void *)chan->user.client;
	struct nouveau_cli *cli = chan->cli;
	struct nouveau_fence *fence;
	int ret;

+11 −10
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@ static int
nouveau_channel_killed(struct nvif_event *event, void *repv, u32 repc)
{
	struct nouveau_channel *chan = container_of(event, typeof(*chan), kill);
	struct nouveau_cli *cli = (void *)chan->user.client;
	struct nouveau_cli *cli = chan->cli;

	NV_PRINTK(warn, cli, "channel %d killed!\n", chan->chid);

@@ -66,7 +66,7 @@ int
nouveau_channel_idle(struct nouveau_channel *chan)
{
	if (likely(chan && chan->fence && !atomic_read(&chan->killed))) {
		struct nouveau_cli *cli = (void *)chan->user.client;
		struct nouveau_cli *cli = chan->cli;
		struct nouveau_fence *fence = NULL;
		int ret;

@@ -142,10 +142,11 @@ nouveau_channel_wait(struct nvif_push *push, u32 size)
}

static int
nouveau_channel_prep(struct nouveau_drm *drm, struct nvif_device *device,
nouveau_channel_prep(struct nouveau_cli *cli,
		     u32 size, struct nouveau_channel **pchan)
{
	struct nouveau_cli *cli = (void *)device->object.client;
	struct nouveau_drm *drm = cli->drm;
	struct nvif_device *device = &cli->device;
	struct nv_dma_v0 args = {};
	struct nouveau_channel *chan;
	u32 target;
@@ -155,6 +156,7 @@ nouveau_channel_prep(struct nouveau_drm *drm, struct nvif_device *device,
	if (!chan)
		return -ENOMEM;

	chan->cli = cli;
	chan->device = device;
	chan->drm = drm;
	chan->vmm = nouveau_cli_vmm(cli);
@@ -253,7 +255,7 @@ nouveau_channel_prep(struct nouveau_drm *drm, struct nvif_device *device,
}

static int
nouveau_channel_ctor(struct nouveau_drm *drm, struct nvif_device *device, bool priv, u64 runm,
nouveau_channel_ctor(struct nouveau_cli *cli, bool priv, u64 runm,
		     struct nouveau_channel **pchan)
{
	const struct nvif_mclass hosts[] = {
@@ -278,7 +280,7 @@ nouveau_channel_ctor(struct nouveau_drm *drm, struct nvif_device *device, bool p
		struct nvif_chan_v0 chan;
		char name[TASK_COMM_LEN+16];
	} args;
	struct nouveau_cli *cli = (void *)device->object.client;
	struct nvif_device *device = &cli->device;
	struct nouveau_channel *chan;
	const u64 plength = 0x10000;
	const u64 ioffset = plength;
@@ -297,7 +299,7 @@ nouveau_channel_ctor(struct nouveau_drm *drm, struct nvif_device *device, bool p
		size = ioffset + ilength;

	/* allocate dma push buffer */
	ret = nouveau_channel_prep(drm, device, size, &chan);
	ret = nouveau_channel_prep(cli, size, &chan);
	*pchan = chan;
	if (ret)
		return ret;
@@ -492,13 +494,12 @@ nouveau_channel_init(struct nouveau_channel *chan, u32 vram, u32 gart)
}

int
nouveau_channel_new(struct nouveau_drm *drm, struct nvif_device *device,
nouveau_channel_new(struct nouveau_cli *cli,
		    bool priv, u64 runm, u32 vram, u32 gart, struct nouveau_channel **pchan)
{
	struct nouveau_cli *cli = (void *)device->object.client;
	int ret;

	ret = nouveau_channel_ctor(drm, device, priv, runm, pchan);
	ret = nouveau_channel_ctor(cli, priv, runm, pchan);
	if (ret) {
		NV_PRINTK(dbg, cli, "channel create, %d\n", ret);
		return ret;
+2 −1
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ struct nouveau_channel {
		struct nvif_push *push;
	} chan;

	struct nouveau_cli *cli;
	struct nvif_device *device;
	struct nouveau_drm *drm;
	struct nouveau_vmm *vmm;
@@ -62,7 +63,7 @@ struct nouveau_channel {
int nouveau_channels_init(struct nouveau_drm *);
void nouveau_channels_fini(struct nouveau_drm *);

int  nouveau_channel_new(struct nouveau_drm *, struct nvif_device *, bool priv, u64 runm,
int  nouveau_channel_new(struct nouveau_cli *, bool priv, u64 runm,
			 u32 vram, u32 gart, struct nouveau_channel **);
void nouveau_channel_del(struct nouveau_channel **);
int  nouveau_channel_idle(struct nouveau_channel *);
Loading