[radeon-alex:amd-mainline-hybrid-4.11 1373/2257] drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c:352:3: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 2 has type 'resource_size_t'

kbuild test robot fengguang.wu at intel.com
Fri Jul 28 11:21:50 UTC 2017


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-randconfig-i1-201730 (attached as .config)
compiler: gcc-4.8 (Debian 4.8.4-1) 4.8.4
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:2: warning: left shift count >= width of type [enabled by default]
     address_mask = ~((1UL << 40) - 1);
     ^
>> drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c:352:3: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 2 has type 'resource_size_t' [-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:3: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 3 has type 'resource_size_t' [-Wformat=]
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c:356:2: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 2 has type 'resource_size_t' [-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:2: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 3 has type 'resource_size_t' [-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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 22499 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20170728/6c0ac95b/attachment-0001.gz>


More information about the dri-devel mailing list