tree:   git://people.freedesktop.org/~agd5f/linux.git amd-staging-4.11
head:   cad2d1111e124fe8a1637785bb47202da55f54af
commit: 9989707c4000667d37a711b6a4eb2e77d8cd00a8 [1309/1319] drm/amdgpu: 
Support page directory update via CPU
config: i386-randconfig-r0-06050939 (attached as .config)
compiler: gcc-5 (Debian 5.4.1-2) 5.4.1 20160904
reproduce:
        git checkout 9989707c4000667d37a711b6a4eb2e77d8cd00a8
        # save the attached .config to linux build tree
        make ARCH=i386 

Note: it may well be a FALSE warning. FWIW you are at least aware of it now.
http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings

All warnings (new ones prefixed by >>):

   In file included from drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:32:0:
   drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c: In function 'amdgpu_vm_cpu_set_ptes':
   drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:977:41: warning: cast to pointer from 
integer of different size [-Wint-to-pointer-cast]
      amdgpu_gart_set_pte_pde(params->adev, (void *)pe,
                                            ^
   drivers/gpu/drm/amd/amdgpu/amdgpu.h:1870:107: note: in definition of macro 
'amdgpu_gart_set_pte_pde'
    #define amdgpu_gart_set_pte_pde(adev, pt, idx, addr, flags) 
(adev)->gart.gart_funcs->set_pte_pde((adev), (pt), (idx), (addr), (flags))
                                                                                
                              ^
   In file included from arch/x86/include/asm/bug.h:35:0,
                    from include/linux/bug.h:4,
                    from include/linux/thread_info.h:11,
                    from arch/x86/include/asm/preempt.h:6,
                    from include/linux/preempt.h:80,
                    from include/linux/spinlock.h:50,
                    from include/linux/wait.h:8,
                    from include/linux/dma-fence.h:25,
                    from include/linux/dma-fence-array.h:23,
                    from drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:28:
   drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c: In function 'amdgpu_vm_update_level':
   include/asm-generic/bug.h:93:5: warning: 'ndw' may be used uninitialized in 
this function [-Wmaybe-uninitialized]
     if (unlikely(__ret_warn_on))     \
        ^
   drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1020:30: note: 'ndw' was declared here
     unsigned count = 0, pt_idx, ndw;
                                 ^
>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1122:16: warning: 'shadow_addr' may 
>> be used uninitialized in this function [-Wmaybe-uninitialized]
       last_shadow = shadow_addr + pt_idx * 8;
                   ^
>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1151:5: warning: 'ring' may be used 
>> uninitialized in this function [-Wmaybe-uninitialized]
      r = amdgpu_job_submit(job, ring, &vm->entity,
        ^

vim +/shadow_addr +1122 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c

d38ceaf99e Alex Deucher           2015-04-20  1014  {
f8991bab1a Christian König        2016-09-16  1015      struct amdgpu_bo 
*shadow;
2d55e45a03 Christian König        2016-02-08  1016      struct amdgpu_ring 
*ring;
f8991bab1a Christian König        2016-09-16  1017      uint64_t pd_addr, 
shadow_addr;
bcb75af82e Christian König        2016-10-12  1018      uint32_t incr = 
amdgpu_vm_bo_size(adev, level + 1);
f8991bab1a Christian König        2016-09-16  1019      uint64_t last_pde = ~0, 
last_pt = ~0, last_shadow = ~0;
d38ceaf99e Alex Deucher           2015-04-20 @1020      unsigned count = 0, 
pt_idx, ndw;
d71518b5aa Christian König        2016-02-01  1021      struct amdgpu_job *job;
29efc4f5df Christian König        2016-08-04  1022      struct 
amdgpu_pte_update_params params;
f54d186700 Chris Wilson           2016-10-25  1023      struct dma_fence *fence 
= NULL;
d5fc5e82a3 Chunming Zhou          2015-07-21  1024  
d38ceaf99e Alex Deucher           2015-04-20  1025      int r;
d38ceaf99e Alex Deucher           2015-04-20  1026  
bcb75af82e Christian König        2016-10-12  1027      if (!parent->entries)
bcb75af82e Christian König        2016-10-12  1028              return 0;
9989707c40 Harish Kasiviswanathan 2017-05-11  1029  
9989707c40 Harish Kasiviswanathan 2017-05-11  1030      memset(&params, 0, 
sizeof(params));
9989707c40 Harish Kasiviswanathan 2017-05-11  1031      params.adev = adev;
9989707c40 Harish Kasiviswanathan 2017-05-11  1032      shadow = 
parent->bo->shadow;
9989707c40 Harish Kasiviswanathan 2017-05-11  1033  
9989707c40 Harish Kasiviswanathan 2017-05-11  1034      
WARN_ON(vm->use_cpu_for_update && shadow);
9989707c40 Harish Kasiviswanathan 2017-05-11  1035      if 
(vm->use_cpu_for_update && !shadow) {
9989707c40 Harish Kasiviswanathan 2017-05-11  1036              r = 
amdgpu_bo_kmap(parent->bo, (void **)&pd_addr);
9989707c40 Harish Kasiviswanathan 2017-05-11  1037              if (r)
9989707c40 Harish Kasiviswanathan 2017-05-11  1038                      return 
r;
9989707c40 Harish Kasiviswanathan 2017-05-11  1039              r = 
amdgpu_vm_bo_wait(adev, parent->bo);
9989707c40 Harish Kasiviswanathan 2017-05-11  1040              if 
(unlikely(r)) {
9989707c40 Harish Kasiviswanathan 2017-05-11  1041                      
amdgpu_bo_kunmap(parent->bo);
9989707c40 Harish Kasiviswanathan 2017-05-11  1042                      return 
r;
9989707c40 Harish Kasiviswanathan 2017-05-11  1043              }
9989707c40 Harish Kasiviswanathan 2017-05-11  1044              params.func = 
amdgpu_vm_cpu_set_ptes;
9989707c40 Harish Kasiviswanathan 2017-05-11  1045      } else {
9989707c40 Harish Kasiviswanathan 2017-05-11  1046              if (shadow) {
9989707c40 Harish Kasiviswanathan 2017-05-11  1047                      r = 
amdgpu_ttm_bind(&shadow->tbo, &shadow->tbo.mem);
9989707c40 Harish Kasiviswanathan 2017-05-11  1048                      if (r)
9989707c40 Harish Kasiviswanathan 2017-05-11  1049                              
return r;
9989707c40 Harish Kasiviswanathan 2017-05-11  1050              }
9989707c40 Harish Kasiviswanathan 2017-05-11  1051              ring = 
container_of(vm->entity.sched, struct amdgpu_ring,
9989707c40 Harish Kasiviswanathan 2017-05-11  1052                              
    sched);
2d55e45a03 Christian König        2016-02-08  1053  
d38ceaf99e Alex Deucher           2015-04-20  1054              /* padding, 
etc. */
d38ceaf99e Alex Deucher           2015-04-20  1055              ndw = 64;
d38ceaf99e Alex Deucher           2015-04-20  1056  
d38ceaf99e Alex Deucher           2015-04-20  1057              /* assume the 
worst case */
bcb75af82e Christian König        2016-10-12  1058              ndw += 
parent->last_entry_used * 6;
d38ceaf99e Alex Deucher           2015-04-20  1059  
bcb75af82e Christian König        2016-10-12  1060              pd_addr = 
amdgpu_bo_gpu_offset(parent->bo);
bcb75af82e Christian König        2016-10-12  1061  
f8991bab1a Christian König        2016-09-16  1062              if (shadow) {
f8991bab1a Christian König        2016-09-16  1063                      
shadow_addr = amdgpu_bo_gpu_offset(shadow);
f8991bab1a Christian König        2016-09-16  1064                      ndw *= 
2;
f8991bab1a Christian König        2016-09-16  1065              } else {
f8991bab1a Christian König        2016-09-16  1066                      
shadow_addr = 0;
f8991bab1a Christian König        2016-09-16  1067              }
f8991bab1a Christian König        2016-09-16  1068  
d71518b5aa Christian König        2016-02-01  1069              r = 
amdgpu_job_alloc_with_ib(adev, ndw * 4, &job);
d71518b5aa Christian König        2016-02-01  1070              if (r)
d38ceaf99e Alex Deucher           2015-04-20  1071                      return 
r;
d71518b5aa Christian König        2016-02-01  1072  
29efc4f5df Christian König        2016-08-04  1073              params.ib = 
&job->ibs[0];
9989707c40 Harish Kasiviswanathan 2017-05-11  1074              params.func = 
amdgpu_vm_do_set_ptes;
9989707c40 Harish Kasiviswanathan 2017-05-11  1075      }
9989707c40 Harish Kasiviswanathan 2017-05-11  1076  
d38ceaf99e Alex Deucher           2015-04-20  1077  
bcb75af82e Christian König        2016-10-12  1078      /* walk over the 
address space and update the directory */
bcb75af82e Christian König        2016-10-12  1079      for (pt_idx = 0; pt_idx 
<= parent->last_entry_used; ++pt_idx) {
bcb75af82e Christian König        2016-10-12  1080              struct 
amdgpu_bo *bo = parent->entries[pt_idx].bo;
d38ceaf99e Alex Deucher           2015-04-20  1081              uint64_t pde, 
pt;
d38ceaf99e Alex Deucher           2015-04-20  1082  
d38ceaf99e Alex Deucher           2015-04-20  1083              if (bo == NULL)
d38ceaf99e Alex Deucher           2015-04-20  1084                      
continue;
d38ceaf99e Alex Deucher           2015-04-20  1085  
0fc8683e56 Christian König        2016-09-16  1086              if (bo->shadow) 
{
f8991bab1a Christian König        2016-09-16  1087                      struct 
amdgpu_bo *pt_shadow = bo->shadow;
0fc8683e56 Christian König        2016-09-16  1088  
f8991bab1a Christian König        2016-09-16  1089                      r = 
amdgpu_ttm_bind(&pt_shadow->tbo,
f8991bab1a Christian König        2016-09-16  1090                              
            &pt_shadow->tbo.mem);
0fc8683e56 Christian König        2016-09-16  1091                      if (r)
0fc8683e56 Christian König        2016-09-16  1092                              
return r;
0fc8683e56 Christian König        2016-09-16  1093              }
0fc8683e56 Christian König        2016-09-16  1094  
d38ceaf99e Alex Deucher           2015-04-20  1095              pt = 
amdgpu_bo_gpu_offset(bo);
d029622227 Christian König        2017-05-15  1096              pt = 
amdgpu_gart_get_vm_pde(adev, pt);
bcb75af82e Christian König        2016-10-12  1097              if 
(parent->entries[pt_idx].addr == pt)
d38ceaf99e Alex Deucher           2015-04-20  1098                      
continue;
f8991bab1a Christian König        2016-09-16  1099  
bcb75af82e Christian König        2016-10-12  1100              
parent->entries[pt_idx].addr = pt;
d38ceaf99e Alex Deucher           2015-04-20  1101  
d38ceaf99e Alex Deucher           2015-04-20  1102              pde = pd_addr + 
pt_idx * 8;
d38ceaf99e Alex Deucher           2015-04-20  1103              if (((last_pde 
+ 8 * count) != pde) ||
96105e5375 Christian König        2016-08-12  1104                  ((last_pt + 
incr * count) != pt) ||
96105e5375 Christian König        2016-08-12  1105                  (count == 
AMDGPU_VM_MAX_UPDATE_SIZE)) {
d38ceaf99e Alex Deucher           2015-04-20  1106  
d38ceaf99e Alex Deucher           2015-04-20  1107                      if 
(count) {
f8991bab1a Christian König        2016-09-16  1108                              
if (shadow)
9989707c40 Harish Kasiviswanathan 2017-05-11  1109                              
        params.func(&params,
f8991bab1a Christian König        2016-09-16  1110                              
                    last_shadow,
d029622227 Christian König        2017-05-15  1111                              
                    last_pt, count,
f8991bab1a Christian König        2016-09-16  1112                              
                    incr,
f8991bab1a Christian König        2016-09-16  1113                              
                    AMDGPU_PTE_VALID);
f8991bab1a Christian König        2016-09-16  1114  
9989707c40 Harish Kasiviswanathan 2017-05-11  1115                              
params.func(&params, last_pde,
d029622227 Christian König        2017-05-15  1116                              
            last_pt, count, incr,
9ab2146289 Christian König        2015-11-30  1117                              
            AMDGPU_PTE_VALID);
d38ceaf99e Alex Deucher           2015-04-20  1118                      }
d38ceaf99e Alex Deucher           2015-04-20  1119  
d38ceaf99e Alex Deucher           2015-04-20  1120                      count = 
1;
d38ceaf99e Alex Deucher           2015-04-20  1121                      
last_pde = pde;
f8991bab1a Christian König        2016-09-16 @1122                      
last_shadow = shadow_addr + pt_idx * 8;
d38ceaf99e Alex Deucher           2015-04-20  1123                      last_pt 
= pt;
d38ceaf99e Alex Deucher           2015-04-20  1124              } else {
d38ceaf99e Alex Deucher           2015-04-20  1125                      ++count;
d38ceaf99e Alex Deucher           2015-04-20  1126              }
d38ceaf99e Alex Deucher           2015-04-20  1127      }
d38ceaf99e Alex Deucher           2015-04-20  1128  
f8991bab1a Christian König        2016-09-16  1129      if (count) {
fd5c3bae81 Christian König        2016-10-12  1130              if 
(vm->root.bo->shadow)
9989707c40 Harish Kasiviswanathan 2017-05-11  1131                      
params.func(&params, last_shadow, last_pt,
f8991bab1a Christian König        2016-09-16  1132                              
    count, incr, AMDGPU_PTE_VALID);
f8991bab1a Christian König        2016-09-16  1133  
9989707c40 Harish Kasiviswanathan 2017-05-11  1134              
params.func(&params, last_pde, last_pt,
9ab2146289 Christian König        2015-11-30  1135                          
count, incr, AMDGPU_PTE_VALID);
f8991bab1a Christian König        2016-09-16  1136      }
f8991bab1a Christian König        2016-09-16  1137  
9989707c40 Harish Kasiviswanathan 2017-05-11  1138      if (params.func == 
amdgpu_vm_cpu_set_ptes)
9989707c40 Harish Kasiviswanathan 2017-05-11  1139              
amdgpu_bo_kunmap(parent->bo);
9989707c40 Harish Kasiviswanathan 2017-05-11  1140      else if 
(params.ib->length_dw == 0) {
f8991bab1a Christian König        2016-09-16  1141              
amdgpu_job_free(job);
bcb75af82e Christian König        2016-10-12  1142      } else {
29efc4f5df Christian König        2016-08-04  1143              
amdgpu_ring_pad_ib(ring, params.ib);
bcb75af82e Christian König        2016-10-12  1144              
amdgpu_sync_resv(adev, &job->sync, parent->bo->tbo.resv,
e86f9ceee1 Christian König        2016-02-08  1145                              
 AMDGPU_FENCE_OWNER_VM);
f8991bab1a Christian König        2016-09-16  1146              if (shadow)
f8991bab1a Christian König        2016-09-16  1147                      
amdgpu_sync_resv(adev, &job->sync, shadow->tbo.resv,
f8991bab1a Christian König        2016-09-16  1148                              
         AMDGPU_FENCE_OWNER_VM);
f8991bab1a Christian König        2016-09-16  1149  
29efc4f5df Christian König        2016-08-04  1150              
WARN_ON(params.ib->length_dw > ndw);
2bd9ccfa75 Christian König        2016-02-01 @1151              r = 
amdgpu_job_submit(job, ring, &vm->entity,
2bd9ccfa75 Christian König        2016-02-01  1152                              
AMDGPU_FENCE_OWNER_VM, &fence);
d5fc5e82a3 Chunming Zhou          2015-07-21  1153              if (r)
4af9f07ccd Chunming Zhou          2015-08-03  1154                      goto 
error_free;

:::::: The code at line 1122 was first introduced by commit
:::::: f8991bab1aa2121e33b8569857dfb22e536bc396 drm/amdgpu: update the shadow 
PD together with the real one v2

:::::: TO: Christian König <christian.koe...@amd.com>
:::::: CC: Alex Deucher <alexander.deuc...@amd.com>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to