Hi Jonathan, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on drm-tip/drm-tip] [also build test WARNING on linus/master v6.2-rc5] [cannot apply to drm-misc/drm-misc-next drm/drm-next drm-exynos/exynos-drm-next drm-intel/for-linux-next drm-intel/for-linux-next-fixes] [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/Jonathan-Kim/drm-amdkfd-add-debug-and-runtime-enable-interface/20230128-092952 base: git://anongit.freedesktop.org/drm/drm-tip drm-tip patch link: https://lore.kernel.org/r/20230125195401.4183544-8-jonathan.kim%40amd.com patch subject: [PATCH 07/32] drm/amdgpu: add gfx9.4.1 hw debug mode enable and disable calls config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20230129/202301291457.nbbgmBEG-lkp@xxxxxxxxx/config) compiler: gcc-11 (Debian 11.3.0-8) 11.3.0 reproduce (this is a W=1 build): # https://github.com/intel-lab-lkp/linux/commit/3983dc0f35ebf17452f97c096b866e38c98318db git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Jonathan-Kim/drm-amdkfd-add-debug-and-runtime-enable-interface/20230128-092952 git checkout 3983dc0f35ebf17452f97c096b866e38c98318db # save the config file mkdir build_dir && cp config build_dir/.config make W=1 O=build_dir ARCH=x86_64 olddefconfig make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/gpu/drm/amd/amdgpu/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@xxxxxxxxx> All warnings (new ones prefixed by >>): drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c: In function 'suspend_resume_compute_scheduler': >> drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c:312:53: warning: implicit conversion from 'enum amd_hw_ip_block_type' to 'enum amd_ip_block_type' [-Wenum-conversion] 312 | return amdgpu_device_ip_wait_for_idle(adev, GC_HWIP); | ^~~~~~~ In file included from drivers/gpu/drm/amd/amdgpu/../display/dc/dc_types.h:36, from drivers/gpu/drm/amd/amdgpu/../display/dc/dm_services_types.h:30, from drivers/gpu/drm/amd/amdgpu/../include/dm_pp_interface.h:26, from drivers/gpu/drm/amd/amdgpu/amdgpu.h:64, from drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c:26: At top level: drivers/gpu/drm/amd/amdgpu/../display/dc/dc_hdmi_types.h:53:22: warning: 'dp_hdmi_dongle_signature_str' defined but not used [-Wunused-const-variable=] 53 | static const uint8_t dp_hdmi_dongle_signature_str[] = "DP-HDMI ADAPTOR"; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- >> drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c:343: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst * restore_dbg_reisters is ignored here but is a general interface requirement drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c:369: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst * keep_trap_enabled is ignored here but is a general interface requirement vim +312 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c 281 282 /* 283 * Helper used to suspend/resume gfx pipe for image post process work to set 284 * barrier behaviour. 285 */ 286 static int suspend_resume_compute_scheduler(struct amdgpu_device *adev, bool suspend) 287 { 288 int i, r = 0; 289 290 for (i = 0; i < adev->gfx.num_compute_rings; i++) { 291 struct amdgpu_ring *ring = &adev->gfx.compute_ring[i]; 292 293 if (!(ring && ring->sched.thread)) 294 continue; 295 296 /* stop secheduler and drain ring. */ 297 if (suspend) { 298 drm_sched_stop(&ring->sched, NULL); 299 r = amdgpu_fence_wait_empty(ring); 300 if (r) 301 goto out; 302 } else { 303 drm_sched_start(&ring->sched, false); 304 } 305 } 306 307 out: 308 /* return on resume or failure to drain rings. */ 309 if (!suspend || r) 310 return r; 311 > 312 return amdgpu_device_ip_wait_for_idle(adev, GC_HWIP); 313 } 314 315 static void set_barrier_auto_waitcnt(struct amdgpu_device *adev, bool enable_waitcnt) 316 { 317 uint32_t data; 318 319 WRITE_ONCE(adev->barrier_has_auto_waitcnt, enable_waitcnt); 320 321 if (!down_read_trylock(&adev->reset_domain->sem)) 322 return; 323 324 amdgpu_amdkfd_suspend(adev, false); 325 326 if (suspend_resume_compute_scheduler(adev, true)) 327 goto out; 328 329 data = RREG32(SOC15_REG_OFFSET(GC, 0, mmSQ_CONFIG)); 330 data = REG_SET_FIELD(data, SQ_CONFIG, DISABLE_BARRIER_WAITCNT, 331 enable_waitcnt ? 0 : 1); 332 WREG32(SOC15_REG_OFFSET(GC, 0, mmSQ_CONFIG), data); 333 334 out: 335 suspend_resume_compute_scheduler(adev, false); 336 337 amdgpu_amdkfd_resume(adev, false); 338 339 up_read(&adev->reset_domain->sem); 340 } 341 342 /** > 343 * restore_dbg_reisters is ignored here but is a general interface requirement 344 * for devices that support GFXOFF and where the RLC save/restore list 345 * does not support hw registers for debugging i.e. the driver has to manually 346 * initialize the debug mode registers after it has disabled GFX off during the 347 * debug session. 348 */ 349 static uint32_t kgd_arcturus_enable_debug_trap(struct amdgpu_device *adev, 350 bool restore_dbg_registers, 351 uint32_t vmid) 352 { 353 mutex_lock(&adev->grbm_idx_mutex); 354 355 kgd_gfx_v9_set_wave_launch_stall(adev, vmid, true); 356 357 set_barrier_auto_waitcnt(adev, true); 358 359 WREG32(SOC15_REG_OFFSET(GC, 0, mmSPI_GDBG_TRAP_MASK), 0); 360 361 kgd_gfx_v9_set_wave_launch_stall(adev, vmid, false); 362 363 mutex_unlock(&adev->grbm_idx_mutex); 364 365 return 0; 366 } 367 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests