Hi irqchip-bot, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on powerpc/next] [also build test WARNING on linux/master linus/master v5.13-rc4 next-20210604] [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] url: https://github.com/0day-ci/linux/commits/irqchip-bot-for-Marc-Zyngier/powerpc-Drop-dependency-between-asm-irq-h-and-linux-irqdomain-h/20210606-205106 base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next config: powerpc-allyesconfig (attached as .config) compiler: powerpc64-linux-gcc (GCC) 9.3.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://github.com/0day-ci/linux/commit/72415db4cc9ec9987380123553c3222a3568f37f git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review irqchip-bot-for-Marc-Zyngier/powerpc-Drop-dependency-between-asm-irq-h-and-linux-irqdomain-h/20210606-205106 git checkout 72415db4cc9ec9987380123553c3222a3568f37f # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=powerpc If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All warnings (new ones prefixed by >>): arch/powerpc/platforms/ps3/interrupt.c: In function 'ps3_virq_setup': arch/powerpc/platforms/ps3/interrupt.c:181:10: error: implicit declaration of function 'irq_create_mapping' [-Werror=implicit-function-declaration] 181 | *virq = irq_create_mapping(NULL, outlet); | ^~~~~~~~~~~~~~~~~~ arch/powerpc/platforms/ps3/interrupt.c:206:2: error: implicit declaration of function 'irq_dispose_mapping' [-Werror=implicit-function-declaration] 206 | irq_dispose_mapping(*virq); | ^~~~~~~~~~~~~~~~~~~ arch/powerpc/platforms/ps3/interrupt.c: At top level: >> arch/powerpc/platforms/ps3/interrupt.c:670:11: warning: 'enum irq_domain_bus_token' declared inside parameter list will not be visible outside of this definition or declaration 670 | enum irq_domain_bus_token bus_token) | ^~~~~~~~~~~~~~~~~~~~ arch/powerpc/platforms/ps3/interrupt.c:670:32: error: parameter 3 ('bus_token') has incomplete type 670 | enum irq_domain_bus_token bus_token) | ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~ arch/powerpc/platforms/ps3/interrupt.c:669:12: error: function declaration isn't a prototype [-Werror=strict-prototypes] 669 | static int ps3_host_match(struct irq_domain *h, struct device_node *np, | ^~~~~~~~~~~~~~ arch/powerpc/platforms/ps3/interrupt.c:676:21: error: variable 'ps3_host_ops' has initializer but incomplete type 676 | static const struct irq_domain_ops ps3_host_ops = { | ^~~~~~~~~~~~~~ arch/powerpc/platforms/ps3/interrupt.c:677:3: error: 'const struct irq_domain_ops' has no member named 'map' 677 | .map = ps3_host_map, | ^~~ >> arch/powerpc/platforms/ps3/interrupt.c:677:9: warning: excess elements in struct initializer 677 | .map = ps3_host_map, | ^~~~~~~~~~~~ arch/powerpc/platforms/ps3/interrupt.c:677:9: note: (near initialization for 'ps3_host_ops') arch/powerpc/platforms/ps3/interrupt.c:678:3: error: 'const struct irq_domain_ops' has no member named 'match' 678 | .match = ps3_host_match, | ^~~~~ arch/powerpc/platforms/ps3/interrupt.c:678:11: warning: excess elements in struct initializer 678 | .match = ps3_host_match, | ^~~~~~~~~~~~~~ arch/powerpc/platforms/ps3/interrupt.c:678:11: note: (near initialization for 'ps3_host_ops') arch/powerpc/platforms/ps3/interrupt.c: In function 'ps3_init_IRQ': arch/powerpc/platforms/ps3/interrupt.c:745:9: error: implicit declaration of function 'irq_domain_add_nomap' [-Werror=implicit-function-declaration] 745 | host = irq_domain_add_nomap(NULL, PS3_PLUG_MAX + 1, &ps3_host_ops, NULL); | ^~~~~~~~~~~~~~~~~~~~ >> arch/powerpc/platforms/ps3/interrupt.c:745:7: warning: assignment to 'struct irq_domain *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 745 | host = irq_domain_add_nomap(NULL, PS3_PLUG_MAX + 1, &ps3_host_ops, NULL); | ^ arch/powerpc/platforms/ps3/interrupt.c:746:2: error: implicit declaration of function 'irq_set_default_host' [-Werror=implicit-function-declaration] 746 | irq_set_default_host(host); | ^~~~~~~~~~~~~~~~~~~~ arch/powerpc/platforms/ps3/interrupt.c: At top level: arch/powerpc/platforms/ps3/interrupt.c:676:36: error: storage size of 'ps3_host_ops' isn't known 676 | static const struct irq_domain_ops ps3_host_ops = { | ^~~~~~~~~~~~ cc1: some warnings being treated as errors vim +670 arch/powerpc/platforms/ps3/interrupt.c 2832a81df7f3cb Geoff Levand 2006-11-23 668 ad3aedfbb04b3a Marc Zyngier 2015-07-28 669 static int ps3_host_match(struct irq_domain *h, struct device_node *np, ad3aedfbb04b3a Marc Zyngier 2015-07-28 @670 enum irq_domain_bus_token bus_token) 8528ab84ebe7a1 Michael Ellerman 2007-08-28 671 { 8528ab84ebe7a1 Michael Ellerman 2007-08-28 672 /* Match all */ 8528ab84ebe7a1 Michael Ellerman 2007-08-28 673 return 1; 8528ab84ebe7a1 Michael Ellerman 2007-08-28 674 } 8528ab84ebe7a1 Michael Ellerman 2007-08-28 675 9f70b8eb3cd37c Grant Likely 2012-01-26 676 static const struct irq_domain_ops ps3_host_ops = { 9633ac8d172f74 Geoff Levand 2007-01-26 @677 .map = ps3_host_map, 8528ab84ebe7a1 Michael Ellerman 2007-08-28 678 .match = ps3_host_match, 2832a81df7f3cb Geoff Levand 2006-11-23 679 }; 2832a81df7f3cb Geoff Levand 2006-11-23 680 2832a81df7f3cb Geoff Levand 2006-11-23 681 void __init ps3_register_ipi_debug_brk(unsigned int cpu, unsigned int virq) 2832a81df7f3cb Geoff Levand 2006-11-23 682 { 9633ac8d172f74 Geoff Levand 2007-01-26 683 struct ps3_private *pd = &per_cpu(ps3_private, cpu); 2832a81df7f3cb Geoff Levand 2006-11-23 684 32b9074bf8d644 Geoff Levand 2011-11-29 685 set_bit(63 - virq, &pd->ipi_debug_brk_mask); 2832a81df7f3cb Geoff Levand 2006-11-23 686 32b9074bf8d644 Geoff Levand 2011-11-29 687 DBG("%s:%d: cpu %u, virq %u, mask %lxh\n", __func__, __LINE__, 32b9074bf8d644 Geoff Levand 2011-11-29 688 cpu, virq, pd->ipi_debug_brk_mask); 2832a81df7f3cb Geoff Levand 2006-11-23 689 } 2832a81df7f3cb Geoff Levand 2006-11-23 690 72f3bea0752877 Geoff Levand 2011-11-08 691 void __init ps3_register_ipi_irq(unsigned int cpu, unsigned int virq) 72f3bea0752877 Geoff Levand 2011-11-08 692 { 72f3bea0752877 Geoff Levand 2011-11-08 693 struct ps3_private *pd = &per_cpu(ps3_private, cpu); 72f3bea0752877 Geoff Levand 2011-11-08 694 72f3bea0752877 Geoff Levand 2011-11-08 695 set_bit(63 - virq, &pd->ipi_mask); 72f3bea0752877 Geoff Levand 2011-11-08 696 72f3bea0752877 Geoff Levand 2011-11-08 697 DBG("%s:%d: cpu %u, virq %u, ipi_mask %lxh\n", __func__, __LINE__, 72f3bea0752877 Geoff Levand 2011-11-08 698 cpu, virq, pd->ipi_mask); 72f3bea0752877 Geoff Levand 2011-11-08 699 } 72f3bea0752877 Geoff Levand 2011-11-08 700 9263e85aa9e9d3 Geoff Levand 2007-06-16 701 static unsigned int ps3_get_irq(void) 2832a81df7f3cb Geoff Levand 2006-11-23 702 { 69111bac42f5ce Christoph Lameter 2014-10-21 703 struct ps3_private *pd = this_cpu_ptr(&ps3_private); 861be32ce7f1cf Geoff Levand 2007-01-26 704 u64 x = (pd->bmp.status & pd->bmp.mask); 9cf9e19667f6ce Benjamin Herrenschmidt 2007-01-26 705 unsigned int plug; 2832a81df7f3cb Geoff Levand 2006-11-23 706 2832a81df7f3cb Geoff Levand 2006-11-23 707 /* check for ipi break first to stop this cpu ASAP */ 2832a81df7f3cb Geoff Levand 2006-11-23 708 32b9074bf8d644 Geoff Levand 2011-11-29 709 if (x & pd->ipi_debug_brk_mask) 32b9074bf8d644 Geoff Levand 2011-11-29 710 x &= pd->ipi_debug_brk_mask; 2832a81df7f3cb Geoff Levand 2006-11-23 711 9cf9e19667f6ce Benjamin Herrenschmidt 2007-01-26 712 asm volatile("cntlzd %0,%1" : "=r" (plug) : "r" (x)); 9cf9e19667f6ce Benjamin Herrenschmidt 2007-01-26 713 plug &= 0x3f; 2832a81df7f3cb Geoff Levand 2006-11-23 714 ef24ba7091517d Michael Ellerman 2016-09-06 715 if (unlikely(!plug)) { 32b9074bf8d644 Geoff Levand 2011-11-29 716 DBG("%s:%d: no plug found: thread_id %llu\n", __func__, aab83500709712 Geoff Levand 2007-06-16 717 __LINE__, pd->thread_id); 9633ac8d172f74 Geoff Levand 2007-01-26 718 dump_bmp(&per_cpu(ps3_private, 0)); 9633ac8d172f74 Geoff Levand 2007-01-26 719 dump_bmp(&per_cpu(ps3_private, 1)); ef24ba7091517d Michael Ellerman 2016-09-06 720 return 0; 2832a81df7f3cb Geoff Levand 2006-11-23 721 } 2832a81df7f3cb Geoff Levand 2006-11-23 722 2832a81df7f3cb Geoff Levand 2006-11-23 723 #if defined(DEBUG) 9cf9e19667f6ce Benjamin Herrenschmidt 2007-01-26 724 if (unlikely(plug < NUM_ISA_INTERRUPTS || plug > PS3_PLUG_MAX)) { 9633ac8d172f74 Geoff Levand 2007-01-26 725 dump_bmp(&per_cpu(ps3_private, 0)); 9633ac8d172f74 Geoff Levand 2007-01-26 726 dump_bmp(&per_cpu(ps3_private, 1)); 2832a81df7f3cb Geoff Levand 2006-11-23 727 BUG(); 2832a81df7f3cb Geoff Levand 2006-11-23 728 } 2832a81df7f3cb Geoff Levand 2006-11-23 729 #endif 72f3bea0752877 Geoff Levand 2011-11-08 730 72f3bea0752877 Geoff Levand 2011-11-08 731 /* IPIs are EOIed here. */ 72f3bea0752877 Geoff Levand 2011-11-08 732 72f3bea0752877 Geoff Levand 2011-11-08 733 if (test_bit(63 - plug, &pd->ipi_mask)) 72f3bea0752877 Geoff Levand 2011-11-08 734 lv1_end_of_interrupt_ext(pd->ppe_id, pd->thread_id, plug); 72f3bea0752877 Geoff Levand 2011-11-08 735 2832a81df7f3cb Geoff Levand 2006-11-23 736 return plug; 2832a81df7f3cb Geoff Levand 2006-11-23 737 } 2832a81df7f3cb Geoff Levand 2006-11-23 738 2832a81df7f3cb Geoff Levand 2006-11-23 739 void __init ps3_init_IRQ(void) 2832a81df7f3cb Geoff Levand 2006-11-23 740 { 2832a81df7f3cb Geoff Levand 2006-11-23 741 int result; 2832a81df7f3cb Geoff Levand 2006-11-23 742 unsigned cpu; bae1d8f19983fb Grant Likely 2012-02-14 743 struct irq_domain *host; 2832a81df7f3cb Geoff Levand 2006-11-23 744 6fa6c8e25e95bd Grant Likely 2012-02-15 @745 host = irq_domain_add_nomap(NULL, PS3_PLUG_MAX + 1, &ps3_host_ops, NULL); 2832a81df7f3cb Geoff Levand 2006-11-23 746 irq_set_default_host(host); 2832a81df7f3cb Geoff Levand 2006-11-23 747 2832a81df7f3cb Geoff Levand 2006-11-23 748 for_each_possible_cpu(cpu) { 9633ac8d172f74 Geoff Levand 2007-01-26 749 struct ps3_private *pd = &per_cpu(ps3_private, cpu); 2832a81df7f3cb Geoff Levand 2006-11-23 750 aab83500709712 Geoff Levand 2007-06-16 751 lv1_get_logical_ppe_id(&pd->ppe_id); aab83500709712 Geoff Levand 2007-06-16 752 pd->thread_id = get_hard_smp_processor_id(cpu); 32b9074bf8d644 Geoff Levand 2011-11-29 753 spin_lock_init(&pd->bmp_lock); 2832a81df7f3cb Geoff Levand 2006-11-23 754 32b9074bf8d644 Geoff Levand 2011-11-29 755 DBG("%s:%d: ppe_id %llu, thread_id %llu, bmp %lxh\n", aab83500709712 Geoff Levand 2007-06-16 756 __func__, __LINE__, pd->ppe_id, pd->thread_id, 407e24a0c78f58 Geoff Levand 2007-01-26 757 ps3_mm_phys_to_lpar(__pa(&pd->bmp))); 407e24a0c78f58 Geoff Levand 2007-01-26 758 aab83500709712 Geoff Levand 2007-06-16 759 result = lv1_configure_irq_state_bitmap(pd->ppe_id, aab83500709712 Geoff Levand 2007-06-16 760 pd->thread_id, ps3_mm_phys_to_lpar(__pa(&pd->bmp))); 2832a81df7f3cb Geoff Levand 2006-11-23 761 2832a81df7f3cb Geoff Levand 2006-11-23 762 if (result) 32b9074bf8d644 Geoff Levand 2011-11-29 763 FAIL("%s:%d: lv1_configure_irq_state_bitmap failed:" 2832a81df7f3cb Geoff Levand 2006-11-23 764 " %s\n", __func__, __LINE__, 2832a81df7f3cb Geoff Levand 2006-11-23 765 ps3_result(result)); 2832a81df7f3cb Geoff Levand 2006-11-23 766 } 2832a81df7f3cb Geoff Levand 2006-11-23 767 2832a81df7f3cb Geoff Levand 2006-11-23 768 ppc_md.get_irq = ps3_get_irq; 2832a81df7f3cb Geoff Levand 2006-11-23 769 } 9263e85aa9e9d3 Geoff Levand 2007-06-16 770 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org