tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 058affafc65a74cf54499fb578b66ad0b18f939b commit: d803336abdbc1bfacdb32b2cf9f4fdbee072b8ee [4678/13104] ARM: mm: kill unused runtime hook arch_iounmap() config: arm-allmodconfig (https://download.01.org/0day-ci/archive/20220727/202207270505.m8vohRrn-lkp@xxxxxxxxx/config) compiler: arm-linux-gnueabi-gcc (GCC) 12.1.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.4-39-gce1a6720-dirty # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=d803336abdbc1bfacdb32b2cf9f4fdbee072b8ee git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git fetch --no-tags linux-next master git checkout d803336abdbc1bfacdb32b2cf9f4fdbee072b8ee # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=arm SHELL=/bin/bash drivers/gpu/drm/ If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot <lkp@xxxxxxxxx> sparse warnings: (new ones prefixed by >>) drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c:104:58: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c:104:58: sparse: expected void volatile [noderef] __iomem *addr drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c:104:58: sparse: got void * drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c:110:58: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c:110:58: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c:110:58: sparse: got void * >> drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c:157:25: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void volatile [noderef] __iomem *io_addr @@ got void *[assigned] emap @@ drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c:157:25: sparse: expected void volatile [noderef] __iomem *io_addr drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c:157:25: sparse: got void *[assigned] emap drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c:174:19: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void *map @@ got void [noderef] __iomem * @@ drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c:174:19: sparse: expected void *map drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c:174:19: sparse: got void [noderef] __iomem * drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c:225:28: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void [noderef] __iomem * @@ got void *map @@ drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c:225:28: sparse: expected void [noderef] __iomem * drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c:225:28: sparse: got void *map drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c:233:28: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void [noderef] __iomem * @@ got void *map @@ drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c:233:28: sparse: expected void [noderef] __iomem * drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c:233:28: sparse: got void *map drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c:240:21: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void [noderef] __iomem *map @@ got void *map @@ drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c:240:21: sparse: expected void [noderef] __iomem *map drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c:240:21: sparse: got void *map >> drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c:327:25: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void volatile [noderef] __iomem *io_addr @@ got void *[assigned] map @@ drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c:327:25: sparse: expected void volatile [noderef] __iomem *io_addr drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c:327:25: sparse: got void *[assigned] map -- drivers/gpu/drm/msm/adreno/a6xx_gmu.c:224:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:224:15: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:224:15: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:224:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:224:15: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:224:15: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:240:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:240:15: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:240:15: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:240:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:240:15: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:240:15: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:322:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:322:15: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:322:15: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:322:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:322:15: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:322:15: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:366:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:366:15: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:366:15: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:366:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:366:15: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:366:15: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:391:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:391:15: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:391:15: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:391:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:391:15: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:391:15: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:464:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:464:15: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:464:15: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:464:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:464:15: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:464:15: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:471:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:471:15: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:471:15: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:471:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:471:15: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:471:15: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:497:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:497:15: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:497:15: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:497:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:497:15: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:497:15: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1418:31: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void [noderef] __iomem * @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1418:31: sparse: expected void [noderef] __iomem * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1418:31: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1424:31: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void [noderef] __iomem * @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1424:31: sparse: expected void [noderef] __iomem * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1424:31: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:862:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:862:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:862:9: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:862:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:862:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:862:9: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:864:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:864:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:864:9: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:864:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:864:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:864:9: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:866:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:866:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:866:9: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:866:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:866:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:866:9: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:868:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:868:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:868:9: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:868:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:868:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:868:9: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1070:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1070:23: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1070:23: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1070:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1070:23: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1070:23: sparse: got void * >> drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1464:20: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void volatile [noderef] __iomem *io_addr @@ got void *[noderef] mmio @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1464:20: sparse: expected void volatile [noderef] __iomem *io_addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1464:20: sparse: got void *[noderef] mmio >> drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1466:28: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void volatile [noderef] __iomem *io_addr @@ got void *[noderef] rscc @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1466:28: sparse: expected void volatile [noderef] __iomem *io_addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1466:28: sparse: got void *[noderef] rscc drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1573:19: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void *[noderef] mmio @@ got void [noderef] __iomem * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1573:19: sparse: expected void *[noderef] mmio drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1573:19: sparse: got void [noderef] __iomem * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1580:27: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void *[noderef] rscc @@ got void [noderef] __iomem * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1580:27: sparse: expected void *[noderef] rscc drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1580:27: sparse: got void [noderef] __iomem * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1611:20: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void volatile [noderef] __iomem *io_addr @@ got void *[noderef] mmio @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1611:20: sparse: expected void volatile [noderef] __iomem *io_addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1611:20: sparse: got void *[noderef] mmio drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1613:28: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void volatile [noderef] __iomem *io_addr @@ got void *[noderef] rscc @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1613:28: sparse: expected void volatile [noderef] __iomem *io_addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1613:28: sparse: got void *[noderef] rscc drivers/gpu/drm/msm/adreno/a6xx_gmu.c: note: in included file (through drivers/gpu/drm/msm/adreno/a6xx_gpu.h): drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: expected void volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: expected void volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: expected void volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: expected void volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: expected void volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:96:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: expected void volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: expected void volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: expected void volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:224:15: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:224:15: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:224:15: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:224:15: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:101:16: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void * @@ vim +157 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c 07bbc1c5f49b64 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 100 be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 101 static void be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 102 nv50_instobj_wr32(struct nvkm_memory *memory, u64 offset, u32 data) be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 103 { be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 @104 iowrite32_native(data, nv50_instobj(memory)->map + offset); be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 105 } be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 106 be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 107 static u32 be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 108 nv50_instobj_rd32(struct nvkm_memory *memory, u64 offset) be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 109 { be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 110 return ioread32_native(nv50_instobj(memory)->map + offset); be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 111 } be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 112 be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 113 static const struct nvkm_memory_ptrs be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 114 nv50_instobj_fast = { be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 115 .rd32 = nv50_instobj_rd32, be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 116 .wr32 = nv50_instobj_wr32, be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 117 }; be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 118 f584bde6095af4 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 119 static void f584bde6095af4 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 120 nv50_instobj_kmap(struct nv50_instobj *iobj, struct nvkm_vmm *vmm) f584bde6095af4 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 121 { be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 122 struct nv50_instmem *imem = iobj->imem; 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 123 struct nv50_instobj *eobj; be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 124 struct nvkm_memory *memory = &iobj->base.memory; be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 125 struct nvkm_subdev *subdev = &imem->base.subdev; f584bde6095af4 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 126 struct nvkm_device *device = subdev->device; 9202d732e6bc3b drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 127 struct nvkm_vma *bar = NULL, *ebar; f584bde6095af4 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 128 u64 size = nvkm_memory_size(memory); 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 129 void *emap; f584bde6095af4 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 130 int ret; f584bde6095af4 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 131 be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 132 /* Attempt to allocate BAR2 address-space and map the object be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 133 * into it. The lock has to be dropped while doing this due be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 134 * to the possibility of recursion for page table allocation. be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 135 */ e5bf9a5ce5da32 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2020-12-02 136 mutex_unlock(&imem->base.mutex); 9202d732e6bc3b drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 137 while ((ret = nvkm_vmm_get(vmm, 12, size, &bar))) { 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 138 /* Evict unused mappings, and keep retrying until we either 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 139 * succeed,or there's no more objects left on the LRU. 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 140 */ e5bf9a5ce5da32 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2020-12-02 141 mutex_lock(&imem->base.mutex); 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 142 eobj = list_first_entry_or_null(&imem->lru, typeof(*eobj), lru); 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 143 if (eobj) { 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 144 nvkm_debug(subdev, "evict %016llx %016llx @ %016llx\n", 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 145 nvkm_memory_addr(&eobj->base.memory), 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 146 nvkm_memory_size(&eobj->base.memory), 9202d732e6bc3b drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 147 eobj->bar->addr); 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 148 list_del_init(&eobj->lru); 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 149 ebar = eobj->bar; 9202d732e6bc3b drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 150 eobj->bar = NULL; 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 151 emap = eobj->map; 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 152 eobj->map = NULL; 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 153 } e5bf9a5ce5da32 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2020-12-02 154 mutex_unlock(&imem->base.mutex); 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 155 if (!eobj) 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 156 break; 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 @157 iounmap(emap); 9202d732e6bc3b drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 158 nvkm_vmm_put(vmm, &ebar); 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 159 } 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 160 be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 161 if (ret == 0) 9202d732e6bc3b drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 162 ret = nvkm_memory_map(memory, 0, vmm, bar, NULL, 0); e5bf9a5ce5da32 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2020-12-02 163 mutex_lock(&imem->base.mutex); 9202d732e6bc3b drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 164 if (ret || iobj->bar) { be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 165 /* We either failed, or another thread beat us. */ e5bf9a5ce5da32 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2020-12-02 166 mutex_unlock(&imem->base.mutex); 9202d732e6bc3b drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 167 nvkm_vmm_put(vmm, &bar); e5bf9a5ce5da32 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2020-12-02 168 mutex_lock(&imem->base.mutex); be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 169 return; be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 170 } f584bde6095af4 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 171 be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 172 /* Make the mapping visible to the host. */ be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 173 iobj->bar = bar; dfcbd5506817c7 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 174 iobj->map = ioremap_wc(device->func->resource_addr(device, 3) + 9202d732e6bc3b drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 175 (u32)iobj->bar->addr, size); be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 176 if (!iobj->map) { f584bde6095af4 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 177 nvkm_warn(subdev, "PRAMIN ioremap failed\n"); 9202d732e6bc3b drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 178 nvkm_vmm_put(vmm, &iobj->bar); f584bde6095af4 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 179 } f584bde6095af4 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 180 } f584bde6095af4 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 181 19a82e492c3d71 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 182 static int 19a82e492c3d71 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 183 nv50_instobj_map(struct nvkm_memory *memory, u64 offset, struct nvkm_vmm *vmm, 19a82e492c3d71 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 184 struct nvkm_vma *vma, void *argv, u32 argc) 07bbc1c5f49b64 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 185 { 7f4f82af6e48c2 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 186 memory = nv50_instobj(memory)->ram; 7f4f82af6e48c2 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 187 return nvkm_memory_map(memory, offset, vmm, vma, argv, argc); d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 188 } d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 189 d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 190 static void d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 191 nv50_instobj_release(struct nvkm_memory *memory) d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 192 { be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 193 struct nv50_instobj *iobj = nv50_instobj(memory); be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 194 struct nv50_instmem *imem = iobj->imem; be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 195 struct nvkm_subdev *subdev = &imem->base.subdev; be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 196 dfcbd5506817c7 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 197 wmb(); be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 198 nvkm_bar_flush(subdev->device->bar); be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 199 e5bf9a5ce5da32 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2020-12-02 200 if (refcount_dec_and_mutex_lock(&iobj->maps, &imem->base.mutex)) { 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 201 /* Add the now-unused mapping to the LRU instead of directly 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 202 * unmapping it here, in case we need to map it again later. 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 203 */ 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 204 if (likely(iobj->lru.next) && iobj->map) { 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 205 BUG_ON(!list_empty(&iobj->lru)); 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 206 list_add_tail(&iobj->lru, &imem->lru); 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 207 } 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 208 be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 209 /* Switch back to NULL accessors when last map is gone. */ ffd937bbd21933 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 210 iobj->base.memory.ptrs = NULL; e5bf9a5ce5da32 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2020-12-02 211 mutex_unlock(&imem->base.mutex); be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 212 } d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 213 } d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 214 d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 215 static void __iomem * d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 216 nv50_instobj_acquire(struct nvkm_memory *memory) d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 217 { d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 218 struct nv50_instobj *iobj = nv50_instobj(memory); be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 219 struct nvkm_instmem *imem = &iobj->imem->base; be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 220 struct nvkm_vmm *vmm; be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 221 void __iomem *map = NULL; be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 222 be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 223 /* Already mapped? */ be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 224 if (refcount_inc_not_zero(&iobj->maps)) be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 @225 return iobj->map; d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 226 be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 227 /* Take the lock, and re-check that another thread hasn't be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 228 * already mapped the object in the meantime. be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 229 */ e5bf9a5ce5da32 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2020-12-02 230 mutex_lock(&imem->mutex); be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 231 if (refcount_inc_not_zero(&iobj->maps)) { e5bf9a5ce5da32 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2020-12-02 232 mutex_unlock(&imem->mutex); d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 233 return iobj->map; be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 234 } d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 235 be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 236 /* Attempt to get a direct CPU mapping of the object. */ 69b136f200006e drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 237 if ((vmm = nvkm_bar_bar2_vmm(imem->subdev.device))) { 69b136f200006e drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 238 if (!iobj->map) be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 239 nv50_instobj_kmap(iobj, vmm); be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 240 map = iobj->map; 69b136f200006e drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 241 } be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 242 be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 243 if (!refcount_inc_not_zero(&iobj->maps)) { 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 244 /* Exclude object from eviction while it's being accessed. */ 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 245 if (likely(iobj->lru.next)) 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 246 list_del_init(&iobj->lru); 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 247 be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 248 if (map) be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 249 iobj->base.memory.ptrs = &nv50_instobj_fast; be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 250 else be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 251 iobj->base.memory.ptrs = &nv50_instobj_slow; 81a24b9ae8eea9 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-12-07 252 refcount_set(&iobj->maps, 1); be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 253 } be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 254 e5bf9a5ce5da32 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2020-12-02 255 mutex_unlock(&imem->mutex); be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 256 return map; d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 257 } 6ee738610f41b5 drivers/gpu/drm/nouveau/nv50_instmem.c Ben Skeggs 2009-12-11 258 07bbc1c5f49b64 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 259 static void f584bde6095af4 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 260 nv50_instobj_boot(struct nvkm_memory *memory, struct nvkm_vmm *vmm) 6ee738610f41b5 drivers/gpu/drm/nouveau/nv50_instmem.c Ben Skeggs 2009-12-11 261 { d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 262 struct nv50_instobj *iobj = nv50_instobj(memory); be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 263 struct nvkm_instmem *imem = &iobj->imem->base; be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 264 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 265 /* Exclude bootstrapped objects (ie. the page tables for the 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 266 * instmem BAR itself) from eviction. 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 267 */ e5bf9a5ce5da32 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2020-12-02 268 mutex_lock(&imem->mutex); 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 269 if (likely(iobj->lru.next)) { 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 270 list_del_init(&iobj->lru); 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 271 iobj->lru.next = NULL; 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 272 } 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 273 f584bde6095af4 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 274 nv50_instobj_kmap(iobj, vmm); b00b8430468d29 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 275 nvkm_instmem_boot(imem); e5bf9a5ce5da32 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2020-12-02 276 mutex_unlock(&imem->mutex); 6ee738610f41b5 drivers/gpu/drm/nouveau/nv50_instmem.c Ben Skeggs 2009-12-11 277 } 6ee738610f41b5 drivers/gpu/drm/nouveau/nv50_instmem.c Ben Skeggs 2009-12-11 278 07bbc1c5f49b64 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 279 static u64 07bbc1c5f49b64 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 280 nv50_instobj_size(struct nvkm_memory *memory) 6ee738610f41b5 drivers/gpu/drm/nouveau/nv50_instmem.c Ben Skeggs 2009-12-11 281 { 7f4f82af6e48c2 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 282 return nvkm_memory_size(nv50_instobj(memory)->ram); 3863c9bc887e96 drivers/gpu/drm/nouveau/core/subdev/instmem/nv50.c Ben Skeggs 2012-07-14 283 } 07bbc1c5f49b64 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 284 07bbc1c5f49b64 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 285 static u64 07bbc1c5f49b64 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 286 nv50_instobj_addr(struct nvkm_memory *memory) 07bbc1c5f49b64 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 287 { 7f4f82af6e48c2 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 288 return nvkm_memory_addr(nv50_instobj(memory)->ram); 3863c9bc887e96 drivers/gpu/drm/nouveau/core/subdev/instmem/nv50.c Ben Skeggs 2012-07-14 289 } 3863c9bc887e96 drivers/gpu/drm/nouveau/core/subdev/instmem/nv50.c Ben Skeggs 2012-07-14 290 1786bf56e4180d drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2018-12-11 291 static u64 1786bf56e4180d drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2018-12-11 292 nv50_instobj_bar2(struct nvkm_memory *memory) 1786bf56e4180d drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2018-12-11 293 { 1786bf56e4180d drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2018-12-11 294 struct nv50_instobj *iobj = nv50_instobj(memory); 1786bf56e4180d drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2018-12-11 295 u64 addr = ~0ULL; 1786bf56e4180d drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2018-12-11 296 if (nv50_instobj_acquire(&iobj->base.memory)) { 1786bf56e4180d drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2018-12-11 297 iobj->lru.next = NULL; /* Exclude from eviction. */ 1786bf56e4180d drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2018-12-11 298 addr = iobj->bar->addr; 1786bf56e4180d drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2018-12-11 299 } 1786bf56e4180d drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2018-12-11 300 nv50_instobj_release(&iobj->base.memory); 1786bf56e4180d drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2018-12-11 301 return addr; 1786bf56e4180d drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2018-12-11 302 } 1786bf56e4180d drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2018-12-11 303 07bbc1c5f49b64 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 304 static enum nvkm_memory_target 07bbc1c5f49b64 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 305 nv50_instobj_target(struct nvkm_memory *memory) d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 306 { 7f4f82af6e48c2 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 307 return nvkm_memory_target(nv50_instobj(memory)->ram); d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 308 } d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 309 d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 310 static void * d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 311 nv50_instobj_dtor(struct nvkm_memory *memory) ab606194d1f582 drivers/gpu/drm/nouveau/core/subdev/instmem/nv50.c Ben Skeggs 2013-12-23 312 { d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 313 struct nv50_instobj *iobj = nv50_instobj(memory); be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 314 struct nvkm_instmem *imem = &iobj->imem->base; 9202d732e6bc3b drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 315 struct nvkm_vma *bar; 2046e733e125fa drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Guo Zhengkui 2022-02-28 316 void *map; 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 317 e5bf9a5ce5da32 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2020-12-02 318 mutex_lock(&imem->mutex); 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 319 if (likely(iobj->lru.next)) 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 320 list_del(&iobj->lru); 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 321 map = iobj->map; 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 322 bar = iobj->bar; e5bf9a5ce5da32 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2020-12-02 323 mutex_unlock(&imem->mutex); 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 324 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 325 if (map) { 9202d732e6bc3b drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 326 struct nvkm_vmm *vmm = nvkm_bar_bar2_vmm(imem->subdev.device); 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 @327 iounmap(map); 9202d732e6bc3b drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 328 if (likely(vmm)) /* Can be NULL during BAR destructor. */ 9202d732e6bc3b drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 329 nvkm_vmm_put(vmm, &bar); ab606194d1f582 drivers/gpu/drm/nouveau/core/subdev/instmem/nv50.c Ben Skeggs 2013-12-23 330 } 03edf1b31a0912 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 331 7f4f82af6e48c2 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 332 nvkm_memory_unref(&iobj->ram); be55287aa5ba68 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2017-11-01 333 nvkm_instobj_dtor(imem, &iobj->base); d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 334 return iobj; d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 335 } d8e83994aaf674 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c Ben Skeggs 2015-08-20 336 :::::: The code at line 157 was first introduced by commit :::::: 03edf1b31a091254e95793a688abf02b96cfdd85 drm/nouveau/imem/nv50: support eviction of BAR2 mappings :::::: TO: Ben Skeggs <bskeggs@xxxxxxxxxx> :::::: CC: Ben Skeggs <bskeggs@xxxxxxxxxx> -- 0-DAY CI Kernel Test Service https://01.org/lkp