Hi Su, kernel test robot noticed the following build warnings: [auto build test WARNING on drm-misc/drm-misc-next] [also build test WARNING on linus/master v6.4-rc7 next-20230623] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Su-Hui/drm-amd-amdgpu-Properly-tune-the-size-of-struct/20230620-130013 base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next patch link: https://lore.kernel.org/r/20230620045919.492128-1-suhui%40nfschina.com patch subject: [PATCH] drm/amd/amdgpu: Properly tune the size of struct config: m68k-randconfig-r093-20230625 (https://download.01.org/0day-ci/archive/20230626/202306260550.SInEbMd3-lkp@xxxxxxxxx/config) compiler: m68k-linux-gcc (GCC) 12.3.0 reproduce: (https://download.01.org/0day-ci/archive/20230626/202306260550.SInEbMd3-lkp@xxxxxxxxx/reproduce) 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@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202306260550.SInEbMd3-lkp@xxxxxxxxx/ sparse warnings: (new ones prefixed by >>) drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:275:21: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:275:21: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:275:21: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:275:21: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:275:21: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:275:21: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:280:34: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:280:34: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:280:34: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:280:34: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:280:34: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:280:34: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:281:34: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:281:34: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:281:34: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:281:34: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:281:34: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:281:34: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:306:30: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:306:30: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:306:30: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:306:30: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:306:30: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:306:30: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:307:30: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:307:30: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:307:30: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:307:30: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:307:30: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:307:30: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:308:30: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:308:30: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:308:30: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:308:30: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:308:30: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:308:30: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:314:40: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:314:40: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:314:40: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:314:40: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:314:40: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:314:40: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:320:28: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:320:28: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:320:28: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:320:28: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:320:28: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:320:28: sparse: sparse: cast to restricted __le32 >> drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:458:75: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const volatile [noderef] __iomem *src @@ got void *[assigned] ptr @@ drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:458:75: sparse: expected void const volatile [noderef] __iomem *src drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:458:75: sparse: got void *[assigned] ptr >> drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:487:45: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void volatile [noderef] __iomem *dst @@ got void *[assigned] ptr @@ drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:487:45: sparse: expected void volatile [noderef] __iomem *dst drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:487:45: sparse: got void *[assigned] ptr drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:498:42: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:498:42: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:498:42: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:498:42: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:498:42: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:498:42: sparse: sparse: cast to restricted __le32 >> drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:500:70: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void volatile [noderef] __iomem *dst @@ got void *cpu_addr @@ drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:500:70: sparse: expected void volatile [noderef] __iomem *dst drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:500:70: sparse: got void *cpu_addr drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:501:53: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:501:53: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:501:53: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:501:53: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:501:53: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:501:53: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:504:41: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:504:41: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:504:41: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:504:41: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:504:41: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:504:41: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:505:40: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:505:40: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:505:40: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:505:40: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:505:40: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:505:40: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:507:35: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void *[assigned] ptr @@ drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:507:35: sparse: expected void volatile [noderef] __iomem *addr drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:507:35: sparse: got void *[assigned] ptr drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:769:35: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:769:35: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:769:35: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:769:35: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:769:35: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:769:35: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1204:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1204:16: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1204:16: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1205:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1205:16: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1205:16: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1206:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1206:16: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1206:16: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1207:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1207:16: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1207:16: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1208:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1208:16: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1208:16: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1209:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1209:16: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1209:16: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1210:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1210:16: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1210:16: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1211:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1211:16: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1211:16: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1212:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1212:16: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1212:16: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1213:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1213:16: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1213:16: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1214:17: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1214:17: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1214:17: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1216:24: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1216:24: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1216:24: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1240:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1240:16: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1240:16: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1241:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1241:16: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1241:16: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1242:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1242:16: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1242:16: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1243:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1243:16: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1243:16: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1245:24: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1245:24: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c:1245:24: sparse: got restricted __le32 [usertype] -- drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:171:25: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:171:25: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:171:25: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:171:25: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:171:25: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:171:25: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:309:18: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:309:18: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:309:18: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:309:18: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:309:18: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:309:18: sparse: sparse: cast to restricted __le32 >> drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:312:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void volatile [noderef] __iomem *dst @@ got void *[addressable] cpu_addr @@ drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:312:29: sparse: expected void volatile [noderef] __iomem *dst drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:312:29: sparse: got void *[addressable] cpu_addr -- drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:139:32: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:139:32: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:139:32: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:139:32: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:139:32: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:139:32: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:147:21: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:147:21: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:147:21: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:147:21: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:147:21: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:147:21: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:151:26: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:151:26: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:151:26: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:151:26: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:151:26: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:151:26: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:152:30: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:152:30: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:152:30: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:152:30: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:152:30: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:152:30: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:154:28: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:154:28: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:154:28: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:154:28: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:154:28: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:154:28: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:155:24: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:155:24: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:155:24: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:155:24: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:155:24: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:155:24: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:161:29: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:161:29: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:161:29: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:161:29: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:161:29: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:161:29: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:162:34: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:162:34: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:162:34: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:162:34: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:162:34: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:162:34: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:163:34: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:163:34: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:163:34: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:163:34: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:163:34: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:163:34: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:170:28: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:170:28: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:170:28: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:170:28: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:170:28: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:170:28: sparse: sparse: cast to restricted __le32 >> drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:311:67: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const volatile [noderef] __iomem *src @@ got void *[assigned] ptr @@ drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:311:67: sparse: expected void const volatile [noderef] __iomem *src drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:311:67: sparse: got void *[assigned] ptr >> drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:335:45: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void volatile [noderef] __iomem *dst @@ got void *[assigned] ptr @@ drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:335:45: sparse: expected void volatile [noderef] __iomem *dst drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:335:45: sparse: got void *[assigned] ptr drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:346:42: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:346:42: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:346:42: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:346:42: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:346:42: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:346:42: sparse: sparse: cast to restricted __le32 >> drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:348:70: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void volatile [noderef] __iomem *dst @@ got void *cpu_addr @@ drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:348:70: sparse: expected void volatile [noderef] __iomem *dst drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:348:70: sparse: got void *cpu_addr drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:349:53: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:349:53: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:349:53: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:349:53: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:349:53: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:349:53: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:352:41: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:352:41: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:352:41: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:352:41: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:352:41: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:352:41: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:353:40: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:353:40: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:353:40: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:353:40: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:353:40: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:353:40: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:355:35: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got void *[assigned] ptr @@ drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:355:35: sparse: expected void volatile [noderef] __iomem *addr drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:355:35: sparse: got void *[assigned] ptr drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:583:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:583:16: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:583:16: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:584:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:584:16: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:584:16: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:585:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:585:16: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:585:16: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:586:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:586:16: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:586:16: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:587:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:587:16: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:587:16: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:588:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:588:16: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:588:16: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:589:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:589:16: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:589:16: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:590:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:590:16: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:590:16: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:591:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:591:16: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:591:16: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:592:16: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:592:16: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:592:16: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:593:17: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __le32 [usertype] @@ drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:593:17: sparse: expected unsigned int [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:593:17: sparse: got restricted __le32 [usertype] drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c:594:17: sparse: sparse: too many warnings -- drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:457:25: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:457:25: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:457:25: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:457:25: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:457:25: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:457:25: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:457:25: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:457:25: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:457:25: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:457:25: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:457:25: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:457:25: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:457:25: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:457:25: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:457:25: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:457:25: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:457:25: sparse: sparse: cast to restricted __le32 drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:457:25: sparse: sparse: cast to restricted __le32 >> drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:574:59: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const volatile [noderef] __iomem *src @@ got void *ptr @@ drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:574:59: sparse: expected void const volatile [noderef] __iomem *src drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:574:59: sparse: got void *ptr >> drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:623:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void volatile [noderef] __iomem *dst @@ got void *ptr @@ drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:623:37: sparse: expected void volatile [noderef] __iomem *dst drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:623:37: sparse: got void *ptr drivers/gpu/drm/amd/amdgpu/vce_v4_0.c:1081:27: sparse: sparse: symbol 'vce_v4_0_ip_funcs' was not declared. Should it be static? -- drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/smu7_smumgr.c:65:25: sparse: sparse: cast to restricted __be32 drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/smu7_smumgr.c:74:26: sparse: sparse: cast to restricted __be32 >> drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/smu7_smumgr.c:411:44: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void volatile [noderef] __iomem *dst @@ got void *kaddr @@ drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/smu7_smumgr.c:411:44: sparse: expected void volatile [noderef] __iomem *dst drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/smu7_smumgr.c:411:44: sparse: got void *kaddr vim +458 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c d38ceaf99ed015 Alex Deucher 2015-04-20 183 d38ceaf99ed015 Alex Deucher 2015-04-20 184 int amdgpu_uvd_sw_init(struct amdgpu_device *adev) d38ceaf99ed015 Alex Deucher 2015-04-20 185 { d38ceaf99ed015 Alex Deucher 2015-04-20 186 unsigned long bo_size; d38ceaf99ed015 Alex Deucher 2015-04-20 187 const char *fw_name; d38ceaf99ed015 Alex Deucher 2015-04-20 188 const struct common_firmware_header *hdr; f10984a353c87e Srinivasan Shanmugam 2023-05-17 189 unsigned int family_id; 10dd74eac4dba9 James Zhu 2018-05-15 190 int i, j, r; d38ceaf99ed015 Alex Deucher 2015-04-20 191 5c53d19b76dccb James Zhu 2018-06-18 192 INIT_DELAYED_WORK(&adev->uvd.idle_work, amdgpu_uvd_idle_work_handler); d38ceaf99ed015 Alex Deucher 2015-04-20 193 d38ceaf99ed015 Alex Deucher 2015-04-20 194 switch (adev->asic_type) { d1af7ac24fd70f Sonny Jiang 2020-06-10 195 #ifdef CONFIG_DRM_AMDGPU_SI d1af7ac24fd70f Sonny Jiang 2020-06-10 196 case CHIP_TAHITI: d1af7ac24fd70f Sonny Jiang 2020-06-10 197 fw_name = FIRMWARE_TAHITI; d1af7ac24fd70f Sonny Jiang 2020-06-10 198 break; d1af7ac24fd70f Sonny Jiang 2020-06-10 199 case CHIP_VERDE: d1af7ac24fd70f Sonny Jiang 2020-06-10 200 fw_name = FIRMWARE_VERDE; d1af7ac24fd70f Sonny Jiang 2020-06-10 201 break; d1af7ac24fd70f Sonny Jiang 2020-06-10 202 case CHIP_PITCAIRN: d1af7ac24fd70f Sonny Jiang 2020-06-10 203 fw_name = FIRMWARE_PITCAIRN; d1af7ac24fd70f Sonny Jiang 2020-06-10 204 break; d1af7ac24fd70f Sonny Jiang 2020-06-10 205 case CHIP_OLAND: d1af7ac24fd70f Sonny Jiang 2020-06-10 206 fw_name = FIRMWARE_OLAND; d1af7ac24fd70f Sonny Jiang 2020-06-10 207 break; d1af7ac24fd70f Sonny Jiang 2020-06-10 208 #endif d38ceaf99ed015 Alex Deucher 2015-04-20 209 #ifdef CONFIG_DRM_AMDGPU_CIK d38ceaf99ed015 Alex Deucher 2015-04-20 210 case CHIP_BONAIRE: d38ceaf99ed015 Alex Deucher 2015-04-20 211 fw_name = FIRMWARE_BONAIRE; d38ceaf99ed015 Alex Deucher 2015-04-20 212 break; d38ceaf99ed015 Alex Deucher 2015-04-20 213 case CHIP_KABINI: d38ceaf99ed015 Alex Deucher 2015-04-20 214 fw_name = FIRMWARE_KABINI; d38ceaf99ed015 Alex Deucher 2015-04-20 215 break; d38ceaf99ed015 Alex Deucher 2015-04-20 216 case CHIP_KAVERI: d38ceaf99ed015 Alex Deucher 2015-04-20 217 fw_name = FIRMWARE_KAVERI; d38ceaf99ed015 Alex Deucher 2015-04-20 218 break; d38ceaf99ed015 Alex Deucher 2015-04-20 219 case CHIP_HAWAII: d38ceaf99ed015 Alex Deucher 2015-04-20 220 fw_name = FIRMWARE_HAWAII; d38ceaf99ed015 Alex Deucher 2015-04-20 221 break; d38ceaf99ed015 Alex Deucher 2015-04-20 222 case CHIP_MULLINS: d38ceaf99ed015 Alex Deucher 2015-04-20 223 fw_name = FIRMWARE_MULLINS; d38ceaf99ed015 Alex Deucher 2015-04-20 224 break; d38ceaf99ed015 Alex Deucher 2015-04-20 225 #endif d38ceaf99ed015 Alex Deucher 2015-04-20 226 case CHIP_TONGA: d38ceaf99ed015 Alex Deucher 2015-04-20 227 fw_name = FIRMWARE_TONGA; d38ceaf99ed015 Alex Deucher 2015-04-20 228 break; 974ee3db0ff88e David Zhang 2015-07-08 229 case CHIP_FIJI: 974ee3db0ff88e David Zhang 2015-07-08 230 fw_name = FIRMWARE_FIJI; 974ee3db0ff88e David Zhang 2015-07-08 231 break; d38ceaf99ed015 Alex Deucher 2015-04-20 232 case CHIP_CARRIZO: d38ceaf99ed015 Alex Deucher 2015-04-20 233 fw_name = FIRMWARE_CARRIZO; d38ceaf99ed015 Alex Deucher 2015-04-20 234 break; a39c8cea3512bd Samuel Li 2015-10-08 235 case CHIP_STONEY: a39c8cea3512bd Samuel Li 2015-10-08 236 fw_name = FIRMWARE_STONEY; a39c8cea3512bd Samuel Li 2015-10-08 237 break; 2cc0c0b5cd4d07 Flora Cui 2016-03-14 238 case CHIP_POLARIS10: 2cc0c0b5cd4d07 Flora Cui 2016-03-14 239 fw_name = FIRMWARE_POLARIS10; 38d75817649508 Sonny Jiang 2015-11-05 240 break; 2cc0c0b5cd4d07 Flora Cui 2016-03-14 241 case CHIP_POLARIS11: 2cc0c0b5cd4d07 Flora Cui 2016-03-14 242 fw_name = FIRMWARE_POLARIS11; c4642a479fac9f Junwei Zhang 2016-12-14 243 break; 2327e6261ab2bc Alex Deucher 2017-09-01 244 case CHIP_POLARIS12: 2327e6261ab2bc Alex Deucher 2017-09-01 245 fw_name = FIRMWARE_POLARIS12; 2327e6261ab2bc Alex Deucher 2017-09-01 246 break; 09bfb8912dc163 Leo Liu 2017-03-03 247 case CHIP_VEGA10: 09bfb8912dc163 Leo Liu 2017-03-03 248 fw_name = FIRMWARE_VEGA10; 09bfb8912dc163 Leo Liu 2017-03-03 249 break; 2327e6261ab2bc Alex Deucher 2017-09-01 250 case CHIP_VEGA12: 2327e6261ab2bc Alex Deucher 2017-09-01 251 fw_name = FIRMWARE_VEGA12; 38d75817649508 Sonny Jiang 2015-11-05 252 break; ba8f7ad0e5b258 Leo Liu 2017-11-10 253 case CHIP_VEGAM: ba8f7ad0e5b258 Leo Liu 2017-11-10 254 fw_name = FIRMWARE_VEGAM; ba8f7ad0e5b258 Leo Liu 2017-11-10 255 break; cac18c82e0c5b3 Feifei Xu 2018-05-11 256 case CHIP_VEGA20: cac18c82e0c5b3 Feifei Xu 2018-05-11 257 fw_name = FIRMWARE_VEGA20; cac18c82e0c5b3 Feifei Xu 2018-05-11 258 break; d38ceaf99ed015 Alex Deucher 2015-04-20 259 default: d38ceaf99ed015 Alex Deucher 2015-04-20 260 return -EINVAL; d38ceaf99ed015 Alex Deucher 2015-04-20 261 } d38ceaf99ed015 Alex Deucher 2015-04-20 262 b406477c614f08 Mario Limonciello 2023-01-04 263 r = amdgpu_ucode_request(adev, &adev->uvd.fw, fw_name); d38ceaf99ed015 Alex Deucher 2015-04-20 264 if (r) { d38ceaf99ed015 Alex Deucher 2015-04-20 265 dev_err(adev->dev, "amdgpu_uvd: Can't validate firmware \"%s\"\n", d38ceaf99ed015 Alex Deucher 2015-04-20 266 fw_name); b406477c614f08 Mario Limonciello 2023-01-04 267 amdgpu_ucode_release(&adev->uvd.fw); d38ceaf99ed015 Alex Deucher 2015-04-20 268 return r; d38ceaf99ed015 Alex Deucher 2015-04-20 269 } d38ceaf99ed015 Alex Deucher 2015-04-20 270 c036554170fcc2 Arindam Nath 2016-04-12 271 /* Set the default UVD handles that the firmware can handle */ c036554170fcc2 Arindam Nath 2016-04-12 272 adev->uvd.max_handles = AMDGPU_DEFAULT_UVD_HANDLES; c036554170fcc2 Arindam Nath 2016-04-12 273 d38ceaf99ed015 Alex Deucher 2015-04-20 274 hdr = (const struct common_firmware_header *)adev->uvd.fw->data; d38ceaf99ed015 Alex Deucher 2015-04-20 275 family_id = le32_to_cpu(hdr->ucode_version) & 0xff; dd06eecb73d2e5 James Zhu 2018-06-06 276 dd06eecb73d2e5 James Zhu 2018-06-06 277 if (adev->asic_type < CHIP_VEGA20) { f10984a353c87e Srinivasan Shanmugam 2023-05-17 278 unsigned int version_major, version_minor; 5c219927027558 Alex Deucher 2018-06-14 279 d38ceaf99ed015 Alex Deucher 2015-04-20 280 version_major = (le32_to_cpu(hdr->ucode_version) >> 24) & 0xff; d38ceaf99ed015 Alex Deucher 2015-04-20 281 version_minor = (le32_to_cpu(hdr->ucode_version) >> 8) & 0xff; 0b437e64e0af74 Tom Rix 2020-12-15 282 DRM_INFO("Found UVD firmware Version: %u.%u Family ID: %u\n", d38ceaf99ed015 Alex Deucher 2015-04-20 283 version_major, version_minor, family_id); d38ceaf99ed015 Alex Deucher 2015-04-20 284 c036554170fcc2 Arindam Nath 2016-04-12 285 /* c036554170fcc2 Arindam Nath 2016-04-12 286 * Limit the number of UVD handles depending on microcode major c036554170fcc2 Arindam Nath 2016-04-12 287 * and minor versions. The firmware version which has 40 UVD c036554170fcc2 Arindam Nath 2016-04-12 288 * instances support is 1.80. So all subsequent versions should c036554170fcc2 Arindam Nath 2016-04-12 289 * also have the same support. c036554170fcc2 Arindam Nath 2016-04-12 290 */ 5c219927027558 Alex Deucher 2018-06-14 291 if ((version_major > 0x01) || c036554170fcc2 Arindam Nath 2016-04-12 292 ((version_major == 0x01) && (version_minor >= 0x50))) c036554170fcc2 Arindam Nath 2016-04-12 293 adev->uvd.max_handles = AMDGPU_MAX_UVD_HANDLES; c036554170fcc2 Arindam Nath 2016-04-12 294 562e2689baebaa Sonny Jiang 2016-04-18 295 adev->uvd.fw_version = ((version_major << 24) | (version_minor << 16) | 562e2689baebaa Sonny Jiang 2016-04-18 296 (family_id << 8)); 562e2689baebaa Sonny Jiang 2016-04-18 297 8e008dd70e0cf5 Sonny Jiang 2016-05-11 298 if ((adev->asic_type == CHIP_POLARIS10 || 8e008dd70e0cf5 Sonny Jiang 2016-05-11 299 adev->asic_type == CHIP_POLARIS11) && 8e008dd70e0cf5 Sonny Jiang 2016-05-11 300 (adev->uvd.fw_version < FW_1_66_16)) 7d98d416c2cc1c Arnd Bergmann 2021-03-22 301 DRM_ERROR("POLARIS10/11 UVD firmware version %u.%u is too old.\n", 8e008dd70e0cf5 Sonny Jiang 2016-05-11 302 version_major, version_minor); 5c219927027558 Alex Deucher 2018-06-14 303 } else { 5c219927027558 Alex Deucher 2018-06-14 304 unsigned int enc_major, enc_minor, dec_minor; 5c219927027558 Alex Deucher 2018-06-14 305 5c219927027558 Alex Deucher 2018-06-14 306 dec_minor = (le32_to_cpu(hdr->ucode_version) >> 8) & 0xff; 5c219927027558 Alex Deucher 2018-06-14 307 enc_minor = (le32_to_cpu(hdr->ucode_version) >> 24) & 0x3f; 5c219927027558 Alex Deucher 2018-06-14 308 enc_major = (le32_to_cpu(hdr->ucode_version) >> 30) & 0x3; 0b437e64e0af74 Tom Rix 2020-12-15 309 DRM_INFO("Found UVD firmware ENC: %u.%u DEC: .%u Family ID: %u\n", 5c219927027558 Alex Deucher 2018-06-14 310 enc_major, enc_minor, dec_minor, family_id); 5c219927027558 Alex Deucher 2018-06-14 311 5c219927027558 Alex Deucher 2018-06-14 312 adev->uvd.max_handles = AMDGPU_MAX_UVD_HANDLES; 5c219927027558 Alex Deucher 2018-06-14 313 5c219927027558 Alex Deucher 2018-06-14 @314 adev->uvd.fw_version = le32_to_cpu(hdr->ucode_version); 5c219927027558 Alex Deucher 2018-06-14 315 } 8e008dd70e0cf5 Sonny Jiang 2016-05-11 316 09bfb8912dc163 Leo Liu 2017-03-03 317 bo_size = AMDGPU_UVD_STACK_SIZE + AMDGPU_UVD_HEAP_SIZE c036554170fcc2 Arindam Nath 2016-04-12 318 + AMDGPU_UVD_SESSION_SIZE * adev->uvd.max_handles; 09bfb8912dc163 Leo Liu 2017-03-03 319 if (adev->firmware.load_type != AMDGPU_FW_LOAD_PSP) 09bfb8912dc163 Leo Liu 2017-03-03 @320 bo_size += AMDGPU_GPU_PAGE_ALIGN(le32_to_cpu(hdr->ucode_size_bytes) + 8); 09bfb8912dc163 Leo Liu 2017-03-03 321 10dd74eac4dba9 James Zhu 2018-05-15 322 for (j = 0; j < adev->uvd.num_uvd_inst; j++) { f1e582ebfd703e Alex Deucher 2018-07-25 323 if (adev->uvd.harvest_config & (1 << j)) f1e582ebfd703e Alex Deucher 2018-07-25 324 continue; 4b62e697777d79 Christian König 2016-07-25 325 r = amdgpu_bo_create_kernel(adev, bo_size, PAGE_SIZE, 58ab2c08d708ca Christian König 2022-01-14 326 AMDGPU_GEM_DOMAIN_VRAM | 58ab2c08d708ca Christian König 2022-01-14 327 AMDGPU_GEM_DOMAIN_GTT, 58ab2c08d708ca Christian König 2022-01-14 328 &adev->uvd.inst[j].vcpu_bo, 58ab2c08d708ca Christian König 2022-01-14 329 &adev->uvd.inst[j].gpu_addr, 58ab2c08d708ca Christian König 2022-01-14 330 &adev->uvd.inst[j].cpu_addr); d38ceaf99ed015 Alex Deucher 2015-04-20 331 if (r) { d38ceaf99ed015 Alex Deucher 2015-04-20 332 dev_err(adev->dev, "(%d) failed to allocate UVD bo\n", r); d38ceaf99ed015 Alex Deucher 2015-04-20 333 return r; d38ceaf99ed015 Alex Deucher 2015-04-20 334 } 5c675bf2c67c4e Christian König 2018-07-18 335 } d38ceaf99ed015 Alex Deucher 2015-04-20 336 c036554170fcc2 Arindam Nath 2016-04-12 337 for (i = 0; i < adev->uvd.max_handles; ++i) { 5c675bf2c67c4e Christian König 2018-07-18 338 atomic_set(&adev->uvd.handles[i], 0); 5c675bf2c67c4e Christian König 2018-07-18 339 adev->uvd.filp[i] = NULL; d38ceaf99ed015 Alex Deucher 2015-04-20 340 } 5c675bf2c67c4e Christian König 2018-07-18 341 d38ceaf99ed015 Alex Deucher 2015-04-20 342 /* from uvd v5.0 HW addressing capacity increased to 64 bits */ 2990a1fc012e1b Alex Deucher 2017-12-15 343 if (!amdgpu_device_ip_block_version_cmp(adev, AMD_IP_BLOCK_TYPE_UVD, 5, 0)) d38ceaf99ed015 Alex Deucher 2015-04-20 344 adev->uvd.address_64_bit = true; d38ceaf99ed015 Alex Deucher 2015-04-20 345 68331d7cf3a9cd xinhui pan 2021-09-10 346 r = amdgpu_uvd_create_msg_bo_helper(adev, 128 << 10, &adev->uvd.ib_bo); 68331d7cf3a9cd xinhui pan 2021-09-10 347 if (r) 68331d7cf3a9cd xinhui pan 2021-09-10 348 return r; 68331d7cf3a9cd xinhui pan 2021-09-10 349 4cb5877c6352c4 Christian König 2016-07-26 350 switch (adev->asic_type) { 4cb5877c6352c4 Christian König 2016-07-26 351 case CHIP_TONGA: 4cb5877c6352c4 Christian König 2016-07-26 352 adev->uvd.use_ctx_buf = adev->uvd.fw_version >= FW_1_65_10; 4cb5877c6352c4 Christian König 2016-07-26 353 break; 4cb5877c6352c4 Christian König 2016-07-26 354 case CHIP_CARRIZO: 4cb5877c6352c4 Christian König 2016-07-26 355 adev->uvd.use_ctx_buf = adev->uvd.fw_version >= FW_1_87_11; 4cb5877c6352c4 Christian König 2016-07-26 356 break; 4cb5877c6352c4 Christian König 2016-07-26 357 case CHIP_FIJI: 4cb5877c6352c4 Christian König 2016-07-26 358 adev->uvd.use_ctx_buf = adev->uvd.fw_version >= FW_1_87_12; 4cb5877c6352c4 Christian König 2016-07-26 359 break; 4cb5877c6352c4 Christian König 2016-07-26 360 case CHIP_STONEY: 4cb5877c6352c4 Christian König 2016-07-26 361 adev->uvd.use_ctx_buf = adev->uvd.fw_version >= FW_1_37_15; 4cb5877c6352c4 Christian König 2016-07-26 362 break; 4cb5877c6352c4 Christian König 2016-07-26 363 default: 4cb5877c6352c4 Christian König 2016-07-26 364 adev->uvd.use_ctx_buf = adev->asic_type >= CHIP_POLARIS10; 4cb5877c6352c4 Christian König 2016-07-26 365 } 4cb5877c6352c4 Christian König 2016-07-26 366 d38ceaf99ed015 Alex Deucher 2015-04-20 367 return 0; d38ceaf99ed015 Alex Deucher 2015-04-20 368 } d38ceaf99ed015 Alex Deucher 2015-04-20 369 d38ceaf99ed015 Alex Deucher 2015-04-20 370 int amdgpu_uvd_sw_fini(struct amdgpu_device *adev) d38ceaf99ed015 Alex Deucher 2015-04-20 371 { 68331d7cf3a9cd xinhui pan 2021-09-10 372 void *addr = amdgpu_bo_kptr(adev->uvd.ib_bo); 10dd74eac4dba9 James Zhu 2018-05-15 373 int i, j; d38ceaf99ed015 Alex Deucher 2015-04-20 374 cdc50176597cb4 Nayan Deshmukh 2018-07-20 375 drm_sched_entity_destroy(&adev->uvd.entity); 5c675bf2c67c4e Christian König 2018-07-18 376 10dd74eac4dba9 James Zhu 2018-05-15 377 for (j = 0; j < adev->uvd.num_uvd_inst; ++j) { f1e582ebfd703e Alex Deucher 2018-07-25 378 if (adev->uvd.harvest_config & (1 << j)) f1e582ebfd703e Alex Deucher 2018-07-25 379 continue; c9533d1bca3393 Michel Dänzer 2018-08-03 380 kvfree(adev->uvd.inst[j].saved_bo); ead833ecedfad7 Christian König 2016-02-10 381 10dd74eac4dba9 James Zhu 2018-05-15 382 amdgpu_bo_free_kernel(&adev->uvd.inst[j].vcpu_bo, 10dd74eac4dba9 James Zhu 2018-05-15 383 &adev->uvd.inst[j].gpu_addr, 10dd74eac4dba9 James Zhu 2018-05-15 384 (void **)&adev->uvd.inst[j].cpu_addr); d38ceaf99ed015 Alex Deucher 2015-04-20 385 10dd74eac4dba9 James Zhu 2018-05-15 386 amdgpu_ring_fini(&adev->uvd.inst[j].ring); 4ff184d70e1dd8 Monk Liu 2017-09-15 387 10dd74eac4dba9 James Zhu 2018-05-15 388 for (i = 0; i < AMDGPU_MAX_UVD_ENC_RINGS; ++i) 10dd74eac4dba9 James Zhu 2018-05-15 389 amdgpu_ring_fini(&adev->uvd.inst[j].ring_enc[i]); 10dd74eac4dba9 James Zhu 2018-05-15 390 } 68331d7cf3a9cd xinhui pan 2021-09-10 391 amdgpu_bo_free_kernel(&adev->uvd.ib_bo, NULL, &addr); b406477c614f08 Mario Limonciello 2023-01-04 392 amdgpu_ucode_release(&adev->uvd.fw); d38ceaf99ed015 Alex Deucher 2015-04-20 393 d38ceaf99ed015 Alex Deucher 2015-04-20 394 return 0; d38ceaf99ed015 Alex Deucher 2015-04-20 395 } d38ceaf99ed015 Alex Deucher 2015-04-20 396 33d5bd0705440c Emily Deng 2018-08-13 397 /** 33d5bd0705440c Emily Deng 2018-08-13 398 * amdgpu_uvd_entity_init - init entity 33d5bd0705440c Emily Deng 2018-08-13 399 * 33d5bd0705440c Emily Deng 2018-08-13 400 * @adev: amdgpu_device pointer 33d5bd0705440c Emily Deng 2018-08-13 401 * 33d5bd0705440c Emily Deng 2018-08-13 402 */ 33d5bd0705440c Emily Deng 2018-08-13 403 int amdgpu_uvd_entity_init(struct amdgpu_device *adev) 33d5bd0705440c Emily Deng 2018-08-13 404 { 33d5bd0705440c Emily Deng 2018-08-13 405 struct amdgpu_ring *ring; b3ac17667f115e Nirmoy Das 2019-12-05 406 struct drm_gpu_scheduler *sched; 33d5bd0705440c Emily Deng 2018-08-13 407 int r; 33d5bd0705440c Emily Deng 2018-08-13 408 33d5bd0705440c Emily Deng 2018-08-13 409 ring = &adev->uvd.inst[0].ring; b3ac17667f115e Nirmoy Das 2019-12-05 410 sched = &ring->sched; b3ac17667f115e Nirmoy Das 2019-12-05 411 r = drm_sched_entity_init(&adev->uvd.entity, DRM_SCHED_PRIORITY_NORMAL, b3ac17667f115e Nirmoy Das 2019-12-05 412 &sched, 1, NULL); 33d5bd0705440c Emily Deng 2018-08-13 413 if (r) { 33d5bd0705440c Emily Deng 2018-08-13 414 DRM_ERROR("Failed setting up UVD kernel entity.\n"); 33d5bd0705440c Emily Deng 2018-08-13 415 return r; 33d5bd0705440c Emily Deng 2018-08-13 416 } 33d5bd0705440c Emily Deng 2018-08-13 417 33d5bd0705440c Emily Deng 2018-08-13 418 return 0; 33d5bd0705440c Emily Deng 2018-08-13 419 } 33d5bd0705440c Emily Deng 2018-08-13 420 d38ceaf99ed015 Alex Deucher 2015-04-20 421 int amdgpu_uvd_suspend(struct amdgpu_device *adev) d38ceaf99ed015 Alex Deucher 2015-04-20 422 { f10984a353c87e Srinivasan Shanmugam 2023-05-17 423 unsigned int size; 3f99dd814a6fdf Leo Liu 2016-04-01 424 void *ptr; f89f8c6bafd069 Andrey Grodzovsky 2021-05-12 425 int i, j, idx; 76434f75d4a485 Le Ma 2019-11-27 426 bool in_ras_intr = amdgpu_ras_intr_triggered(); d38ceaf99ed015 Alex Deucher 2015-04-20 427 5c53d19b76dccb James Zhu 2018-06-18 428 cancel_delayed_work_sync(&adev->uvd.idle_work); 5c53d19b76dccb James Zhu 2018-06-18 429 f6c3b601bd490e James Zhu 2018-03-06 430 /* only valid for physical mode */ f6c3b601bd490e James Zhu 2018-03-06 431 if (adev->asic_type < CHIP_POLARIS10) { c036554170fcc2 Arindam Nath 2016-04-12 432 for (i = 0; i < adev->uvd.max_handles; ++i) 5c675bf2c67c4e Christian König 2018-07-18 433 if (atomic_read(&adev->uvd.handles[i])) 3f99dd814a6fdf Leo Liu 2016-04-01 434 break; d38ceaf99ed015 Alex Deucher 2015-04-20 435 ec7549df08c20e James Zhu 2018-03-06 436 if (i == adev->uvd.max_handles) 5c675bf2c67c4e Christian König 2018-07-18 437 return 0; f6c3b601bd490e James Zhu 2018-03-06 438 } d38ceaf99ed015 Alex Deucher 2015-04-20 439 5c675bf2c67c4e Christian König 2018-07-18 440 for (j = 0; j < adev->uvd.num_uvd_inst; ++j) { f1e582ebfd703e Alex Deucher 2018-07-25 441 if (adev->uvd.harvest_config & (1 << j)) f1e582ebfd703e Alex Deucher 2018-07-25 442 continue; 5c675bf2c67c4e Christian König 2018-07-18 443 if (adev->uvd.inst[j].vcpu_bo == NULL) 5c675bf2c67c4e Christian König 2018-07-18 444 continue; 5c675bf2c67c4e Christian König 2018-07-18 445 10dd74eac4dba9 James Zhu 2018-05-15 446 size = amdgpu_bo_size(adev->uvd.inst[j].vcpu_bo); 10dd74eac4dba9 James Zhu 2018-05-15 447 ptr = adev->uvd.inst[j].cpu_addr; 3f99dd814a6fdf Leo Liu 2016-04-01 448 c9533d1bca3393 Michel Dänzer 2018-08-03 449 adev->uvd.inst[j].saved_bo = kvmalloc(size, GFP_KERNEL); 10dd74eac4dba9 James Zhu 2018-05-15 450 if (!adev->uvd.inst[j].saved_bo) 3f99dd814a6fdf Leo Liu 2016-04-01 451 return -ENOMEM; 3f99dd814a6fdf Leo Liu 2016-04-01 452 c58a863b1ccf63 Guchun Chen 2021-10-08 453 if (drm_dev_enter(adev_to_drm(adev), &idx)) { 8baaadba735565 Le Ma 2019-10-25 454 /* re-write 0 since err_event_athub will corrupt VCPU buffer */ 76434f75d4a485 Le Ma 2019-11-27 455 if (in_ras_intr) 8baaadba735565 Le Ma 2019-10-25 456 memset(adev->uvd.inst[j].saved_bo, 0, size); 76434f75d4a485 Le Ma 2019-11-27 457 else 10dd74eac4dba9 James Zhu 2018-05-15 @458 memcpy_fromio(adev->uvd.inst[j].saved_bo, ptr, size); f89f8c6bafd069 Andrey Grodzovsky 2021-05-12 459 f89f8c6bafd069 Andrey Grodzovsky 2021-05-12 460 drm_dev_exit(idx); f89f8c6bafd069 Andrey Grodzovsky 2021-05-12 461 } 10dd74eac4dba9 James Zhu 2018-05-15 462 } 76434f75d4a485 Le Ma 2019-11-27 463 76434f75d4a485 Le Ma 2019-11-27 464 if (in_ras_intr) 76434f75d4a485 Le Ma 2019-11-27 465 DRM_WARN("UVD VCPU state may lost due to RAS ERREVENT_ATHUB_INTERRUPT\n"); 76434f75d4a485 Le Ma 2019-11-27 466 d38ceaf99ed015 Alex Deucher 2015-04-20 467 return 0; d38ceaf99ed015 Alex Deucher 2015-04-20 468 } d38ceaf99ed015 Alex Deucher 2015-04-20 469 d38ceaf99ed015 Alex Deucher 2015-04-20 470 int amdgpu_uvd_resume(struct amdgpu_device *adev) d38ceaf99ed015 Alex Deucher 2015-04-20 471 { f10984a353c87e Srinivasan Shanmugam 2023-05-17 472 unsigned int size; d38ceaf99ed015 Alex Deucher 2015-04-20 473 void *ptr; f89f8c6bafd069 Andrey Grodzovsky 2021-05-12 474 int i, idx; d38ceaf99ed015 Alex Deucher 2015-04-20 475 10dd74eac4dba9 James Zhu 2018-05-15 476 for (i = 0; i < adev->uvd.num_uvd_inst; i++) { f1e582ebfd703e Alex Deucher 2018-07-25 477 if (adev->uvd.harvest_config & (1 << i)) f1e582ebfd703e Alex Deucher 2018-07-25 478 continue; 10dd74eac4dba9 James Zhu 2018-05-15 479 if (adev->uvd.inst[i].vcpu_bo == NULL) d38ceaf99ed015 Alex Deucher 2015-04-20 480 return -EINVAL; d38ceaf99ed015 Alex Deucher 2015-04-20 481 10dd74eac4dba9 James Zhu 2018-05-15 482 size = amdgpu_bo_size(adev->uvd.inst[i].vcpu_bo); 10dd74eac4dba9 James Zhu 2018-05-15 483 ptr = adev->uvd.inst[i].cpu_addr; d38ceaf99ed015 Alex Deucher 2015-04-20 484 10dd74eac4dba9 James Zhu 2018-05-15 485 if (adev->uvd.inst[i].saved_bo != NULL) { c58a863b1ccf63 Guchun Chen 2021-10-08 486 if (drm_dev_enter(adev_to_drm(adev), &idx)) { 10dd74eac4dba9 James Zhu 2018-05-15 @487 memcpy_toio(ptr, adev->uvd.inst[i].saved_bo, size); f89f8c6bafd069 Andrey Grodzovsky 2021-05-12 488 drm_dev_exit(idx); f89f8c6bafd069 Andrey Grodzovsky 2021-05-12 489 } c9533d1bca3393 Michel Dänzer 2018-08-03 490 kvfree(adev->uvd.inst[i].saved_bo); 10dd74eac4dba9 James Zhu 2018-05-15 491 adev->uvd.inst[i].saved_bo = NULL; d23be4e34c2bcb Leo Liu 2016-04-04 492 } else { d23be4e34c2bcb Leo Liu 2016-04-04 493 const struct common_firmware_header *hdr; f10984a353c87e Srinivasan Shanmugam 2023-05-17 494 unsigned int offset; d23be4e34c2bcb Leo Liu 2016-04-04 495 d23be4e34c2bcb Leo Liu 2016-04-04 496 hdr = (const struct common_firmware_header *)adev->uvd.fw->data; 09bfb8912dc163 Leo Liu 2017-03-03 497 if (adev->firmware.load_type != AMDGPU_FW_LOAD_PSP) { d23be4e34c2bcb Leo Liu 2016-04-04 498 offset = le32_to_cpu(hdr->ucode_array_offset_bytes); c58a863b1ccf63 Guchun Chen 2021-10-08 499 if (drm_dev_enter(adev_to_drm(adev), &idx)) { 10dd74eac4dba9 James Zhu 2018-05-15 @500 memcpy_toio(adev->uvd.inst[i].cpu_addr, adev->uvd.fw->data + offset, ba0b2275a6781b Christian König 2016-08-23 501 le32_to_cpu(hdr->ucode_size_bytes)); f89f8c6bafd069 Andrey Grodzovsky 2021-05-12 502 drm_dev_exit(idx); f89f8c6bafd069 Andrey Grodzovsky 2021-05-12 503 } d23be4e34c2bcb Leo Liu 2016-04-04 504 size -= le32_to_cpu(hdr->ucode_size_bytes); d23be4e34c2bcb Leo Liu 2016-04-04 505 ptr += le32_to_cpu(hdr->ucode_size_bytes); 09bfb8912dc163 Leo Liu 2017-03-03 506 } ba0b2275a6781b Christian König 2016-08-23 507 memset_io(ptr, 0, size); 3b1186fd2aa4ab Jim Qu 2017-12-18 508 /* to restore uvd fence seq */ 10dd74eac4dba9 James Zhu 2018-05-15 509 amdgpu_fence_driver_force_completion(&adev->uvd.inst[i].ring); 10dd74eac4dba9 James Zhu 2018-05-15 510 } d23be4e34c2bcb Leo Liu 2016-04-04 511 } d38ceaf99ed015 Alex Deucher 2015-04-20 512 return 0; d38ceaf99ed015 Alex Deucher 2015-04-20 513 } d38ceaf99ed015 Alex Deucher 2015-04-20 514 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki