Hi Thierry,
kernel test robot noticed the following build warnings:
[auto build test WARNING on akpm-mm/mm-everything] [also build test WARNING on next-20260122] [cannot apply to drm-misc/drm-misc-next robh/for-next linus/master v6.19-rc6] [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/Thierry-Reding/dt-bindings-re... base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything patch link: https://lore.kernel.org/r/20260122161009.3865888-7-thierry.reding%40kernel.o... patch subject: [PATCH v2 06/10] dma-buf: heaps: Add support for Tegra VPR config: i386-allmodconfig (https://download.01.org/0day-ci/archive/20260123/202601231123.4V5wVUur-lkp@i...) compiler: gcc-14 (Debian 14.2.0-19) 14.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260123/202601231123.4V5wVUur-lkp@i...)
If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot lkp@intel.com | Closes: https://lore.kernel.org/oe-kbuild-all/202601231123.4V5wVUur-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/dma-buf/heaps/tegra-vpr.c: In function 'tegra_vpr_protect_pages': drivers/dma-buf/heaps/tegra-vpr.c:205:21: error: implicit declaration of function '__ptep_get'; did you mean 'ptep_get'? [-Wimplicit-function-declaration] 205 | pte_t pte = __ptep_get(ptep); | ^~~~~~~~~~ | ptep_get drivers/dma-buf/heaps/tegra-vpr.c:205:21: error: invalid initializer drivers/dma-buf/heaps/tegra-vpr.c:207:15: error: implicit declaration of function 'clear_pte_bit'; did you mean 'clear_ptes'? [-Wimplicit-function-declaration] 207 | pte = clear_pte_bit(pte, __pgprot(PROT_NORMAL)); | ^~~~~~~~~~~~~ | clear_ptes In file included from arch/x86/include/asm/paravirt_types.h:11, from arch/x86/include/asm/ptrace.h:175, from arch/x86/include/asm/math_emu.h:5, from arch/x86/include/asm/processor.h:13, from arch/x86/include/asm/timex.h:5, from include/linux/timex.h:67, from include/linux/time32.h:13, from include/linux/time.h:60, from include/linux/stat.h:19, from include/linux/fs_dirent.h:5, from include/linux/fs/super_types.h:5, from include/linux/fs/super.h:5, from include/linux/fs.h:5, from include/linux/debugfs.h:15, from drivers/dma-buf/heaps/tegra-vpr.c:12: drivers/dma-buf/heaps/tegra-vpr.c:207:43: error: 'PROT_NORMAL' undeclared (first use in this function) 207 | pte = clear_pte_bit(pte, __pgprot(PROT_NORMAL)); | ^~~~~~~~~~~ arch/x86/include/asm/pgtable_types.h:202:48: note: in definition of macro '__pgprot' 202 | #define __pgprot(x) ((pgprot_t) { (x) } ) | ^ drivers/dma-buf/heaps/tegra-vpr.c:207:43: note: each undeclared identifier is reported only once for each function it appears in 207 | pte = clear_pte_bit(pte, __pgprot(PROT_NORMAL)); | ^~~~~~~~~~~ arch/x86/include/asm/pgtable_types.h:202:48: note: in definition of macro '__pgprot' 202 | #define __pgprot(x) ((pgprot_t) { (x) } ) | ^ drivers/dma-buf/heaps/tegra-vpr.c:208:15: error: implicit declaration of function 'set_pte_bit'; did you mean 'set_pte_at'? [-Wimplicit-function-declaration] 208 | pte = set_pte_bit(pte, __pgprot(PROT_DEVICE_nGnRnE)); | ^~~~~~~~~~~ | set_pte_at drivers/dma-buf/heaps/tegra-vpr.c:208:41: error: 'PROT_DEVICE_nGnRnE' undeclared (first use in this function) 208 | pte = set_pte_bit(pte, __pgprot(PROT_DEVICE_nGnRnE)); | ^~~~~~~~~~~~~~~~~~ arch/x86/include/asm/pgtable_types.h:202:48: note: in definition of macro '__pgprot' 202 | #define __pgprot(x) ((pgprot_t) { (x) } ) | ^ drivers/dma-buf/heaps/tegra-vpr.c:210:9: error: implicit declaration of function '__set_pte'; did you mean 'set_pte'? [-Wimplicit-function-declaration] 210 | __set_pte(ptep, pte); | ^~~~~~~~~ | set_pte drivers/dma-buf/heaps/tegra-vpr.c: In function 'tegra_vpr_unprotect_pages': drivers/dma-buf/heaps/tegra-vpr.c:218:21: error: invalid initializer 218 | pte_t pte = __ptep_get(ptep); | ^~~~~~~~~~ drivers/dma-buf/heaps/tegra-vpr.c:220:43: error: 'PROT_DEVICE_nGnRnE' undeclared (first use in this function) 220 | pte = clear_pte_bit(pte, __pgprot(PROT_DEVICE_nGnRnE)); | ^~~~~~~~~~~~~~~~~~ arch/x86/include/asm/pgtable_types.h:202:48: note: in definition of macro '__pgprot' 202 | #define __pgprot(x) ((pgprot_t) { (x) } ) | ^ drivers/dma-buf/heaps/tegra-vpr.c:221:41: error: 'PROT_NORMAL' undeclared (first use in this function) 221 | pte = set_pte_bit(pte, __pgprot(PROT_NORMAL)); | ^~~~~~~~~~~ arch/x86/include/asm/pgtable_types.h:202:48: note: in definition of macro '__pgprot' 202 | #define __pgprot(x) ((pgprot_t) { (x) } ) | ^ drivers/dma-buf/heaps/tegra-vpr.c: In function 'tegra_vpr_buffer_allocate':
drivers/dma-buf/heaps/tegra-vpr.c:612:30: warning: variable 'last' set but not used [-Wunused-but-set-variable]
612 | unsigned long first, last; | ^~~~
drivers/dma-buf/heaps/tegra-vpr.c:612:23: warning: variable 'first' set but not used [-Wunused-but-set-variable]
612 | unsigned long first, last; | ^~~~~ drivers/dma-buf/heaps/tegra-vpr.c: In function 'tegra_vpr_buffer_release': drivers/dma-buf/heaps/tegra-vpr.c:695:30: warning: variable 'last' set but not used [-Wunused-but-set-variable] 695 | unsigned long first, last; | ^~~~ drivers/dma-buf/heaps/tegra-vpr.c:695:23: warning: variable 'first' set but not used [-Wunused-but-set-variable] 695 | unsigned long first, last; | ^~~~~ drivers/dma-buf/heaps/tegra-vpr.c: In function 'tegra_vpr_setup_chunks':
drivers/dma-buf/heaps/tegra-vpr.c:8:21: warning: format '%lu' expects argument of type 'long unsigned int', but argument 6 has type 'size_t' {aka 'unsigned int'} [-Wformat=]
8 | #define pr_fmt(fmt) "tegra-vpr: " fmt | ^~~~~~~~~~~~~ include/linux/dynamic_debug.h:231:29: note: in expansion of macro 'pr_fmt' 231 | func(&id, ##__VA_ARGS__); \ | ^~~~~~~~~~~ include/linux/dynamic_debug.h:259:9: note: in expansion of macro '__dynamic_func_call_cls' 259 | __dynamic_func_call_cls(__UNIQUE_ID(ddebug), cls, fmt, func, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~~~~~~~~ include/linux/dynamic_debug.h:261:9: note: in expansion of macro '_dynamic_func_call_cls' 261 | _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~~~~~~~ include/linux/dynamic_debug.h:280:9: note: in expansion of macro '_dynamic_func_call' 280 | _dynamic_func_call(fmt, __dynamic_pr_debug, \ | ^~~~~~~~~~~~~~~~~~ include/linux/printk.h:636:9: note: in expansion of macro 'dynamic_pr_debug' 636 | dynamic_pr_debug(fmt, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~ drivers/dma-buf/heaps/tegra-vpr.c:1075:17: note: in expansion of macro 'pr_debug' 1075 | pr_debug(" %2u: %pap-%pap (%lu MiB)\n", i, &start, &end, | ^~~~~~~~ drivers/dma-buf/heaps/tegra-vpr.c: In function 'tegra_vpr_add_heap': drivers/dma-buf/heaps/tegra-vpr.c:1120:30: warning: variable 'last' set but not used [-Wunused-but-set-variable] 1120 | unsigned long first, last; | ^~~~ drivers/dma-buf/heaps/tegra-vpr.c:1120:23: warning: variable 'first' set but not used [-Wunused-but-set-variable] 1120 | unsigned long first, last; | ^~~~~
vim +/last +612 drivers/dma-buf/heaps/tegra-vpr.c
605 606 static struct tegra_vpr_buffer * 607 tegra_vpr_buffer_allocate(struct tegra_vpr *vpr, size_t size) 608 { 609 unsigned int num_pages = size >> PAGE_SHIFT; 610 unsigned int order = get_order(size); 611 struct tegra_vpr_buffer *buffer;
612 unsigned long first, last;
613 int pageno, err; 614 pgoff_t i; 615 616 /* 617 * "order" defines the alignment and size, so this may result in 618 * fragmented memory depending on the allocation patterns. However, 619 * since this is used primarily for video frames, it is expected that 620 * a number of buffers of the same size will be allocated, so 621 * fragmentation should be negligible. 622 */ 623 pageno = tegra_vpr_allocate_region(vpr, num_pages, 1); 624 if (pageno < 0) 625 return ERR_PTR(pageno); 626 627 first = find_first_bit(vpr->bitmap, vpr->num_pages); 628 last = find_last_bit(vpr->bitmap, vpr->num_pages); 629 630 buffer = kzalloc(sizeof(*buffer), GFP_KERNEL); 631 if (!buffer) { 632 err = -ENOMEM; 633 goto release; 634 } 635 636 INIT_LIST_HEAD(&buffer->attachments); 637 INIT_LIST_HEAD(&buffer->list); 638 mutex_init(&buffer->lock); 639 buffer->start = vpr->base + (pageno << PAGE_SHIFT); 640 buffer->limit = buffer->start + size; 641 buffer->size = size; 642 buffer->num_pages = num_pages; 643 buffer->pageno = pageno; 644 buffer->order = order; 645 646 buffer->pages = kmalloc_array(buffer->num_pages, 647 sizeof(*buffer->pages), 648 GFP_KERNEL); 649 if (!buffer->pages) { 650 err = -ENOMEM; 651 goto free; 652 } 653 654 /* track which chunks this buffer overlaps */ 655 if (vpr->num_chunks > 0) { 656 unsigned int limit = buffer->pageno + buffer->num_pages, i; 657 658 for (i = 0; i < vpr->num_chunks; i++) { 659 struct tegra_vpr_chunk *chunk = &vpr->chunks[i]; 660 661 if (tegra_vpr_chunk_overlaps(chunk, pageno, limit)) 662 set_bit(i, buffer->chunks); 663 } 664 665 /* activate chunks if necessary */ 666 err = tegra_vpr_activate_chunks(vpr, buffer); 667 if (err < 0) 668 goto free; 669 670 /* track first and last allocated pages */ 671 if (buffer->pageno < vpr->first) 672 vpr->first = buffer->pageno; 673 674 if (limit - 1 > vpr->last) 675 vpr->last = limit - 1; 676 } 677 678 for (i = 0; i < buffer->num_pages; i++) 679 buffer->pages[i] = &vpr->start_page[pageno + i]; 680 681 return buffer; 682 683 free: 684 kfree(buffer->pages); 685 kfree(buffer); 686 release: 687 bitmap_release_region(vpr->bitmap, pageno, order); 688 return ERR_PTR(err); 689 } 690
linaro-mm-sig@lists.linaro.org