tree: git://people.freedesktop.org/~agd5f/linux.git amd-mainline-hybrid-4.11 head: 4e9a9bc851d8ecea7b6cabb485f1aa3e914a42a9 commit: a2a89723a7d85d57bad83a0baa839d18f0db0805 [1373/2257] port in all files config: i386-allyesconfig (attached as .config) compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901 reproduce: git checkout a2a89723a7d85d57bad83a0baa839d18f0db0805 # save the attached .config to linux build tree make ARCH=i386 All warnings (new ones prefixed by >>): drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c: In function 'amdgdu_amdkfd_restore_mem_worker': drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c:193:22: error: 'struct amdgpu_bo' has no member named 'adev' adev = mem->data2.bo->adev; ^~ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c: In function 'get_local_mem_info': drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c:342:24: warning: left shift count >= width of type [-Wshift-count-overflow] address_mask = ~((1UL << 40) - 1); ^~ >> drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c:352:70: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 2 has type 'resource_size_t {aka unsigned int}' [-Wformat=] pr_err("amdgpu: vram aperture is out of 40bit address base: 0x%llx limit 0x%llx\n", ^ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c:352:84: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 3 has type 'resource_size_t {aka unsigned int}' [-Wformat=] pr_err("amdgpu: vram aperture is out of 40bit address base: 0x%llx limit 0x%llx\n", ^ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c:356:24: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 2 has type 'resource_size_t {aka unsigned int}' [-Wformat=] pr_debug("amdgpu: address base: 0x%llx limit 0x%llx public 0x%llx private 0x%llx\n", ^~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c:356:24: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 3 has type 'resource_size_t {aka unsigned int}' [-Wformat=] drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c:361:6: error: 'amdgpu_powerplay' undeclared (first use in this function) if (amdgpu_powerplay || rdev->pm.funcs->get_mclk) ^~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c:361:6: note: each undeclared identifier is reported only once for each function it appears in drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c: In function 'get_max_engine_clock_in_mhz': drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c:379:6: error: 'amdgpu_powerplay' undeclared (first use in this function) if (amdgpu_powerplay) ^~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c: In function 'get_cu_info': drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c:402:33: error: 'struct amdgpu_cu_info' has no member named 'simd_per_cu' cu_info->simd_per_cu = acu_info.simd_per_cu; ^ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c:403:40: error: 'struct amdgpu_cu_info' has no member named 'max_waves_per_simd' cu_info->max_waves_per_simd = acu_info.max_waves_per_simd; ^ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c:405:46: error: 'struct amdgpu_cu_info' has no member named 'max_scratch_slots_per_cu' cu_info->max_scratch_slots_per_cu = acu_info.max_scratch_slots_per_cu; ^ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c:406:30: error: 'struct amdgpu_cu_info' has no member named 'lds_size' cu_info->lds_size = acu_info.lds_size; ^ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c: In function 'amdgpu_amdkfd_get_dmabuf_info': drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c:432:23: error: 'drm_gem_prime_dmabuf_ops' undeclared (first use in this function) if (dma_buf->ops != &drm_gem_prime_dmabuf_ops) ^~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c:443:10: error: 'struct amdgpu_bo' has no member named 'initial_domain' if (!(bo->initial_domain & (AMDGPU_GEM_DOMAIN_VRAM | ^~ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c:459:15: error: 'struct amdgpu_bo' has no member named 'initial_domain' *flags = (bo->initial_domain & AMDGPU_GEM_DOMAIN_VRAM) ? ^~ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c: In function 'get_max_engine_clock_in_mhz': drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c:383:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ vim +352 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c 183 184 static void amdgdu_amdkfd_restore_mem_worker(struct work_struct *work) 185 { 186 struct delayed_work *dwork = to_delayed_work(work); 187 struct kgd_mem *mem = container_of(dwork, struct kgd_mem, data2.work); 188 struct amdgpu_device *adev; 189 struct mm_struct *mm; 190 191 mutex_lock(&mem->data2.lock); 192 > 193 adev = mem->data2.bo->adev; 194 mm = mem->data2.mm; 195 196 /* Restoration may have been canceled by another eviction or 197 * could already be done by a restore scheduled earlier */ 198 if (mem->data2.evicted == 1) { 199 amdgpu_amdkfd_gpuvm_restore_mem(mem, mm); 200 mem->data2.evicted = 0; 201 } 202 203 mutex_unlock(&mem->data2.lock); 204 } 205 206 int amdgpu_amdkfd_schedule_restore_mem(struct amdgpu_device *adev, 207 struct kgd_mem *mem, 208 struct mm_struct *mm, 209 unsigned long delay) 210 { 211 int r = 0; 212 213 if (!adev->kfd) 214 return -ENODEV; 215 216 mutex_lock(&mem->data2.lock); 217 218 if (mem->data2.evicted <= 1) { 219 /* Buffer is not evicted (== 0) or its restoration is 220 * already scheduled (== 1) */ 221 pr_err("Unbalanced restore of evicted buffer %p\n", mem); 222 mutex_unlock(&mem->data2.lock); 223 return -EFAULT; 224 } else if (--mem->data2.evicted > 1) { 225 mutex_unlock(&mem->data2.lock); 226 return 0; 227 } 228 229 /* mem->data2.evicted is 1 after decrememting. Schedule 230 * restoration. */ 231 if (delayed_work_pending(&mem->data2.work)) 232 cancel_delayed_work(&mem->data2.work); 233 mem->data2.mm = mm; 234 INIT_DELAYED_WORK(&mem->data2.work, 235 amdgdu_amdkfd_restore_mem_worker); 236 schedule_delayed_work(&mem->data2.work, delay); 237 238 mutex_unlock(&mem->data2.lock); 239 240 return r; 241 } 242 243 void amdgpu_amdkfd_cancel_restore_mem(struct amdgpu_device *adev, 244 struct kgd_mem *mem) 245 { 246 if (delayed_work_pending(&mem->data2.work)) 247 cancel_delayed_work_sync(&mem->data2.work); 248 } 249 250 u32 pool_to_domain(enum kgd_memory_pool p) 251 { 252 switch (p) { 253 case KGD_POOL_FRAMEBUFFER: return AMDGPU_GEM_DOMAIN_VRAM; 254 default: return AMDGPU_GEM_DOMAIN_GTT; 255 } 256 } 257 258 int alloc_gtt_mem(struct kgd_dev *kgd, size_t size, 259 void **mem_obj, uint64_t *gpu_addr, 260 void **cpu_ptr) 261 { 262 struct amdgpu_device *rdev = (struct amdgpu_device *)kgd; 263 struct kgd_mem **mem = (struct kgd_mem **) mem_obj; 264 int r; 265 266 BUG_ON(kgd == NULL); 267 BUG_ON(gpu_addr == NULL); 268 BUG_ON(cpu_ptr == NULL); 269 270 *mem = kmalloc(sizeof(struct kgd_mem), GFP_KERNEL); 271 if ((*mem) == NULL) 272 return -ENOMEM; 273 274 r = amdgpu_bo_create(rdev, size, PAGE_SIZE, true, AMDGPU_GEM_DOMAIN_GTT, 275 AMDGPU_GEM_CREATE_CPU_GTT_USWC, NULL, NULL, &((*mem)->data1.bo)); 276 if (r) { 277 dev_err(rdev->dev, 278 "failed to allocate BO for amdkfd (%d)\n", r); 279 return r; 280 } 281 282 /* map the buffer */ 283 r = amdgpu_bo_reserve((*mem)->data1.bo, true); 284 if (r) { 285 dev_err(rdev->dev, "(%d) failed to reserve bo for amdkfd\n", r); 286 goto allocate_mem_reserve_bo_failed; 287 } 288 289 r = amdgpu_bo_pin((*mem)->data1.bo, AMDGPU_GEM_DOMAIN_GTT, 290 &(*mem)->data1.gpu_addr); 291 if (r) { 292 dev_err(rdev->dev, "(%d) failed to pin bo for amdkfd\n", r); 293 goto allocate_mem_pin_bo_failed; 294 } 295 *gpu_addr = (*mem)->data1.gpu_addr; 296 297 r = amdgpu_bo_kmap((*mem)->data1.bo, &(*mem)->data1.cpu_ptr); 298 if (r) { 299 dev_err(rdev->dev, 300 "(%d) failed to map bo to kernel for amdkfd\n", r); 301 goto allocate_mem_kmap_bo_failed; 302 } 303 *cpu_ptr = (*mem)->data1.cpu_ptr; 304 305 amdgpu_bo_unreserve((*mem)->data1.bo); 306 307 return 0; 308 309 allocate_mem_kmap_bo_failed: 310 amdgpu_bo_unpin((*mem)->data1.bo); 311 allocate_mem_pin_bo_failed: 312 amdgpu_bo_unreserve((*mem)->data1.bo); 313 allocate_mem_reserve_bo_failed: 314 amdgpu_bo_unref(&(*mem)->data1.bo); 315 316 return r; 317 } 318 319 void free_gtt_mem(struct kgd_dev *kgd, void *mem_obj) 320 { 321 struct kgd_mem *mem = (struct kgd_mem *) mem_obj; 322 323 BUG_ON(mem == NULL); 324 325 amdgpu_bo_reserve(mem->data1.bo, true); 326 amdgpu_bo_kunmap(mem->data1.bo); 327 amdgpu_bo_unpin(mem->data1.bo); 328 amdgpu_bo_unreserve(mem->data1.bo); 329 amdgpu_bo_unref(&(mem->data1.bo)); 330 kfree(mem); 331 } 332 333 void get_local_mem_info(struct kgd_dev *kgd, 334 struct kfd_local_mem_info *mem_info) 335 { 336 uint64_t address_mask; 337 resource_size_t aper_limit; 338 struct amdgpu_device *rdev = (struct amdgpu_device *)kgd; 339 340 BUG_ON(kgd == NULL); 341 342 address_mask = ~((1UL << 40) - 1); 343 aper_limit = rdev->mc.aper_base + rdev->mc.aper_size; 344 memset(mem_info, 0, sizeof(*mem_info)); 345 if (!(rdev->mc.aper_base & address_mask || 346 aper_limit & address_mask)) { 347 mem_info->local_mem_size_public = rdev->mc.visible_vram_size; 348 mem_info->local_mem_size_private = rdev->mc.real_vram_size - 349 rdev->mc.visible_vram_size; 350 mem_info->vram_width = rdev->mc.vram_width; 351 } else { > 352 pr_err("amdgpu: vram aperture is out of 40bit address base: 0x%llx limit 0x%llx\n", 353 rdev->mc.aper_base, aper_limit); 354 } 355 356 pr_debug("amdgpu: address base: 0x%llx limit 0x%llx public 0x%llx private 0x%llx\n", 357 rdev->mc.aper_base, aper_limit, 358 mem_info->local_mem_size_public, 359 mem_info->local_mem_size_private); 360 361 if (amdgpu_powerplay || rdev->pm.funcs->get_mclk) 362 mem_info->mem_clk_max = amdgpu_dpm_get_mclk(rdev, false) / 100; 363 } 364 --- 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@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel