tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git pending-fixes head: 37b3c1c31342cdb8ee57f80a3a78cfe651a3f2ae commit: 2d2b17d08bfc3d98cf93622e8c6543eaaf02dabe [787/854] sparc: Unbreak the build config: sparc-randconfig-r005-20221002 compiler: sparc-linux-gcc (GCC) 12.1.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=2d2b17d08bfc3d98cf93622e8c6543eaaf02dabe git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git fetch --no-tags linux-next pending-fixes git checkout 2d2b17d08bfc3d98cf93622e8c6543eaaf02dabe # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=sparc SHELL=/bin/bash If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot All errors (new ones prefixed by >>): arch/sparc/mm/srmmu.c: In function 'poke_hypersparc': arch/sparc/mm/srmmu.c:1081:32: error: variable 'clear' set but not used [-Werror=unused-but-set-variable] 1081 | volatile unsigned long clear; | ^~~~~ arch/sparc/mm/srmmu.c: In function 'smp_flush_cache_mm': >> arch/sparc/mm/srmmu.c:1662:30: error: 'smpfunc_t' undeclared (first use in this function); did you mean 'cmp_func_t'? 1662 | xc1((smpfunc_t) local_ops->cache_mm, (unsigned long) mm); | ^~~~~~~~~ | cmp_func_t arch/sparc/mm/srmmu.c:1662:30: note: each undeclared identifier is reported only once for each function it appears in >> arch/sparc/mm/srmmu.c:1662:40: error: expected ')' before 'local_ops' 1662 | xc1((smpfunc_t) local_ops->cache_mm, (unsigned long) mm); | ~ ^~~~~~~~~~ | ) >> arch/sparc/mm/srmmu.c:1662:25: error: too few arguments to function 'xc1' 1662 | xc1((smpfunc_t) local_ops->cache_mm, (unsigned long) mm); | ^~~ In file included from arch/sparc/include/asm/smp.h:7, from arch/sparc/include/asm/switch_to_32.h:5, from arch/sparc/include/asm/switch_to.h:7, from arch/sparc/include/asm/ptrace.h:120, from arch/sparc/include/asm/thread_info_32.h:19, from arch/sparc/include/asm/thread_info.h:7, from include/linux/thread_info.h:58, from arch/sparc/include/asm/current.h:15, from include/linux/mutex.h:14, from include/linux/seq_file.h:8, from arch/sparc/mm/srmmu.c:12: arch/sparc/include/asm/smp_32.h:71:20: note: declared here 71 | static inline void xc1(void *func, unsigned long arg1) | ^~~ arch/sparc/mm/srmmu.c: In function 'smp_flush_tlb_mm': arch/sparc/mm/srmmu.c:1674:30: error: 'smpfunc_t' undeclared (first use in this function); did you mean 'cmp_func_t'? 1674 | xc1((smpfunc_t) local_ops->tlb_mm, (unsigned long) mm); | ^~~~~~~~~ | cmp_func_t arch/sparc/mm/srmmu.c:1674:40: error: expected ')' before 'local_ops' 1674 | xc1((smpfunc_t) local_ops->tlb_mm, (unsigned long) mm); | ~ ^~~~~~~~~~ | ) arch/sparc/mm/srmmu.c:1674:25: error: too few arguments to function 'xc1' 1674 | xc1((smpfunc_t) local_ops->tlb_mm, (unsigned long) mm); | ^~~ arch/sparc/include/asm/smp_32.h:71:20: note: declared here 71 | static inline void xc1(void *func, unsigned long arg1) | ^~~ arch/sparc/mm/srmmu.c: In function 'smp_flush_cache_range': arch/sparc/mm/srmmu.c:1694:30: error: 'smpfunc_t' undeclared (first use in this function); did you mean 'cmp_func_t'? 1694 | xc3((smpfunc_t) local_ops->cache_range, | ^~~~~~~~~ | cmp_func_t arch/sparc/mm/srmmu.c:1694:40: error: expected ')' before 'local_ops' 1694 | xc3((smpfunc_t) local_ops->cache_range, | ~ ^~~~~~~~~~ | ) >> arch/sparc/mm/srmmu.c:1694:25: error: too few arguments to function 'xc3' 1694 | xc3((smpfunc_t) local_ops->cache_range, | ^~~ arch/sparc/include/asm/smp_32.h:80:20: note: declared here 80 | static inline void xc3(void *func, unsigned long arg1, unsigned long arg2, | ^~~ arch/sparc/mm/srmmu.c: In function 'smp_flush_tlb_range': arch/sparc/mm/srmmu.c:1711:30: error: 'smpfunc_t' undeclared (first use in this function); did you mean 'cmp_func_t'? 1711 | xc3((smpfunc_t) local_ops->tlb_range, | ^~~~~~~~~ | cmp_func_t arch/sparc/mm/srmmu.c:1711:40: error: expected ')' before 'local_ops' 1711 | xc3((smpfunc_t) local_ops->tlb_range, | ~ ^~~~~~~~~~ | ) arch/sparc/mm/srmmu.c:1711:25: error: too few arguments to function 'xc3' 1711 | xc3((smpfunc_t) local_ops->tlb_range, | ^~~ arch/sparc/include/asm/smp_32.h:80:20: note: declared here 80 | static inline void xc3(void *func, unsigned long arg1, unsigned long arg2, | ^~~ arch/sparc/mm/srmmu.c: In function 'smp_flush_cache_page': arch/sparc/mm/srmmu.c:1726:30: error: 'smpfunc_t' undeclared (first use in this function); did you mean 'cmp_func_t'? 1726 | xc2((smpfunc_t) local_ops->cache_page, | ^~~~~~~~~ | cmp_func_t arch/sparc/mm/srmmu.c:1726:40: error: expected ')' before 'local_ops' 1726 | xc2((smpfunc_t) local_ops->cache_page, | ~ ^~~~~~~~~~ | ) >> arch/sparc/mm/srmmu.c:1726:25: error: too few arguments to function 'xc2' 1726 | xc2((smpfunc_t) local_ops->cache_page, | ^~~ arch/sparc/include/asm/smp_32.h:75:20: note: declared here 75 | static inline void xc2(void *func, unsigned long arg1, unsigned long arg2) | ^~~ arch/sparc/mm/srmmu.c: In function 'smp_flush_tlb_page': arch/sparc/mm/srmmu.c:1741:30: error: 'smpfunc_t' undeclared (first use in this function); did you mean 'cmp_func_t'? 1741 | xc2((smpfunc_t) local_ops->tlb_page, | ^~~~~~~~~ | cmp_func_t arch/sparc/mm/srmmu.c:1741:40: error: expected ')' before 'local_ops' 1741 | xc2((smpfunc_t) local_ops->tlb_page, | ~ ^~~~~~~~~~ | ) arch/sparc/mm/srmmu.c:1741:25: error: too few arguments to function 'xc2' 1741 | xc2((smpfunc_t) local_ops->tlb_page, | ^~~ arch/sparc/include/asm/smp_32.h:75:20: note: declared here 75 | static inline void xc2(void *func, unsigned long arg1, unsigned long arg2) | ^~~ arch/sparc/mm/srmmu.c: In function 'smp_flush_page_to_ram': arch/sparc/mm/srmmu.c:1756:14: error: 'smpfunc_t' undeclared (first use in this function); did you mean 'cmp_func_t'? 1756 | xc1((smpfunc_t) local_ops->page_to_ram, page); | ^~~~~~~~~ | cmp_func_t arch/sparc/mm/srmmu.c:1756:24: error: expected ')' before 'local_ops' 1756 | xc1((smpfunc_t) local_ops->page_to_ram, page); | ~ ^~~~~~~~~~ | ) arch/sparc/mm/srmmu.c:1756:9: error: too few arguments to function 'xc1' 1756 | xc1((smpfunc_t) local_ops->page_to_ram, page); | ^~~ arch/sparc/include/asm/smp_32.h:71:20: note: declared here 71 | static inline void xc1(void *func, unsigned long arg1) | ^~~ arch/sparc/mm/srmmu.c: In function 'smp_flush_sig_insns': arch/sparc/mm/srmmu.c:1767:22: error: 'smpfunc_t' undeclared (first use in this function); did you mean 'cmp_func_t'? 1767 | xc2((smpfunc_t) local_ops->sig_insns, | ^~~~~~~~~ | cmp_func_t arch/sparc/mm/srmmu.c:1767:32: error: expected ')' before 'local_ops' 1767 | xc2((smpfunc_t) local_ops->sig_insns, | ~ ^~~~~~~~~~ | ) arch/sparc/mm/srmmu.c:1767:17: error: too few arguments to function 'xc2' 1767 | xc2((smpfunc_t) local_ops->sig_insns, | ^~~ arch/sparc/include/asm/smp_32.h:75:20: note: declared here 75 | static inline void xc2(void *func, unsigned long arg1, unsigned long arg2) | ^~~ cc1: all warnings being treated as errors vim +1662 arch/sparc/mm/srmmu.c ^1da177e4c3f41 Linus Torvalds 2005-04-16 1654 5d83d66635bb16 David S. Miller 2012-05-13 1655 static void smp_flush_cache_mm(struct mm_struct *mm) 5d83d66635bb16 David S. Miller 2012-05-13 1656 { 5d83d66635bb16 David S. Miller 2012-05-13 1657 if (mm->context != NO_CONTEXT) { 5d83d66635bb16 David S. Miller 2012-05-13 1658 cpumask_t cpu_mask; 5d83d66635bb16 David S. Miller 2012-05-13 1659 cpumask_copy(&cpu_mask, mm_cpumask(mm)); 5d83d66635bb16 David S. Miller 2012-05-13 1660 cpumask_clear_cpu(smp_processor_id(), &cpu_mask); 5d83d66635bb16 David S. Miller 2012-05-13 1661 if (!cpumask_empty(&cpu_mask)) 5d83d66635bb16 David S. Miller 2012-05-13 @1662 xc1((smpfunc_t) local_ops->cache_mm, (unsigned long) mm); 5d83d66635bb16 David S. Miller 2012-05-13 1663 local_ops->cache_mm(mm); 5d83d66635bb16 David S. Miller 2012-05-13 1664 } 5d83d66635bb16 David S. Miller 2012-05-13 1665 } 5d83d66635bb16 David S. Miller 2012-05-13 1666 5d83d66635bb16 David S. Miller 2012-05-13 1667 static void smp_flush_tlb_mm(struct mm_struct *mm) 5d83d66635bb16 David S. Miller 2012-05-13 1668 { 5d83d66635bb16 David S. Miller 2012-05-13 1669 if (mm->context != NO_CONTEXT) { 5d83d66635bb16 David S. Miller 2012-05-13 1670 cpumask_t cpu_mask; 5d83d66635bb16 David S. Miller 2012-05-13 1671 cpumask_copy(&cpu_mask, mm_cpumask(mm)); 5d83d66635bb16 David S. Miller 2012-05-13 1672 cpumask_clear_cpu(smp_processor_id(), &cpu_mask); 5d83d66635bb16 David S. Miller 2012-05-13 1673 if (!cpumask_empty(&cpu_mask)) { 5d83d66635bb16 David S. Miller 2012-05-13 1674 xc1((smpfunc_t) local_ops->tlb_mm, (unsigned long) mm); 5d83d66635bb16 David S. Miller 2012-05-13 1675 if (atomic_read(&mm->mm_users) == 1 && current->active_mm == mm) 5d83d66635bb16 David S. Miller 2012-05-13 1676 cpumask_copy(mm_cpumask(mm), 5d83d66635bb16 David S. Miller 2012-05-13 1677 cpumask_of(smp_processor_id())); 5d83d66635bb16 David S. Miller 2012-05-13 1678 } 5d83d66635bb16 David S. Miller 2012-05-13 1679 local_ops->tlb_mm(mm); 5d83d66635bb16 David S. Miller 2012-05-13 1680 } 5d83d66635bb16 David S. Miller 2012-05-13 1681 } 5d83d66635bb16 David S. Miller 2012-05-13 1682 5d83d66635bb16 David S. Miller 2012-05-13 1683 static void smp_flush_cache_range(struct vm_area_struct *vma, 5d83d66635bb16 David S. Miller 2012-05-13 1684 unsigned long start, 5d83d66635bb16 David S. Miller 2012-05-13 1685 unsigned long end) 5d83d66635bb16 David S. Miller 2012-05-13 1686 { 5d83d66635bb16 David S. Miller 2012-05-13 1687 struct mm_struct *mm = vma->vm_mm; 5d83d66635bb16 David S. Miller 2012-05-13 1688 5d83d66635bb16 David S. Miller 2012-05-13 1689 if (mm->context != NO_CONTEXT) { 5d83d66635bb16 David S. Miller 2012-05-13 1690 cpumask_t cpu_mask; 5d83d66635bb16 David S. Miller 2012-05-13 1691 cpumask_copy(&cpu_mask, mm_cpumask(mm)); 5d83d66635bb16 David S. Miller 2012-05-13 1692 cpumask_clear_cpu(smp_processor_id(), &cpu_mask); 5d83d66635bb16 David S. Miller 2012-05-13 1693 if (!cpumask_empty(&cpu_mask)) 5d83d66635bb16 David S. Miller 2012-05-13 @1694 xc3((smpfunc_t) local_ops->cache_range, 5d83d66635bb16 David S. Miller 2012-05-13 1695 (unsigned long) vma, start, end); 5d83d66635bb16 David S. Miller 2012-05-13 1696 local_ops->cache_range(vma, start, end); 5d83d66635bb16 David S. Miller 2012-05-13 1697 } 5d83d66635bb16 David S. Miller 2012-05-13 1698 } 5d83d66635bb16 David S. Miller 2012-05-13 1699 5d83d66635bb16 David S. Miller 2012-05-13 1700 static void smp_flush_tlb_range(struct vm_area_struct *vma, 5d83d66635bb16 David S. Miller 2012-05-13 1701 unsigned long start, 5d83d66635bb16 David S. Miller 2012-05-13 1702 unsigned long end) 5d83d66635bb16 David S. Miller 2012-05-13 1703 { 5d83d66635bb16 David S. Miller 2012-05-13 1704 struct mm_struct *mm = vma->vm_mm; 5d83d66635bb16 David S. Miller 2012-05-13 1705 5d83d66635bb16 David S. Miller 2012-05-13 1706 if (mm->context != NO_CONTEXT) { 5d83d66635bb16 David S. Miller 2012-05-13 1707 cpumask_t cpu_mask; 5d83d66635bb16 David S. Miller 2012-05-13 1708 cpumask_copy(&cpu_mask, mm_cpumask(mm)); 5d83d66635bb16 David S. Miller 2012-05-13 1709 cpumask_clear_cpu(smp_processor_id(), &cpu_mask); 5d83d66635bb16 David S. Miller 2012-05-13 1710 if (!cpumask_empty(&cpu_mask)) 5d83d66635bb16 David S. Miller 2012-05-13 1711 xc3((smpfunc_t) local_ops->tlb_range, 5d83d66635bb16 David S. Miller 2012-05-13 1712 (unsigned long) vma, start, end); 5d83d66635bb16 David S. Miller 2012-05-13 1713 local_ops->tlb_range(vma, start, end); 5d83d66635bb16 David S. Miller 2012-05-13 1714 } 5d83d66635bb16 David S. Miller 2012-05-13 1715 } 5d83d66635bb16 David S. Miller 2012-05-13 1716 5d83d66635bb16 David S. Miller 2012-05-13 1717 static void smp_flush_cache_page(struct vm_area_struct *vma, unsigned long page) 5d83d66635bb16 David S. Miller 2012-05-13 1718 { 5d83d66635bb16 David S. Miller 2012-05-13 1719 struct mm_struct *mm = vma->vm_mm; 5d83d66635bb16 David S. Miller 2012-05-13 1720 5d83d66635bb16 David S. Miller 2012-05-13 1721 if (mm->context != NO_CONTEXT) { 5d83d66635bb16 David S. Miller 2012-05-13 1722 cpumask_t cpu_mask; 5d83d66635bb16 David S. Miller 2012-05-13 1723 cpumask_copy(&cpu_mask, mm_cpumask(mm)); 5d83d66635bb16 David S. Miller 2012-05-13 1724 cpumask_clear_cpu(smp_processor_id(), &cpu_mask); 5d83d66635bb16 David S. Miller 2012-05-13 1725 if (!cpumask_empty(&cpu_mask)) 5d83d66635bb16 David S. Miller 2012-05-13 @1726 xc2((smpfunc_t) local_ops->cache_page, 5d83d66635bb16 David S. Miller 2012-05-13 1727 (unsigned long) vma, page); 5d83d66635bb16 David S. Miller 2012-05-13 1728 local_ops->cache_page(vma, page); 5d83d66635bb16 David S. Miller 2012-05-13 1729 } 5d83d66635bb16 David S. Miller 2012-05-13 1730 } 5d83d66635bb16 David S. Miller 2012-05-13 1731 :::::: The code at line 1662 was first introduced by commit :::::: 5d83d66635bb1642f3c6a3690c28ff4afdf1ae5f sparc32: Move cache and TLB flushes over to method ops. :::::: TO: David S. Miller :::::: CC: David S. Miller -- 0-DAY CI Kernel Test Service https://01.org/lkp