[Bug 277476] graphics/drm-515-kmod: amdgpu periodic hangs due to phys contig allocations

[email protected]
Newsgroups gmane.os.freebsd.devel.x11
Message-ID <[email protected]/bugzilla/>
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=277476

--- Comment #20 from Ivan Rozhuk <[email protected]> ---
Created attachment 258607
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=258607&action=edit
dtrace profile

Patch did not help, at least in case: xorg + amdgpu xdriver.
This how it was landed on 14/stable:
https://github.com/rozhuk-im/freebsd/commit/b739c10c50aa37e247dc95f7b93f6fe58d86016d


I have attached dtrace profile output that captured while freezes happen.
I do not see here vm_phys_alloc_contig() after ttm_pool_alloc(), probably
-O2/-O3 opt level "optimize" out it.

Here few new things that show increased latency on freezes:
(I do not collect many freezes, in some tests only few freezes collected)

              kernel`lock_delay+0x12
              amdgpu.ko`amdgpu_gem_fault+0x86
              kernel`linux_cdev_pager_populate+0x128
              kernel`vm_fault_allocate+0x185
              kernel`vm_fault+0x39c
              kernel`vm_fault_trap+0x4c
              kernel`trap_pfault+0x20a
              kernel`trap+0x4a8
              kernel`0xffffffff80a11ca8
               20
dtrace -n 'fbt::amdgpu_gem_fault:entry{self->ts=timestamp}' -n
'fbt::amdgpu_gem_fault:return/self->ts/{this->delta=timestamp-self->ts;
@=quantize(this->delta);}' -n 'tick-1sec{printa(@)}'
  0  66064                       :tick-1sec 

           value  ------------- Distribution ------------- count    
             512 |                                         0        
            1024 |                                         1        
            2048 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@       1357     
            4096 |@@@                                      110      
            8192 |@@@                                      103      
           16384 |                                         4        
           32768 |                                         3        
           65536 |                                         0        
          131072 |                                         0        
          262144 |                                         0        
          524288 |                                         0        
         1048576 |                                         0        
         2097152 |                                         1        
         4194304 |                                         3        
         8388608 |                                         2        
        16777216 |                                         0        
        33554432 |                                         0        
        67108864 |                                         0        
       134217728 |                                         0        
       268435456 |                                         1        
       536870912 |                                         1        
      1073741824 |                                         1        
      2147483648 |                                         0        



              kernel`lock_delay+0x14
              kernel`malloc_large+0x2c
              kernel`lkpi_kmalloc_cb+0x44
              kernel`lkpi_kmalloc+0x27
              amdgpu.ko`dc_create_state+0x18
              amdgpu.ko`amdgpu_dm_atomic_commit_tail+0xd4
              drm.ko`commit_tail+0xa7
              kernel`linux_work_fn+0xed
              kernel`taskqueue_run_locked+0x187
              kernel`taskqueue_thread_loop+0xc2
              kernel`fork_exit+0x86
              kernel`0xffffffff80a12d0e
               88
dtrace -n 'fbt::dc_create_state:entry{self->ts=timestamp}' -n
'fbt::dc_create_state:return/self->ts/{this->delta=timestamp-self->ts;
@=quantize(this->delta);}' -n 'tick-1sec{printa(@)}'
  0  66064                       :tick-1sec 

           value  ------------- Distribution ------------- count    
            4096 |                                         0        
            8192 |                                         2        
           16384 |@@@@@@@@@@@@@@@@@@@@@                    1271     
           32768 |@@@@@@@@@@@@@@@@@@                       1087     
           65536 |                                         30       
          131072 |                                         1        
          262144 |                                         0        
          524288 |                                         3        
         1048576 |                                         4        
         2097152 |                                         2        
         4194304 |                                         0        
         8388608 |                                         0        
        16777216 |                                         0        
        33554432 |                                         0        
        67108864 |                                         0        
       134217728 |                                         1        
       268435456 |                                         1        
       536870912 |                                         5        
      1073741824 |                                         4        
      2147483648 |                                         0        


              kernel`lock_delay+0x14
              kernel`free+0x9b
              amdgpu.ko`amdgpu_dm_atomic_commit_tail+0x2f9a
              drm.ko`commit_tail+0xa7
              kernel`linux_work_fn+0xed
              kernel`taskqueue_run_locked+0x187
              kernel`taskqueue_thread_loop+0xc2
              kernel`fork_exit+0x86
              kernel`0xffffffff809aaf6e
              399
dtrace -n 'fbt::amdgpu_dm_atomic_commit_tail:entry{self->ts=timestamp}' -n
'fbt::amdgpu_dm_atomic_commit_tail:return/self->ts/{this->delta=timestamp-self->ts;
@=quantize(this->delta);}' -n 'tick-1sec{printa(@)}'
  0  66190                       :tick-1sec 

           value  ------------- Distribution ------------- count    
           16384 |                                         0        
           32768 |                                         4        
           65536 |                                         6        
          131072 |                                         2        
          262144 |                                         0        
          524288 |                                         6        
         1048576 |                                         15       
         2097152 |@                                        29       
         4194304 |@@@                                      106      
         8388608 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@       1323     
        16777216 |@                                        44       
        33554432 |                                         1        
        67108864 |                                         2        
       134217728 |                                         4        
       268435456 |                                         8        
       536870912 |                                         5        
      1073741824 |                                         5        
      2147483648 |                                         0        


              kernel`lock_delay+0x14
              kernel`zone_import+0xf2
              kernel`cache_alloc+0x309
              kernel`cache_alloc_retry+0x2c
              kernel`malloc+0x48
              ttm.ko`ttm_sg_tt_init+0x61
              amdgpu.ko`amdgpu_ttm_tt_create+0x4a
              ttm.ko`ttm_tt_create+0x4e
              ttm.ko`ttm_bo_validate+0x60
              ttm.ko`ttm_bo_init_reserved+0x194
              amdgpu.ko`amdgpu_bo_create+0x295
              amdgpu.ko`amdgpu_bo_create_user+0x21
              amdgpu.ko`amdgpu_gem_userptr_ioctl+0x82
              drm.ko`drm_ioctl_kernel+0xbc
              drm.ko`drm_ioctl+0x25e
              kernel`linux_file_ioctl+0x30f
              kernel`kern_ioctl+0x1b0
              kernel`sys_ioctl+0x117
              kernel`amd64_syscall+0xeb
              kernel`0xffffffff809aa81b
               46
dtrace -n 'fbt::amdgpu_ttm_tt_create:entry{self->ts=timestamp}' -n
'fbt::amdgpu_ttm_tt_create:return/self->ts/{this->delta=timestamp-self->ts;
@=quantize(this->delta);}' -n 'tick-1sec{printa(@)}'
  0  66190                       :tick-1sec 

           value  ------------- Distribution ------------- count    
             128 |                                         0        
             256 |                                         4        
             512 |@@@@@@@@@@                               5764     
            1024 |@@@@@@@@@@@@                             6635     
            2048 |@@@@@@@@@                                5087     
            4096 |@@@@@@@@                                 4334     
            8192 |@@                                       875      
           16384 |                                         72       
           32768 |                                         9        
           65536 |                                         3        
          131072 |                                         0        
(this looks ok)


dtrace -n 'fbt::amdgpu_bo_create:entry{self->ts=timestamp}' -n
'fbt::amdgpu_bo_create:return/self->ts/{this->delta=timestamp-self->ts;
@=quantize(this->delta);}' -n 'tick-1sec{printa(@)}'
  0  66190                       :tick-1sec 

           value  ------------- Distribution ------------- count    
             256 |                                         0        
             512 |                                         2        
            1024 |@@@@@@                                   2303     
            2048 |@@@@@@@@@@                               4190     
            4096 |@@@@@@@@@@@@                             4800     
            8192 |@@@@@@@@@@                               4002     
           16384 |@@                                       845      
           32768 |                                         124      
           65536 |                                         39       
          131072 |                                         20       
          262144 |                                         4        
          524288 |                                         9        
         1048576 |                                         2        
         2097152 |                                         3        
         4194304 |                                         8        
         8388608 |                                         5        
        16777216 |                                         0        
        33554432 |                                         1        
        67108864 |                                         2        
       134217728 |                                         1        
       268435456 |                                         0        
       536870912 |                                         2        
      1073741824 |                                         0        
      2147483648 |                                         1        
      4294967296 |                                         0        

dtrace -n 'fbt::add_hole:entry{self->ts=timestamp}' -n
'fbt::add_hole:return/self->ts/{this->delta=timestamp-self->ts;
@=quantize(this->delta);}' -n 'tick-1sec{printa(@)}'
  0  66190                       :tick-1sec 

           value  ------------- Distribution ------------- count    
             128 |                                         0        
             256 |@@@@@@@@@@@@                             5762     
             512 |@@@@@@@@@@@@@                            6548     
            1024 |@@@@@@@                                  3287     
            2048 |@@@@@                                    2648     
            4096 |@@@                                      1508     
            8192 |                                         105      
           16384 |                                         11       
           32768 |                                         4        
           65536 |                                         1        
          131072 |                                         0        
(this looks ok)

dtrace -n 'fbt::ttm_pool_alloc:entry{self->ts=timestamp}' -n
'fbt::ttm_pool_alloc:return/self->ts/{this->delta=timestamp-self->ts;
@=quantize(this->delta);}' -n 'tick-1sec{printa(@)}'
  0  66190                       :tick-1sec 

           value  ------------- Distribution ------------- count    
             128 |                                         0        
             256 |@@                                       29       
             512 |@@@@@@@@                                 96       
            1024 |@@@@@@                                   81       
            2048 |@@@@@                                    67       
            4096 |@@@@@@@@                                 106      
            8192 |@@@                                      33       
           16384 |                                         5        
           32768 |                                         1        
           65536 |@                                        17       
          131072 |@                                        12       
          262144 |                                         3        
          524288 |                                         6        
         1048576 |@                                        10       
         2097152 |@                                        13       
         4194304 |                                         2        
         8388608 |                                         2        
        16777216 |                                         3        
        33554432 |                                         5        
        67108864 |                                         3        
       134217728 |                                         4        
       268435456 |@                                        7        
       536870912 |                                         5        
      1073741824 |                                         1        
      2147483648 |                                         1        
      4294967296 |                                         0        


If some one have ideas - I can play more with dtrace and test other
patches/settings.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
You are the assignee for the bug.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.