[<prev] [next>] [day] [month] [year] [list]
Message-ID: <alpine.DEB.2.22.394.2312272155490.3107@hadrien>
Date: Wed, 27 Dec 2023 21:56:46 +0100 (CET)
From: Julia Lawall <julia.lawall@...ia.fr>
To: Ben Skeggs <bskeggs@...hat.com>, Lyude Paul <lyude@...hat.com>
cc: linux-kernel@...r.kernel.org, oe-kbuild-all@...ts.linux.dev
Subject: drivers/gpu/drm/nouveau/nvkm/engine/fifo/chan.c:258:2-8: preceding
lock on line 251 (fwd)
Hello,
There is no bug here, but it could be nice to refer to the lock in the
same way at all call sites (see line 258.
julia
---------- Forwarded message ----------
Date: Wed, 27 Dec 2023 22:34:45 +0800
From: kernel test robot <lkp@...el.com>
To: oe-kbuild@...ts.linux.dev
Cc: lkp@...el.com, Julia Lawall <julia.lawall@...ia.fr>
Subject: drivers/gpu/drm/nouveau/nvkm/engine/fifo/chan.c:258:2-8: preceding lock
on line 251
BCC: lkp@...el.com
CC: oe-kbuild-all@...ts.linux.dev
CC: linux-kernel@...r.kernel.org
TO: Ben Skeggs <bskeggs@...hat.com>
CC: Lyude Paul <lyude@...hat.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: fbafc3e621c3f4ded43720fdb1d6ce1728ec664e
commit: f48dd2936138882d7755cbbc5d9984015c75980c drm/nouveau/fifo: add new engine context tracking
date: 1 year, 2 months ago
:::::: branch date: 2 days ago
:::::: commit date: 1 year, 2 months ago
config: loongarch-randconfig-r062-20231222 (https://download.01.org/0day-ci/archive/20231227/202312272217.k0uoS8R5-lkp@intel.com/config)
compiler: loongarch64-linux-gcc (GCC) 13.2.0
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@...el.com>
| Reported-by: Julia Lawall <julia.lawall@...ia.fr>
| Closes: https://lore.kernel.org/r/202312272217.k0uoS8R5-lkp@intel.com/
cocci warnings: (new ones prefixed by >>)
>> drivers/gpu/drm/nouveau/nvkm/engine/fifo/chan.c:258:2-8: preceding lock on line 251
vim +258 drivers/gpu/drm/nouveau/nvkm/engine/fifo/chan.c
f48dd293613888 Ben Skeggs 2022-06-01 240
f48dd293613888 Ben Skeggs 2022-06-01 241 int
f48dd293613888 Ben Skeggs 2022-06-01 242 nvkm_chan_cctx_get(struct nvkm_chan *chan, struct nvkm_engn *engn, struct nvkm_cctx **pcctx,
f48dd293613888 Ben Skeggs 2022-06-01 243 struct nvkm_client *client)
f48dd293613888 Ben Skeggs 2022-06-01 244 {
f48dd293613888 Ben Skeggs 2022-06-01 245 struct nvkm_cgrp *cgrp = chan->cgrp;
f48dd293613888 Ben Skeggs 2022-06-01 246 struct nvkm_vctx *vctx;
f48dd293613888 Ben Skeggs 2022-06-01 247 struct nvkm_cctx *cctx;
f48dd293613888 Ben Skeggs 2022-06-01 248 int ret;
f48dd293613888 Ben Skeggs 2022-06-01 249
f48dd293613888 Ben Skeggs 2022-06-01 250 /* Look for an existing channel context for this engine+VEID. */
f48dd293613888 Ben Skeggs 2022-06-01 @251 mutex_lock(&cgrp->mutex);
f48dd293613888 Ben Skeggs 2022-06-01 252 cctx = nvkm_list_find(cctx, &chan->cctxs, head,
f48dd293613888 Ben Skeggs 2022-06-01 253 cctx->vctx->ectx->engn == engn && cctx->vctx->vmm == chan->vmm);
f48dd293613888 Ben Skeggs 2022-06-01 254 if (cctx) {
f48dd293613888 Ben Skeggs 2022-06-01 255 refcount_inc(&cctx->refs);
f48dd293613888 Ben Skeggs 2022-06-01 256 *pcctx = cctx;
f48dd293613888 Ben Skeggs 2022-06-01 257 mutex_unlock(&chan->cgrp->mutex);
f48dd293613888 Ben Skeggs 2022-06-01 @258 return 0;
f48dd293613888 Ben Skeggs 2022-06-01 259 }
f48dd293613888 Ben Skeggs 2022-06-01 260
f48dd293613888 Ben Skeggs 2022-06-01 261 /* Nope - create a fresh one. But, sub-context first. */
f48dd293613888 Ben Skeggs 2022-06-01 262 ret = nvkm_cgrp_vctx_get(cgrp, engn, chan, &vctx, client);
f48dd293613888 Ben Skeggs 2022-06-01 263 if (ret) {
f48dd293613888 Ben Skeggs 2022-06-01 264 CHAN_ERROR(chan, "vctx %d[%s]: %d", engn->id, engn->engine->subdev.name, ret);
f48dd293613888 Ben Skeggs 2022-06-01 265 goto done;
f48dd293613888 Ben Skeggs 2022-06-01 266 }
f48dd293613888 Ben Skeggs 2022-06-01 267
f48dd293613888 Ben Skeggs 2022-06-01 268 /* Now, create the channel context - to track engine binding. */
f48dd293613888 Ben Skeggs 2022-06-01 269 CHAN_TRACE(chan, "ctor cctx %d[%s]", engn->id, engn->engine->subdev.name);
f48dd293613888 Ben Skeggs 2022-06-01 270 if (!(cctx = *pcctx = kzalloc(sizeof(*cctx), GFP_KERNEL))) {
f48dd293613888 Ben Skeggs 2022-06-01 271 nvkm_cgrp_vctx_put(cgrp, &vctx);
f48dd293613888 Ben Skeggs 2022-06-01 272 ret = -ENOMEM;
f48dd293613888 Ben Skeggs 2022-06-01 273 goto done;
f48dd293613888 Ben Skeggs 2022-06-01 274 }
f48dd293613888 Ben Skeggs 2022-06-01 275
f48dd293613888 Ben Skeggs 2022-06-01 276 cctx->vctx = vctx;
f48dd293613888 Ben Skeggs 2022-06-01 277 refcount_set(&cctx->refs, 1);
f48dd293613888 Ben Skeggs 2022-06-01 278 refcount_set(&cctx->uses, 0);
f48dd293613888 Ben Skeggs 2022-06-01 279 list_add_tail(&cctx->head, &chan->cctxs);
f48dd293613888 Ben Skeggs 2022-06-01 280 done:
f48dd293613888 Ben Skeggs 2022-06-01 281 mutex_unlock(&cgrp->mutex);
f48dd293613888 Ben Skeggs 2022-06-01 282 return ret;
f48dd293613888 Ben Skeggs 2022-06-01 283 }
f48dd293613888 Ben Skeggs 2022-06-01 284
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Powered by blists - more mailing lists