Re: [RFC v2 PATCH 07/14] irq: add a new generic IPI reservation code to irq core

From: kbuild test robot
Date: Tue Oct 13 2015 - 06:58:00 EST


Hi Qais,

[auto build test ERROR on v4.3-rc5 -- if it's inappropriate base, please suggest rules for selecting the more suitable base]

url: https://github.com/0day-ci/linux/commits/Qais-Yousef/Implement-generic-IPI-support-mechanism/20151013-182314
config: sh-titan_defconfig (attached as .config)
reproduce:
wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=sh

All errors (new ones prefixed by >>):

kernel/irq/irqdomain.c: In function 'irq_reserve_ipi':
>> kernel/irq/irqdomain.c:791:2: error: implicit declaration of function '__irq_domain_alloc_irqs' [-Werror=implicit-function-declaration]
kernel/irq/irqdomain.c:799:18: error: 'struct irq_data' has no member named 'ipi_mask'
kernel/irq/irqdomain.c:800:6: error: 'struct irq_data' has no member named 'ipi_mask'
kernel/irq/irqdomain.c: In function 'irq_destroy_ipi':
>> kernel/irq/irqdomain.c:832:2: error: implicit declaration of function 'irq_domain_free_irqs' [-Werror=implicit-function-declaration]
kernel/irq/irqdomain.c:833:21: error: 'struct irq_data' has no member named 'ipi_mask'
kernel/irq/irqdomain.c:833:45: error: 'struct irq_data' has no member named 'ipi_mask'
cc1: some warnings being treated as errors

vim +/__irq_domain_alloc_irqs +791 kernel/irq/irqdomain.c

785 if (virq <= 0) {
786 pr_warn("Can't reserve IPI, failed to alloc descs\n");
787 return 0;
788 }
789
790 /* we are reusing hierarchy alloc function, should we create another one? */
> 791 virq = __irq_domain_alloc_irqs(domain, virq, nr_irqs, NUMA_NO_NODE,
792 (void *) dest, true);
793 if (virq <= 0) {
794 pr_warn("Can't reserve IPI, failed to alloc irqs\n");
795 goto free_descs;
796 }
797
798 data = irq_get_irq_data(virq);
799 bitmap_copy(data->ipi_mask.cpumask, dest->cpumask, dest->nbits);
800 data->ipi_mask.nbits = dest->nbits;
801
802 return virq;
803
804 free_descs:
805 irq_free_descs(virq, nr_irqs);
806 return 0;
807 }
808
809 /**
810 * irq_destroy_ipi() - unreserve an IPI that was previously allocated
811 * @irq: linux irq number to be destroyed
812 *
813 * Return an IPI allocated with irq_reserve_ipi() to the system.
814 */
815 void irq_destroy_ipi(unsigned int irq)
816 {
817 struct irq_data *data = irq_get_irq_data(irq);
818 struct irq_domain *domain;
819
820 if (!irq || !data)
821 return;
822
823 domain = data->domain;
824 if (WARN_ON(domain == NULL))
825 return;
826
827 if (!irq_domain_is_ipi(domain)) {
828 pr_warn("Not an IPI domain!\n");
829 return;
830 }
831
> 832 irq_domain_free_irqs(irq,
833 bitmap_weight(data->ipi_mask.cpumask, data->ipi_mask.nbits));
834 }
835

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: Binary data