]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drm/nouveau: pass cli to nouveau_channel_new() instead of drm+device
authorBen Skeggs <bskeggs@nvidia.com>
Fri, 26 Jul 2024 04:38:22 +0000 (14:38 +1000)
committerDanilo Krummrich <dakr@kernel.org>
Sat, 27 Jul 2024 01:05:43 +0000 (03:05 +0200)
Both of these are stored in nouveau_cli already, and also allows the
removal of some void casts.

Signed-off-by: Ben Skeggs <bskeggs@nvidia.com>
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20240726043828.58966-32-bskeggs@nvidia.com
drivers/gpu/drm/nouveau/dispnv04/crtc.c
drivers/gpu/drm/nouveau/nouveau_abi16.c
drivers/gpu/drm/nouveau/nouveau_bo.c
drivers/gpu/drm/nouveau/nouveau_chan.c
drivers/gpu/drm/nouveau/nouveau_chan.h
drivers/gpu/drm/nouveau/nouveau_drm.c

index 98736f6eab16f03af45fc98a35e774bf73166ab7..2ac5b6b904dbc369c4fa451b2466007571e24497 100644 (file)
@@ -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);
index 768912cc5d8a5b76013492fbbe00b8920a07c955..2a0617e5fe2ac154d8a529689efeed8fe54e3908 100644 (file)
@@ -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;
index 6631d85ea749bb7db2f25a2179da9cab66787b13..745b7d7503f71a5812cf1510d71b7942b5fca141 100644 (file)
@@ -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;
 
index 16e0a87e030ac489ad7021830cbf35a5c56fcf3f..e18a80fda2ca20507dc0bd5f4272eb12e100272d 100644 (file)
@@ -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;
index 5de2ef4e98c2bb111d23462eef426734e0074c38..260febd634ee21676dfce72bdcd681189d7dd556 100644 (file)
@@ -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 *);
index 6b33d1d0a4eb196db3965f490e3ac59285b77587..8b9c463d21ac98e6436aa27dcff8c972c3cc577b 100644 (file)
@@ -335,7 +335,7 @@ nouveau_accel_ce_init(struct nouveau_drm *drm)
                return;
        }
 
-       ret = nouveau_channel_new(drm, device, false, runm, NvDmaFB, NvDmaTT, &drm->cechan);
+       ret = nouveau_channel_new(&drm->client, false, runm, NvDmaFB, NvDmaTT, &drm->cechan);
        if (ret)
                NV_ERROR(drm, "failed to create ce channel, %d\n", ret);
 }
@@ -363,7 +363,7 @@ nouveau_accel_gr_init(struct nouveau_drm *drm)
                return;
        }
 
-       ret = nouveau_channel_new(drm, device, false, runm, NvDmaFB, NvDmaTT, &drm->channel);
+       ret = nouveau_channel_new(&drm->client, false, runm, NvDmaFB, NvDmaTT, &drm->channel);
        if (ret) {
                NV_ERROR(drm, "failed to create kernel channel, %d\n", ret);
                nouveau_accel_gr_fini(drm);