From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CC609C433B4 for ; Sun, 4 Apr 2021 16:22:51 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 130286135C for ; Sun, 4 Apr 2021 16:22:51 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 130286135C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:List-Subscribe:List-Help: List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Type:MIME-Version: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=KXGmnMytQXIlB1X63OheXBUK7loXN7RPQ6T1FQTIKWY=; b=PRPI//nUM9UKrPcRJaTnpZumhr 4I0YxC/NmZp2PP4BOOUmSqP6cndU0De2x+ISr8M42CV3u0hDd9pJulguSW79t/ReSIYYroj5Eu3AG Lv54VZ6+2rtY4gLvBEYb8cOhd894ddQKXra6KKJNKI/3/0ytBew8Kmu8vzl1PQZ0Sm2Sn/KmRnvyT 5re4Ll/2+FT6wD//iUQUSVNW/RvSHmeZFlNoNh2juFSi46TLS9Ue/0ADfcw5ndbc9DIE+WRDd2lOf ftKjlnL6y82RoJ4aL94tshvYHb5XueJePdO4k8dskRmTcbvplibXJfy0JXaz/jS/skGixg4uc/KDS u+30yMoQ==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lT5Td-00Fxm3-4m; Sun, 04 Apr 2021 16:19:53 +0000 Received: from mga02.intel.com ([134.134.136.20]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lT5TU-00FxlG-3l for linux-arm-kernel@lists.infradead.org; Sun, 04 Apr 2021 16:19:49 +0000 IronPort-SDR: 3mmvfttloy+1CANKO6zjl+YvMYvgzcwG9/SKb0RTEoV60k01uqgmagIDZ1UTOpvuXH4BzsQpPI 13Nq0t9RK5zw== X-IronPort-AV: E=McAfee;i="6000,8403,9944"; a="179848280" X-IronPort-AV: E=Sophos;i="5.81,304,1610438400"; d="gz'50?scan'50,208,50";a="179848280" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Apr 2021 09:19:41 -0700 IronPort-SDR: /SHBxeTLyyYVWx7pmHw6GJmulrR/qeSArUL81IBVJfcA9Iurruuji1mcr4RwiggjrC4Ew4jaze FU6FaCmg8OqQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,304,1610438400"; d="gz'50?scan'50,208,50";a="395553333" Received: from lkp-server01.sh.intel.com (HELO 69d8fcc516b7) ([10.239.97.150]) by orsmga002.jf.intel.com with ESMTP; 04 Apr 2021 09:19:39 -0700 Received: from kbuild by 69d8fcc516b7 with local (Exim 4.92) (envelope-from ) id 1lT5TO-0008jp-No; Sun, 04 Apr 2021 16:19:38 +0000 Date: Mon, 5 Apr 2021 00:19:09 +0800 From: kernel test robot To: Marc Zyngier Cc: kbuild-all@lists.01.org, linux-arm-kernel@lists.infradead.org Subject: [arm-platforms:irq/domain_cleanup 8/12] arch/powerpc/sysdev/ehv_pic.c:184:32: error: initialization of 'struct device_node *' from 'int' makes pointer from integer without a cast Message-ID: <202104050005.llW0lwg9-lkp@intel.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Kj7319i9nmIyA2yE" Content-Disposition: inline User-Agent: Mutt/1.10.1 (2018-07-13) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210404_171946_710157_D5B9225C X-CRM114-Status: GOOD ( 20.16 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org --Kj7319i9nmIyA2yE Content-Type: text/plain; charset=us-ascii Content-Disposition: inline tree: https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git irq/domain_cleanup head: 550eec9280bbaf3704f847777e7a1468d9ed8db0 commit: 702ba25bbe5e01f95ee505140cbf6ab97044e881 [8/12] powerpc: Convert irq_domain_add_legacy_isa use to irq_domain_add_legacy config: powerpc-ppc64e_defconfig (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://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git/commit/?id=702ba25bbe5e01f95ee505140cbf6ab97044e881 git remote add arm-platforms https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git git fetch --no-tags arm-platforms irq/domain_cleanup git checkout 702ba25bbe5e01f95ee505140cbf6ab97044e881 # 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 errors (new ones prefixed by >>): arch/powerpc/sysdev/ehv_pic.c:44:6: error: no previous prototype for 'ehv_pic_unmask_irq' [-Werror=missing-prototypes] 44 | void ehv_pic_unmask_irq(struct irq_data *d) | ^~~~~~~~~~~~~~~~~~ arch/powerpc/sysdev/ehv_pic.c:51:6: error: no previous prototype for 'ehv_pic_mask_irq' [-Werror=missing-prototypes] 51 | void ehv_pic_mask_irq(struct irq_data *d) | ^~~~~~~~~~~~~~~~ arch/powerpc/sysdev/ehv_pic.c:58:6: error: no previous prototype for 'ehv_pic_end_irq' [-Werror=missing-prototypes] 58 | void ehv_pic_end_irq(struct irq_data *d) | ^~~~~~~~~~~~~~~ arch/powerpc/sysdev/ehv_pic.c:65:6: error: no previous prototype for 'ehv_pic_direct_end_irq' [-Werror=missing-prototypes] 65 | void ehv_pic_direct_end_irq(struct irq_data *d) | ^~~~~~~~~~~~~~~~~~~~~~ arch/powerpc/sysdev/ehv_pic.c:70:5: error: no previous prototype for 'ehv_pic_set_affinity' [-Werror=missing-prototypes] 70 | int ehv_pic_set_affinity(struct irq_data *d, const struct cpumask *dest, | ^~~~~~~~~~~~~~~~~~~~ arch/powerpc/sysdev/ehv_pic.c:111:5: error: no previous prototype for 'ehv_pic_set_irq_type' [-Werror=missing-prototypes] 111 | int ehv_pic_set_irq_type(struct irq_data *d, unsigned int flow_type) | ^~~~~~~~~~~~~~~~~~~~ arch/powerpc/sysdev/ehv_pic.c: In function 'ehv_pic_get_irq': >> arch/powerpc/sysdev/ehv_pic.c:177:9: error: implicit declaration of function 'irq_linear_revmap' [-Werror=implicit-function-declaration] 177 | return irq_linear_revmap(global_ehv_pic->irqhost, irq); | ^~~~~~~~~~~~~~~~~ arch/powerpc/sysdev/ehv_pic.c: At top level: arch/powerpc/sysdev/ehv_pic.c:181:15: error: 'enum irq_domain_bus_token' declared inside parameter list will not be visible outside of this definition or declaration [-Werror] 181 | enum irq_domain_bus_token bus_token) | ^~~~~~~~~~~~~~~~~~~~ >> arch/powerpc/sysdev/ehv_pic.c:181:36: error: parameter 3 ('bus_token') has incomplete type 181 | enum irq_domain_bus_token bus_token) | ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~ >> arch/powerpc/sysdev/ehv_pic.c:180:12: error: function declaration isn't a prototype [-Werror=strict-prototypes] 180 | static int ehv_pic_host_match(struct irq_domain *h, struct device_node *node, | ^~~~~~~~~~~~~~~~~~ arch/powerpc/sysdev/ehv_pic.c: In function 'ehv_pic_host_match': >> arch/powerpc/sysdev/ehv_pic.c:184:32: error: implicit declaration of function 'irq_domain_get_of_node'; did you mean 'irq_data_get_node'? [-Werror=implicit-function-declaration] 184 | struct device_node *of_node = irq_domain_get_of_node(h); | ^~~~~~~~~~~~~~~~~~~~~~ | irq_data_get_node >> arch/powerpc/sysdev/ehv_pic.c:184:32: error: initialization of 'struct device_node *' from 'int' makes pointer from integer without a cast [-Werror=int-conversion] arch/powerpc/sysdev/ehv_pic.c: In function 'ehv_pic_host_map': >> arch/powerpc/sysdev/ehv_pic.c:191:29: error: dereferencing pointer to incomplete type 'struct irq_domain' 191 | struct ehv_pic *ehv_pic = h->host_data; | ^~ arch/powerpc/sysdev/ehv_pic.c: At top level: >> arch/powerpc/sysdev/ehv_pic.c:248:21: error: variable 'ehv_pic_host_ops' has initializer but incomplete type 248 | static const struct irq_domain_ops ehv_pic_host_ops = { | ^~~~~~~~~~~~~~ >> arch/powerpc/sysdev/ehv_pic.c:249:3: error: 'const struct irq_domain_ops' has no member named 'match' 249 | .match = ehv_pic_host_match, | ^~~~~ arch/powerpc/sysdev/ehv_pic.c:249:11: error: excess elements in struct initializer [-Werror] 249 | .match = ehv_pic_host_match, | ^~~~~~~~~~~~~~~~~~ arch/powerpc/sysdev/ehv_pic.c:249:11: note: (near initialization for 'ehv_pic_host_ops') >> arch/powerpc/sysdev/ehv_pic.c:250:3: error: 'const struct irq_domain_ops' has no member named 'map' 250 | .map = ehv_pic_host_map, | ^~~ arch/powerpc/sysdev/ehv_pic.c:250:9: error: excess elements in struct initializer [-Werror] 250 | .map = ehv_pic_host_map, | ^~~~~~~~~~~~~~~~ arch/powerpc/sysdev/ehv_pic.c:250:9: note: (near initialization for 'ehv_pic_host_ops') >> arch/powerpc/sysdev/ehv_pic.c:251:3: error: 'const struct irq_domain_ops' has no member named 'xlate' 251 | .xlate = ehv_pic_host_xlate, | ^~~~~ arch/powerpc/sysdev/ehv_pic.c:251:11: error: excess elements in struct initializer [-Werror] 251 | .xlate = ehv_pic_host_xlate, | ^~~~~~~~~~~~~~~~~~ arch/powerpc/sysdev/ehv_pic.c:251:11: note: (near initialization for 'ehv_pic_host_ops') arch/powerpc/sysdev/ehv_pic.c: In function 'ehv_pic_init': >> arch/powerpc/sysdev/ehv_pic.c:275:21: error: implicit declaration of function 'irq_domain_add_linear' [-Werror=implicit-function-declaration] 275 | ehv_pic->irqhost = irq_domain_add_linear(np, NR_EHV_PIC_INTS, | ^~~~~~~~~~~~~~~~~~~~~ >> arch/powerpc/sysdev/ehv_pic.c:275:19: error: assignment to 'struct irq_domain *' from 'int' makes pointer from integer without a cast [-Werror=int-conversion] 275 | ehv_pic->irqhost = irq_domain_add_linear(np, NR_EHV_PIC_INTS, | ^ >> arch/powerpc/sysdev/ehv_pic.c:297:2: error: implicit declaration of function 'irq_set_default_host' [-Werror=implicit-function-declaration] 297 | irq_set_default_host(global_ehv_pic->irqhost); | ^~~~~~~~~~~~~~~~~~~~ arch/powerpc/sysdev/ehv_pic.c: At top level: >> arch/powerpc/sysdev/ehv_pic.c:248:36: error: storage size of 'ehv_pic_host_ops' isn't known 248 | static const struct irq_domain_ops ehv_pic_host_ops = { | ^~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors vim +184 arch/powerpc/sysdev/ehv_pic.c 3a93261f70c7b9 Ashish Kalra 2011-05-19 69 3a93261f70c7b9 Ashish Kalra 2011-05-19 @70 int ehv_pic_set_affinity(struct irq_data *d, const struct cpumask *dest, 3a93261f70c7b9 Ashish Kalra 2011-05-19 71 bool force) 3a93261f70c7b9 Ashish Kalra 2011-05-19 72 { 3a93261f70c7b9 Ashish Kalra 2011-05-19 73 unsigned int src = virq_to_hw(d->irq); 3a93261f70c7b9 Ashish Kalra 2011-05-19 74 unsigned int config, prio, cpu_dest; 3a93261f70c7b9 Ashish Kalra 2011-05-19 75 int cpuid = irq_choose_cpu(dest); 3a93261f70c7b9 Ashish Kalra 2011-05-19 76 unsigned long flags; 3a93261f70c7b9 Ashish Kalra 2011-05-19 77 3a93261f70c7b9 Ashish Kalra 2011-05-19 78 spin_lock_irqsave(&ehv_pic_lock, flags); 3a93261f70c7b9 Ashish Kalra 2011-05-19 79 ev_int_get_config(src, &config, &prio, &cpu_dest); 3a93261f70c7b9 Ashish Kalra 2011-05-19 80 ev_int_set_config(src, config, prio, cpuid); 3a93261f70c7b9 Ashish Kalra 2011-05-19 81 spin_unlock_irqrestore(&ehv_pic_lock, flags); 3a93261f70c7b9 Ashish Kalra 2011-05-19 82 dcb615aef988b5 Alexander Gordeev 2013-05-13 83 return IRQ_SET_MASK_OK; 3a93261f70c7b9 Ashish Kalra 2011-05-19 84 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 85 3a93261f70c7b9 Ashish Kalra 2011-05-19 86 static unsigned int ehv_pic_type_to_vecpri(unsigned int type) 3a93261f70c7b9 Ashish Kalra 2011-05-19 87 { 3a93261f70c7b9 Ashish Kalra 2011-05-19 88 /* Now convert sense value */ 3a93261f70c7b9 Ashish Kalra 2011-05-19 89 3a93261f70c7b9 Ashish Kalra 2011-05-19 90 switch (type & IRQ_TYPE_SENSE_MASK) { 3a93261f70c7b9 Ashish Kalra 2011-05-19 91 case IRQ_TYPE_EDGE_RISING: 3a93261f70c7b9 Ashish Kalra 2011-05-19 92 return EHV_PIC_INFO(VECPRI_SENSE_EDGE) | 3a93261f70c7b9 Ashish Kalra 2011-05-19 93 EHV_PIC_INFO(VECPRI_POLARITY_POSITIVE); 3a93261f70c7b9 Ashish Kalra 2011-05-19 94 3a93261f70c7b9 Ashish Kalra 2011-05-19 95 case IRQ_TYPE_EDGE_FALLING: 3a93261f70c7b9 Ashish Kalra 2011-05-19 96 case IRQ_TYPE_EDGE_BOTH: 3a93261f70c7b9 Ashish Kalra 2011-05-19 97 return EHV_PIC_INFO(VECPRI_SENSE_EDGE) | 3a93261f70c7b9 Ashish Kalra 2011-05-19 98 EHV_PIC_INFO(VECPRI_POLARITY_NEGATIVE); 3a93261f70c7b9 Ashish Kalra 2011-05-19 99 3a93261f70c7b9 Ashish Kalra 2011-05-19 100 case IRQ_TYPE_LEVEL_HIGH: 3a93261f70c7b9 Ashish Kalra 2011-05-19 101 return EHV_PIC_INFO(VECPRI_SENSE_LEVEL) | 3a93261f70c7b9 Ashish Kalra 2011-05-19 102 EHV_PIC_INFO(VECPRI_POLARITY_POSITIVE); 3a93261f70c7b9 Ashish Kalra 2011-05-19 103 3a93261f70c7b9 Ashish Kalra 2011-05-19 104 case IRQ_TYPE_LEVEL_LOW: 3a93261f70c7b9 Ashish Kalra 2011-05-19 105 default: 3a93261f70c7b9 Ashish Kalra 2011-05-19 106 return EHV_PIC_INFO(VECPRI_SENSE_LEVEL) | 3a93261f70c7b9 Ashish Kalra 2011-05-19 107 EHV_PIC_INFO(VECPRI_POLARITY_NEGATIVE); 3a93261f70c7b9 Ashish Kalra 2011-05-19 108 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 109 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 110 3a93261f70c7b9 Ashish Kalra 2011-05-19 111 int ehv_pic_set_irq_type(struct irq_data *d, unsigned int flow_type) 3a93261f70c7b9 Ashish Kalra 2011-05-19 112 { 3a93261f70c7b9 Ashish Kalra 2011-05-19 113 unsigned int src = virq_to_hw(d->irq); 3a93261f70c7b9 Ashish Kalra 2011-05-19 114 unsigned int vecpri, vold, vnew, prio, cpu_dest; 3a93261f70c7b9 Ashish Kalra 2011-05-19 115 unsigned long flags; 3a93261f70c7b9 Ashish Kalra 2011-05-19 116 3a93261f70c7b9 Ashish Kalra 2011-05-19 117 if (flow_type == IRQ_TYPE_NONE) 3a93261f70c7b9 Ashish Kalra 2011-05-19 118 flow_type = IRQ_TYPE_LEVEL_LOW; 3a93261f70c7b9 Ashish Kalra 2011-05-19 119 c866cda47f2c6c Thomas Gleixner 2014-02-23 120 irqd_set_trigger_type(d, flow_type); 3a93261f70c7b9 Ashish Kalra 2011-05-19 121 3a93261f70c7b9 Ashish Kalra 2011-05-19 122 vecpri = ehv_pic_type_to_vecpri(flow_type); 3a93261f70c7b9 Ashish Kalra 2011-05-19 123 3a93261f70c7b9 Ashish Kalra 2011-05-19 124 spin_lock_irqsave(&ehv_pic_lock, flags); 3a93261f70c7b9 Ashish Kalra 2011-05-19 125 ev_int_get_config(src, &vold, &prio, &cpu_dest); 3a93261f70c7b9 Ashish Kalra 2011-05-19 126 vnew = vold & ~(EHV_PIC_INFO(VECPRI_POLARITY_MASK) | 3a93261f70c7b9 Ashish Kalra 2011-05-19 127 EHV_PIC_INFO(VECPRI_SENSE_MASK)); 3a93261f70c7b9 Ashish Kalra 2011-05-19 128 vnew |= vecpri; 3a93261f70c7b9 Ashish Kalra 2011-05-19 129 3a93261f70c7b9 Ashish Kalra 2011-05-19 130 /* 3a93261f70c7b9 Ashish Kalra 2011-05-19 131 * TODO : Add specific interface call for platform to set 3a93261f70c7b9 Ashish Kalra 2011-05-19 132 * individual interrupt priorities. 3a93261f70c7b9 Ashish Kalra 2011-05-19 133 * platform currently using static/default priority for all ints 3a93261f70c7b9 Ashish Kalra 2011-05-19 134 */ 3a93261f70c7b9 Ashish Kalra 2011-05-19 135 3a93261f70c7b9 Ashish Kalra 2011-05-19 136 prio = 8; 3a93261f70c7b9 Ashish Kalra 2011-05-19 137 3a93261f70c7b9 Ashish Kalra 2011-05-19 138 ev_int_set_config(src, vecpri, prio, cpu_dest); 3a93261f70c7b9 Ashish Kalra 2011-05-19 139 3a93261f70c7b9 Ashish Kalra 2011-05-19 140 spin_unlock_irqrestore(&ehv_pic_lock, flags); c866cda47f2c6c Thomas Gleixner 2014-02-23 141 return IRQ_SET_MASK_OK_NOCOPY; 3a93261f70c7b9 Ashish Kalra 2011-05-19 142 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 143 3a93261f70c7b9 Ashish Kalra 2011-05-19 144 static struct irq_chip ehv_pic_irq_chip = { 3a93261f70c7b9 Ashish Kalra 2011-05-19 145 .irq_mask = ehv_pic_mask_irq, 3a93261f70c7b9 Ashish Kalra 2011-05-19 146 .irq_unmask = ehv_pic_unmask_irq, 3a93261f70c7b9 Ashish Kalra 2011-05-19 147 .irq_eoi = ehv_pic_end_irq, 3a93261f70c7b9 Ashish Kalra 2011-05-19 148 .irq_set_type = ehv_pic_set_irq_type, 3a93261f70c7b9 Ashish Kalra 2011-05-19 149 }; 3a93261f70c7b9 Ashish Kalra 2011-05-19 150 3a93261f70c7b9 Ashish Kalra 2011-05-19 151 static struct irq_chip ehv_pic_direct_eoi_irq_chip = { 3a93261f70c7b9 Ashish Kalra 2011-05-19 152 .irq_mask = ehv_pic_mask_irq, 3a93261f70c7b9 Ashish Kalra 2011-05-19 153 .irq_unmask = ehv_pic_unmask_irq, 3a93261f70c7b9 Ashish Kalra 2011-05-19 154 .irq_eoi = ehv_pic_direct_end_irq, 3a93261f70c7b9 Ashish Kalra 2011-05-19 155 .irq_set_type = ehv_pic_set_irq_type, 3a93261f70c7b9 Ashish Kalra 2011-05-19 156 }; 3a93261f70c7b9 Ashish Kalra 2011-05-19 157 ef24ba7091517d Michael Ellerman 2016-09-06 158 /* Return an interrupt vector or 0 if no interrupt is pending. */ 3a93261f70c7b9 Ashish Kalra 2011-05-19 159 unsigned int ehv_pic_get_irq(void) 3a93261f70c7b9 Ashish Kalra 2011-05-19 160 { 3a93261f70c7b9 Ashish Kalra 2011-05-19 161 int irq; 3a93261f70c7b9 Ashish Kalra 2011-05-19 162 3a93261f70c7b9 Ashish Kalra 2011-05-19 163 BUG_ON(global_ehv_pic == NULL); 3a93261f70c7b9 Ashish Kalra 2011-05-19 164 3a93261f70c7b9 Ashish Kalra 2011-05-19 165 if (global_ehv_pic->coreint_flag) 3a93261f70c7b9 Ashish Kalra 2011-05-19 166 irq = mfspr(SPRN_EPR); /* if core int mode */ 3a93261f70c7b9 Ashish Kalra 2011-05-19 167 else 3a93261f70c7b9 Ashish Kalra 2011-05-19 168 ev_int_iack(0, &irq); /* legacy mode */ 3a93261f70c7b9 Ashish Kalra 2011-05-19 169 3a93261f70c7b9 Ashish Kalra 2011-05-19 170 if (irq == 0xFFFF) /* 0xFFFF --> no irq is pending */ ef24ba7091517d Michael Ellerman 2016-09-06 171 return 0; 3a93261f70c7b9 Ashish Kalra 2011-05-19 172 3a93261f70c7b9 Ashish Kalra 2011-05-19 173 /* 3a93261f70c7b9 Ashish Kalra 2011-05-19 174 * this will also setup revmap[] in the slow path for the first 3a93261f70c7b9 Ashish Kalra 2011-05-19 175 * time, next calls will always use fast path by indexing revmap 3a93261f70c7b9 Ashish Kalra 2011-05-19 176 */ 3a93261f70c7b9 Ashish Kalra 2011-05-19 @177 return irq_linear_revmap(global_ehv_pic->irqhost, irq); 3a93261f70c7b9 Ashish Kalra 2011-05-19 178 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 179 ad3aedfbb04b3a Marc Zyngier 2015-07-28 @180 static int ehv_pic_host_match(struct irq_domain *h, struct device_node *node, ad3aedfbb04b3a Marc Zyngier 2015-07-28 @181 enum irq_domain_bus_token bus_token) 3a93261f70c7b9 Ashish Kalra 2011-05-19 182 { 3a93261f70c7b9 Ashish Kalra 2011-05-19 183 /* Exact match, unless ehv_pic node is NULL */ 5d4c9bc7767bc8 Marc Zyngier 2015-10-13 @184 struct device_node *of_node = irq_domain_get_of_node(h); 5d4c9bc7767bc8 Marc Zyngier 2015-10-13 185 return of_node == NULL || of_node == node; 3a93261f70c7b9 Ashish Kalra 2011-05-19 186 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 187 bae1d8f19983fb Grant Likely 2012-02-14 188 static int ehv_pic_host_map(struct irq_domain *h, unsigned int virq, 3a93261f70c7b9 Ashish Kalra 2011-05-19 189 irq_hw_number_t hw) 3a93261f70c7b9 Ashish Kalra 2011-05-19 190 { 3a93261f70c7b9 Ashish Kalra 2011-05-19 @191 struct ehv_pic *ehv_pic = h->host_data; 3a93261f70c7b9 Ashish Kalra 2011-05-19 192 struct irq_chip *chip; 3a93261f70c7b9 Ashish Kalra 2011-05-19 193 3a93261f70c7b9 Ashish Kalra 2011-05-19 194 /* Default chip */ 3a93261f70c7b9 Ashish Kalra 2011-05-19 195 chip = &ehv_pic->hc_irq; 3a93261f70c7b9 Ashish Kalra 2011-05-19 196 3a93261f70c7b9 Ashish Kalra 2011-05-19 197 if (mpic_percpu_base_vaddr) 3a93261f70c7b9 Ashish Kalra 2011-05-19 198 if (hwirq_intspec[hw] & IRQ_TYPE_MPIC_DIRECT) 3a93261f70c7b9 Ashish Kalra 2011-05-19 199 chip = &ehv_pic_direct_eoi_irq_chip; 3a93261f70c7b9 Ashish Kalra 2011-05-19 200 3a93261f70c7b9 Ashish Kalra 2011-05-19 201 irq_set_chip_data(virq, chip); 3a93261f70c7b9 Ashish Kalra 2011-05-19 202 /* 3a93261f70c7b9 Ashish Kalra 2011-05-19 203 * using handle_fasteoi_irq as our irq handler, this will 3a93261f70c7b9 Ashish Kalra 2011-05-19 204 * only call the eoi callback and suitable for the MPIC 3a93261f70c7b9 Ashish Kalra 2011-05-19 205 * controller which set ISR/IPR automatically and clear the 3a93261f70c7b9 Ashish Kalra 2011-05-19 206 * highest priority active interrupt in ISR/IPR when we do 3a93261f70c7b9 Ashish Kalra 2011-05-19 207 * a specific eoi 3a93261f70c7b9 Ashish Kalra 2011-05-19 208 */ 3a93261f70c7b9 Ashish Kalra 2011-05-19 209 irq_set_chip_and_handler(virq, chip, handle_fasteoi_irq); 3a93261f70c7b9 Ashish Kalra 2011-05-19 210 3a93261f70c7b9 Ashish Kalra 2011-05-19 211 /* Set default irq type */ 3a93261f70c7b9 Ashish Kalra 2011-05-19 212 irq_set_irq_type(virq, IRQ_TYPE_NONE); 3a93261f70c7b9 Ashish Kalra 2011-05-19 213 3a93261f70c7b9 Ashish Kalra 2011-05-19 214 return 0; 3a93261f70c7b9 Ashish Kalra 2011-05-19 215 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 216 bae1d8f19983fb Grant Likely 2012-02-14 217 static int ehv_pic_host_xlate(struct irq_domain *h, struct device_node *ct, 3a93261f70c7b9 Ashish Kalra 2011-05-19 218 const u32 *intspec, unsigned int intsize, 3a93261f70c7b9 Ashish Kalra 2011-05-19 219 irq_hw_number_t *out_hwirq, unsigned int *out_flags) 3a93261f70c7b9 Ashish Kalra 2011-05-19 220 3a93261f70c7b9 Ashish Kalra 2011-05-19 221 { 3a93261f70c7b9 Ashish Kalra 2011-05-19 222 /* 3a93261f70c7b9 Ashish Kalra 2011-05-19 223 * interrupt sense values coming from the guest device tree 3a93261f70c7b9 Ashish Kalra 2011-05-19 224 * interrupt specifiers can have four possible sense and 3a93261f70c7b9 Ashish Kalra 2011-05-19 225 * level encoding information and they need to 3a93261f70c7b9 Ashish Kalra 2011-05-19 226 * be translated between firmware type & linux type. 3a93261f70c7b9 Ashish Kalra 2011-05-19 227 */ 3a93261f70c7b9 Ashish Kalra 2011-05-19 228 3a93261f70c7b9 Ashish Kalra 2011-05-19 229 static unsigned char map_of_senses_to_linux_irqtype[4] = { 3a93261f70c7b9 Ashish Kalra 2011-05-19 230 IRQ_TYPE_EDGE_FALLING, 3a93261f70c7b9 Ashish Kalra 2011-05-19 231 IRQ_TYPE_EDGE_RISING, 3a93261f70c7b9 Ashish Kalra 2011-05-19 232 IRQ_TYPE_LEVEL_LOW, 3a93261f70c7b9 Ashish Kalra 2011-05-19 233 IRQ_TYPE_LEVEL_HIGH, 3a93261f70c7b9 Ashish Kalra 2011-05-19 234 }; 3a93261f70c7b9 Ashish Kalra 2011-05-19 235 3a93261f70c7b9 Ashish Kalra 2011-05-19 236 *out_hwirq = intspec[0]; 3a93261f70c7b9 Ashish Kalra 2011-05-19 237 if (intsize > 1) { 3a93261f70c7b9 Ashish Kalra 2011-05-19 238 hwirq_intspec[intspec[0]] = intspec[1]; 3a93261f70c7b9 Ashish Kalra 2011-05-19 239 *out_flags = map_of_senses_to_linux_irqtype[intspec[1] & 3a93261f70c7b9 Ashish Kalra 2011-05-19 240 ~IRQ_TYPE_MPIC_DIRECT]; 3a93261f70c7b9 Ashish Kalra 2011-05-19 241 } else { 3a93261f70c7b9 Ashish Kalra 2011-05-19 242 *out_flags = IRQ_TYPE_NONE; 3a93261f70c7b9 Ashish Kalra 2011-05-19 243 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 244 3a93261f70c7b9 Ashish Kalra 2011-05-19 245 return 0; 3a93261f70c7b9 Ashish Kalra 2011-05-19 246 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 247 9f70b8eb3cd37c Grant Likely 2012-01-26 @248 static const struct irq_domain_ops ehv_pic_host_ops = { 3a93261f70c7b9 Ashish Kalra 2011-05-19 @249 .match = ehv_pic_host_match, 3a93261f70c7b9 Ashish Kalra 2011-05-19 @250 .map = ehv_pic_host_map, 3a93261f70c7b9 Ashish Kalra 2011-05-19 @251 .xlate = ehv_pic_host_xlate, 3a93261f70c7b9 Ashish Kalra 2011-05-19 252 }; 3a93261f70c7b9 Ashish Kalra 2011-05-19 253 3a93261f70c7b9 Ashish Kalra 2011-05-19 254 void __init ehv_pic_init(void) 3a93261f70c7b9 Ashish Kalra 2011-05-19 255 { 3a93261f70c7b9 Ashish Kalra 2011-05-19 256 struct device_node *np, *np2; 3a93261f70c7b9 Ashish Kalra 2011-05-19 257 struct ehv_pic *ehv_pic; 3a93261f70c7b9 Ashish Kalra 2011-05-19 258 int coreint_flag = 1; 3a93261f70c7b9 Ashish Kalra 2011-05-19 259 3a93261f70c7b9 Ashish Kalra 2011-05-19 260 np = of_find_compatible_node(NULL, NULL, "epapr,hv-pic"); 3a93261f70c7b9 Ashish Kalra 2011-05-19 261 if (!np) { 3a93261f70c7b9 Ashish Kalra 2011-05-19 262 pr_err("ehv_pic_init: could not find epapr,hv-pic node\n"); 3a93261f70c7b9 Ashish Kalra 2011-05-19 263 return; 3a93261f70c7b9 Ashish Kalra 2011-05-19 264 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 265 3a93261f70c7b9 Ashish Kalra 2011-05-19 266 if (!of_find_property(np, "has-external-proxy", NULL)) 3a93261f70c7b9 Ashish Kalra 2011-05-19 267 coreint_flag = 0; 3a93261f70c7b9 Ashish Kalra 2011-05-19 268 3a93261f70c7b9 Ashish Kalra 2011-05-19 269 ehv_pic = kzalloc(sizeof(struct ehv_pic), GFP_KERNEL); 3a93261f70c7b9 Ashish Kalra 2011-05-19 270 if (!ehv_pic) { 3a93261f70c7b9 Ashish Kalra 2011-05-19 271 of_node_put(np); 3a93261f70c7b9 Ashish Kalra 2011-05-19 272 return; 3a93261f70c7b9 Ashish Kalra 2011-05-19 273 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 274 a8db8cf0d894df Grant Likely 2012-02-14 @275 ehv_pic->irqhost = irq_domain_add_linear(np, NR_EHV_PIC_INTS, a8db8cf0d894df Grant Likely 2012-02-14 276 &ehv_pic_host_ops, ehv_pic); 3a93261f70c7b9 Ashish Kalra 2011-05-19 277 if (!ehv_pic->irqhost) { 3a93261f70c7b9 Ashish Kalra 2011-05-19 278 of_node_put(np); e3854b6e25d1b0 Julia Lawall 2011-08-08 279 kfree(ehv_pic); 3a93261f70c7b9 Ashish Kalra 2011-05-19 280 return; 3a93261f70c7b9 Ashish Kalra 2011-05-19 281 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 282 3a93261f70c7b9 Ashish Kalra 2011-05-19 283 np2 = of_find_compatible_node(NULL, NULL, "fsl,hv-mpic-per-cpu"); 3a93261f70c7b9 Ashish Kalra 2011-05-19 284 if (np2) { 3a93261f70c7b9 Ashish Kalra 2011-05-19 285 mpic_percpu_base_vaddr = of_iomap(np2, 0); 3a93261f70c7b9 Ashish Kalra 2011-05-19 286 if (!mpic_percpu_base_vaddr) 3a93261f70c7b9 Ashish Kalra 2011-05-19 287 pr_err("ehv_pic_init: of_iomap failed\n"); 3a93261f70c7b9 Ashish Kalra 2011-05-19 288 3a93261f70c7b9 Ashish Kalra 2011-05-19 289 of_node_put(np2); 3a93261f70c7b9 Ashish Kalra 2011-05-19 290 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 291 3a93261f70c7b9 Ashish Kalra 2011-05-19 292 ehv_pic->hc_irq = ehv_pic_irq_chip; 3a93261f70c7b9 Ashish Kalra 2011-05-19 293 ehv_pic->hc_irq.irq_set_affinity = ehv_pic_set_affinity; 3a93261f70c7b9 Ashish Kalra 2011-05-19 294 ehv_pic->coreint_flag = coreint_flag; 3a93261f70c7b9 Ashish Kalra 2011-05-19 295 3a93261f70c7b9 Ashish Kalra 2011-05-19 296 global_ehv_pic = ehv_pic; 3a93261f70c7b9 Ashish Kalra 2011-05-19 @297 irq_set_default_host(global_ehv_pic->irqhost); :::::: The code at line 184 was first introduced by commit :::::: 5d4c9bc7767bc86eb9a0e66df783e3fbada7dc97 irqdomain: Use irq_domain_get_of_node() instead of direct field access :::::: TO: Marc Zyngier :::::: CC: Thomas Gleixner --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org --Kj7319i9nmIyA2yE Content-Type: application/gzip Content-Disposition: attachment; filename=".config.gz" Content-Transfer-Encoding: base64 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 /wEz8rByNxgBAA== --Kj7319i9nmIyA2yE Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel --Kj7319i9nmIyA2yE-- From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============2488168037658479446==" MIME-Version: 1.0 From: kernel test robot To: kbuild-all@lists.01.org Subject: [arm-platforms:irq/domain_cleanup 8/12] arch/powerpc/sysdev/ehv_pic.c:184:32: error: initialization of 'struct device_node *' from 'int' makes pointer from integer without a cast Date: Mon, 05 Apr 2021 00:19:09 +0800 Message-ID: <202104050005.llW0lwg9-lkp@intel.com> List-Id: --===============2488168037658479446== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable tree: https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.g= it irq/domain_cleanup head: 550eec9280bbaf3704f847777e7a1468d9ed8db0 commit: 702ba25bbe5e01f95ee505140cbf6ab97044e881 [8/12] powerpc: Convert ir= q_domain_add_legacy_isa use to irq_domain_add_legacy config: powerpc-ppc64e_defconfig (attached as .config) compiler: powerpc64-linux-gcc (GCC) 9.3.0 reproduce (this is a W=3D1 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/maz/arm-platforms= .git/commit/?id=3D702ba25bbe5e01f95ee505140cbf6ab97044e881 git remote add arm-platforms https://git.kernel.org/pub/scm/linux/k= ernel/git/maz/arm-platforms.git git fetch --no-tags arm-platforms irq/domain_cleanup git checkout 702ba25bbe5e01f95ee505140cbf6ab97044e881 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=3D$HOME/0day COMPILER=3Dgcc-9.3.0 make.cross = ARCH=3Dpowerpc = If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): arch/powerpc/sysdev/ehv_pic.c:44:6: error: no previous prototype for 'eh= v_pic_unmask_irq' [-Werror=3Dmissing-prototypes] 44 | void ehv_pic_unmask_irq(struct irq_data *d) | ^~~~~~~~~~~~~~~~~~ arch/powerpc/sysdev/ehv_pic.c:51:6: error: no previous prototype for 'eh= v_pic_mask_irq' [-Werror=3Dmissing-prototypes] 51 | void ehv_pic_mask_irq(struct irq_data *d) | ^~~~~~~~~~~~~~~~ arch/powerpc/sysdev/ehv_pic.c:58:6: error: no previous prototype for 'eh= v_pic_end_irq' [-Werror=3Dmissing-prototypes] 58 | void ehv_pic_end_irq(struct irq_data *d) | ^~~~~~~~~~~~~~~ arch/powerpc/sysdev/ehv_pic.c:65:6: error: no previous prototype for 'eh= v_pic_direct_end_irq' [-Werror=3Dmissing-prototypes] 65 | void ehv_pic_direct_end_irq(struct irq_data *d) | ^~~~~~~~~~~~~~~~~~~~~~ arch/powerpc/sysdev/ehv_pic.c:70:5: error: no previous prototype for 'eh= v_pic_set_affinity' [-Werror=3Dmissing-prototypes] 70 | int ehv_pic_set_affinity(struct irq_data *d, const struct cpumas= k *dest, | ^~~~~~~~~~~~~~~~~~~~ arch/powerpc/sysdev/ehv_pic.c:111:5: error: no previous prototype for 'e= hv_pic_set_irq_type' [-Werror=3Dmissing-prototypes] 111 | int ehv_pic_set_irq_type(struct irq_data *d, unsigned int flow_t= ype) | ^~~~~~~~~~~~~~~~~~~~ arch/powerpc/sysdev/ehv_pic.c: In function 'ehv_pic_get_irq': >> arch/powerpc/sysdev/ehv_pic.c:177:9: error: implicit declaration of func= tion 'irq_linear_revmap' [-Werror=3Dimplicit-function-declaration] 177 | return irq_linear_revmap(global_ehv_pic->irqhost, irq); | ^~~~~~~~~~~~~~~~~ arch/powerpc/sysdev/ehv_pic.c: At top level: arch/powerpc/sysdev/ehv_pic.c:181:15: error: 'enum irq_domain_bus_token'= declared inside parameter list will not be visible outside of this definit= ion or declaration [-Werror] 181 | enum irq_domain_bus_token bus_token) | ^~~~~~~~~~~~~~~~~~~~ >> arch/powerpc/sysdev/ehv_pic.c:181:36: error: parameter 3 ('bus_token') h= as incomplete type 181 | enum irq_domain_bus_token bus_token) | ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~ >> arch/powerpc/sysdev/ehv_pic.c:180:12: error: function declaration isn't = a prototype [-Werror=3Dstrict-prototypes] 180 | static int ehv_pic_host_match(struct irq_domain *h, struct devic= e_node *node, | ^~~~~~~~~~~~~~~~~~ arch/powerpc/sysdev/ehv_pic.c: In function 'ehv_pic_host_match': >> arch/powerpc/sysdev/ehv_pic.c:184:32: error: implicit declaration of fun= ction 'irq_domain_get_of_node'; did you mean 'irq_data_get_node'? [-Werror= =3Dimplicit-function-declaration] 184 | struct device_node *of_node =3D irq_domain_get_of_node(h); | ^~~~~~~~~~~~~~~~~~~~~~ | irq_data_get_node >> arch/powerpc/sysdev/ehv_pic.c:184:32: error: initialization of 'struct d= evice_node *' from 'int' makes pointer from integer without a cast [-Werror= =3Dint-conversion] arch/powerpc/sysdev/ehv_pic.c: In function 'ehv_pic_host_map': >> arch/powerpc/sysdev/ehv_pic.c:191:29: error: dereferencing pointer to in= complete type 'struct irq_domain' 191 | struct ehv_pic *ehv_pic =3D h->host_data; | ^~ arch/powerpc/sysdev/ehv_pic.c: At top level: >> arch/powerpc/sysdev/ehv_pic.c:248:21: error: variable 'ehv_pic_host_ops'= has initializer but incomplete type 248 | static const struct irq_domain_ops ehv_pic_host_ops =3D { | ^~~~~~~~~~~~~~ >> arch/powerpc/sysdev/ehv_pic.c:249:3: error: 'const struct irq_domain_ops= ' has no member named 'match' 249 | .match =3D ehv_pic_host_match, | ^~~~~ arch/powerpc/sysdev/ehv_pic.c:249:11: error: excess elements in struct i= nitializer [-Werror] 249 | .match =3D ehv_pic_host_match, | ^~~~~~~~~~~~~~~~~~ arch/powerpc/sysdev/ehv_pic.c:249:11: note: (near initialization for 'eh= v_pic_host_ops') >> arch/powerpc/sysdev/ehv_pic.c:250:3: error: 'const struct irq_domain_ops= ' has no member named 'map' 250 | .map =3D ehv_pic_host_map, | ^~~ arch/powerpc/sysdev/ehv_pic.c:250:9: error: excess elements in struct in= itializer [-Werror] 250 | .map =3D ehv_pic_host_map, | ^~~~~~~~~~~~~~~~ arch/powerpc/sysdev/ehv_pic.c:250:9: note: (near initialization for 'ehv= _pic_host_ops') >> arch/powerpc/sysdev/ehv_pic.c:251:3: error: 'const struct irq_domain_ops= ' has no member named 'xlate' 251 | .xlate =3D ehv_pic_host_xlate, | ^~~~~ arch/powerpc/sysdev/ehv_pic.c:251:11: error: excess elements in struct i= nitializer [-Werror] 251 | .xlate =3D ehv_pic_host_xlate, | ^~~~~~~~~~~~~~~~~~ arch/powerpc/sysdev/ehv_pic.c:251:11: note: (near initialization for 'eh= v_pic_host_ops') arch/powerpc/sysdev/ehv_pic.c: In function 'ehv_pic_init': >> arch/powerpc/sysdev/ehv_pic.c:275:21: error: implicit declaration of fun= ction 'irq_domain_add_linear' [-Werror=3Dimplicit-function-declaration] 275 | ehv_pic->irqhost =3D irq_domain_add_linear(np, NR_EHV_PIC_INTS, | ^~~~~~~~~~~~~~~~~~~~~ >> arch/powerpc/sysdev/ehv_pic.c:275:19: error: assignment to 'struct irq_d= omain *' from 'int' makes pointer from integer without a cast [-Werror=3Din= t-conversion] 275 | ehv_pic->irqhost =3D irq_domain_add_linear(np, NR_EHV_PIC_INTS, | ^ >> arch/powerpc/sysdev/ehv_pic.c:297:2: error: implicit declaration of func= tion 'irq_set_default_host' [-Werror=3Dimplicit-function-declaration] 297 | irq_set_default_host(global_ehv_pic->irqhost); | ^~~~~~~~~~~~~~~~~~~~ arch/powerpc/sysdev/ehv_pic.c: At top level: >> arch/powerpc/sysdev/ehv_pic.c:248:36: error: storage size of 'ehv_pic_ho= st_ops' isn't known 248 | static const struct irq_domain_ops ehv_pic_host_ops =3D { | ^~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors vim +184 arch/powerpc/sysdev/ehv_pic.c 3a93261f70c7b9 Ashish Kalra 2011-05-19 69 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 @70 int ehv_pic_set_affinity(= struct irq_data *d, const struct cpumask *dest, 3a93261f70c7b9 Ashish Kalra 2011-05-19 71 bool force) 3a93261f70c7b9 Ashish Kalra 2011-05-19 72 { 3a93261f70c7b9 Ashish Kalra 2011-05-19 73 unsigned int src =3D vir= q_to_hw(d->irq); 3a93261f70c7b9 Ashish Kalra 2011-05-19 74 unsigned int config, pri= o, cpu_dest; 3a93261f70c7b9 Ashish Kalra 2011-05-19 75 int cpuid =3D irq_choose= _cpu(dest); 3a93261f70c7b9 Ashish Kalra 2011-05-19 76 unsigned long flags; 3a93261f70c7b9 Ashish Kalra 2011-05-19 77 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 78 spin_lock_irqsave(&ehv_p= ic_lock, flags); 3a93261f70c7b9 Ashish Kalra 2011-05-19 79 ev_int_get_config(src, &= config, &prio, &cpu_dest); 3a93261f70c7b9 Ashish Kalra 2011-05-19 80 ev_int_set_config(src, c= onfig, prio, cpuid); 3a93261f70c7b9 Ashish Kalra 2011-05-19 81 spin_unlock_irqrestore(&= ehv_pic_lock, flags); 3a93261f70c7b9 Ashish Kalra 2011-05-19 82 = dcb615aef988b5 Alexander Gordeev 2013-05-13 83 return IRQ_SET_MASK_OK; 3a93261f70c7b9 Ashish Kalra 2011-05-19 84 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 85 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 86 static unsigned int ehv_p= ic_type_to_vecpri(unsigned int type) 3a93261f70c7b9 Ashish Kalra 2011-05-19 87 { 3a93261f70c7b9 Ashish Kalra 2011-05-19 88 /* Now convert sense val= ue */ 3a93261f70c7b9 Ashish Kalra 2011-05-19 89 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 90 switch (type & IRQ_TYPE_= SENSE_MASK) { 3a93261f70c7b9 Ashish Kalra 2011-05-19 91 case IRQ_TYPE_EDGE_RISIN= G: 3a93261f70c7b9 Ashish Kalra 2011-05-19 92 return EHV_PIC_INFO(VEC= PRI_SENSE_EDGE) | 3a93261f70c7b9 Ashish Kalra 2011-05-19 93 EHV_PIC_INFO(VEC= PRI_POLARITY_POSITIVE); 3a93261f70c7b9 Ashish Kalra 2011-05-19 94 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 95 case IRQ_TYPE_EDGE_FALLI= NG: 3a93261f70c7b9 Ashish Kalra 2011-05-19 96 case IRQ_TYPE_EDGE_BOTH: 3a93261f70c7b9 Ashish Kalra 2011-05-19 97 return EHV_PIC_INFO(VEC= PRI_SENSE_EDGE) | 3a93261f70c7b9 Ashish Kalra 2011-05-19 98 EHV_PIC_INFO(VEC= PRI_POLARITY_NEGATIVE); 3a93261f70c7b9 Ashish Kalra 2011-05-19 99 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 100 case IRQ_TYPE_LEVEL_HIGH: 3a93261f70c7b9 Ashish Kalra 2011-05-19 101 return EHV_PIC_INFO(VEC= PRI_SENSE_LEVEL) | 3a93261f70c7b9 Ashish Kalra 2011-05-19 102 EHV_PIC_INFO(VEC= PRI_POLARITY_POSITIVE); 3a93261f70c7b9 Ashish Kalra 2011-05-19 103 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 104 case IRQ_TYPE_LEVEL_LOW: 3a93261f70c7b9 Ashish Kalra 2011-05-19 105 default: 3a93261f70c7b9 Ashish Kalra 2011-05-19 106 return EHV_PIC_INFO(VEC= PRI_SENSE_LEVEL) | 3a93261f70c7b9 Ashish Kalra 2011-05-19 107 EHV_PIC_INFO(VEC= PRI_POLARITY_NEGATIVE); 3a93261f70c7b9 Ashish Kalra 2011-05-19 108 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 109 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 110 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 111 int ehv_pic_set_irq_type(= struct irq_data *d, unsigned int flow_type) 3a93261f70c7b9 Ashish Kalra 2011-05-19 112 { 3a93261f70c7b9 Ashish Kalra 2011-05-19 113 unsigned int src =3D vir= q_to_hw(d->irq); 3a93261f70c7b9 Ashish Kalra 2011-05-19 114 unsigned int vecpri, vol= d, vnew, prio, cpu_dest; 3a93261f70c7b9 Ashish Kalra 2011-05-19 115 unsigned long flags; 3a93261f70c7b9 Ashish Kalra 2011-05-19 116 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 117 if (flow_type =3D=3D IRQ= _TYPE_NONE) 3a93261f70c7b9 Ashish Kalra 2011-05-19 118 flow_type =3D IRQ_TYPE_= LEVEL_LOW; 3a93261f70c7b9 Ashish Kalra 2011-05-19 119 = c866cda47f2c6c Thomas Gleixner 2014-02-23 120 irqd_set_trigger_type(d,= flow_type); 3a93261f70c7b9 Ashish Kalra 2011-05-19 121 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 122 vecpri =3D ehv_pic_type_= to_vecpri(flow_type); 3a93261f70c7b9 Ashish Kalra 2011-05-19 123 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 124 spin_lock_irqsave(&ehv_p= ic_lock, flags); 3a93261f70c7b9 Ashish Kalra 2011-05-19 125 ev_int_get_config(src, &= vold, &prio, &cpu_dest); 3a93261f70c7b9 Ashish Kalra 2011-05-19 126 vnew =3D vold & ~(EHV_PI= C_INFO(VECPRI_POLARITY_MASK) | 3a93261f70c7b9 Ashish Kalra 2011-05-19 127 EHV_PIC_INFO(VECPRI_SE= NSE_MASK)); 3a93261f70c7b9 Ashish Kalra 2011-05-19 128 vnew |=3D vecpri; 3a93261f70c7b9 Ashish Kalra 2011-05-19 129 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 130 /* 3a93261f70c7b9 Ashish Kalra 2011-05-19 131 * TODO : Add specific i= nterface call for platform to set 3a93261f70c7b9 Ashish Kalra 2011-05-19 132 * individual interrupt = priorities. 3a93261f70c7b9 Ashish Kalra 2011-05-19 133 * platform currently us= ing static/default priority for all ints 3a93261f70c7b9 Ashish Kalra 2011-05-19 134 */ 3a93261f70c7b9 Ashish Kalra 2011-05-19 135 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 136 prio =3D 8; 3a93261f70c7b9 Ashish Kalra 2011-05-19 137 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 138 ev_int_set_config(src, v= ecpri, prio, cpu_dest); 3a93261f70c7b9 Ashish Kalra 2011-05-19 139 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 140 spin_unlock_irqrestore(&= ehv_pic_lock, flags); c866cda47f2c6c Thomas Gleixner 2014-02-23 141 return IRQ_SET_MASK_OK_N= OCOPY; 3a93261f70c7b9 Ashish Kalra 2011-05-19 142 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 143 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 144 static struct irq_chip eh= v_pic_irq_chip =3D { 3a93261f70c7b9 Ashish Kalra 2011-05-19 145 .irq_mask =3D ehv_pic_ma= sk_irq, 3a93261f70c7b9 Ashish Kalra 2011-05-19 146 .irq_unmask =3D ehv_pic_= unmask_irq, 3a93261f70c7b9 Ashish Kalra 2011-05-19 147 .irq_eoi =3D ehv_pic_end= _irq, 3a93261f70c7b9 Ashish Kalra 2011-05-19 148 .irq_set_type =3D ehv_pi= c_set_irq_type, 3a93261f70c7b9 Ashish Kalra 2011-05-19 149 }; 3a93261f70c7b9 Ashish Kalra 2011-05-19 150 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 151 static struct irq_chip eh= v_pic_direct_eoi_irq_chip =3D { 3a93261f70c7b9 Ashish Kalra 2011-05-19 152 .irq_mask =3D ehv_pic_ma= sk_irq, 3a93261f70c7b9 Ashish Kalra 2011-05-19 153 .irq_unmask =3D ehv_pic_= unmask_irq, 3a93261f70c7b9 Ashish Kalra 2011-05-19 154 .irq_eoi =3D ehv_pic_dir= ect_end_irq, 3a93261f70c7b9 Ashish Kalra 2011-05-19 155 .irq_set_type =3D ehv_pi= c_set_irq_type, 3a93261f70c7b9 Ashish Kalra 2011-05-19 156 }; 3a93261f70c7b9 Ashish Kalra 2011-05-19 157 = ef24ba7091517d Michael Ellerman 2016-09-06 158 /* Return an interrupt ve= ctor or 0 if no interrupt is pending. */ 3a93261f70c7b9 Ashish Kalra 2011-05-19 159 unsigned int ehv_pic_get_= irq(void) 3a93261f70c7b9 Ashish Kalra 2011-05-19 160 { 3a93261f70c7b9 Ashish Kalra 2011-05-19 161 int irq; 3a93261f70c7b9 Ashish Kalra 2011-05-19 162 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 163 BUG_ON(global_ehv_pic = =3D=3D NULL); 3a93261f70c7b9 Ashish Kalra 2011-05-19 164 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 165 if (global_ehv_pic->core= int_flag) 3a93261f70c7b9 Ashish Kalra 2011-05-19 166 irq =3D mfspr(SPRN_EPR)= ; /* if core int mode */ 3a93261f70c7b9 Ashish Kalra 2011-05-19 167 else 3a93261f70c7b9 Ashish Kalra 2011-05-19 168 ev_int_iack(0, &irq); /= * legacy mode */ 3a93261f70c7b9 Ashish Kalra 2011-05-19 169 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 170 if (irq =3D=3D 0xFFFF) = /* 0xFFFF --> no irq is pending */ ef24ba7091517d Michael Ellerman 2016-09-06 171 return 0; 3a93261f70c7b9 Ashish Kalra 2011-05-19 172 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 173 /* 3a93261f70c7b9 Ashish Kalra 2011-05-19 174 * this will also setup = revmap[] in the slow path for the first 3a93261f70c7b9 Ashish Kalra 2011-05-19 175 * time, next calls will= always use fast path by indexing revmap 3a93261f70c7b9 Ashish Kalra 2011-05-19 176 */ 3a93261f70c7b9 Ashish Kalra 2011-05-19 @177 return irq_linear_revmap= (global_ehv_pic->irqhost, irq); 3a93261f70c7b9 Ashish Kalra 2011-05-19 178 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 179 = ad3aedfbb04b3a Marc Zyngier 2015-07-28 @180 static int ehv_pic_host_m= atch(struct irq_domain *h, struct device_node *node, ad3aedfbb04b3a Marc Zyngier 2015-07-28 @181 enum irq_domain_= bus_token bus_token) 3a93261f70c7b9 Ashish Kalra 2011-05-19 182 { 3a93261f70c7b9 Ashish Kalra 2011-05-19 183 /* Exact match, unless e= hv_pic node is NULL */ 5d4c9bc7767bc8 Marc Zyngier 2015-10-13 @184 struct device_node *of_n= ode =3D irq_domain_get_of_node(h); 5d4c9bc7767bc8 Marc Zyngier 2015-10-13 185 return of_node =3D=3D NU= LL || of_node =3D=3D node; 3a93261f70c7b9 Ashish Kalra 2011-05-19 186 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 187 = bae1d8f19983fb Grant Likely 2012-02-14 188 static int ehv_pic_host_m= ap(struct irq_domain *h, unsigned int virq, 3a93261f70c7b9 Ashish Kalra 2011-05-19 189 irq_hw_number_t hw) 3a93261f70c7b9 Ashish Kalra 2011-05-19 190 { 3a93261f70c7b9 Ashish Kalra 2011-05-19 @191 struct ehv_pic *ehv_pic = =3D h->host_data; 3a93261f70c7b9 Ashish Kalra 2011-05-19 192 struct irq_chip *chip; 3a93261f70c7b9 Ashish Kalra 2011-05-19 193 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 194 /* Default chip */ 3a93261f70c7b9 Ashish Kalra 2011-05-19 195 chip =3D &ehv_pic->hc_ir= q; 3a93261f70c7b9 Ashish Kalra 2011-05-19 196 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 197 if (mpic_percpu_base_vad= dr) 3a93261f70c7b9 Ashish Kalra 2011-05-19 198 if (hwirq_intspec[hw] &= IRQ_TYPE_MPIC_DIRECT) 3a93261f70c7b9 Ashish Kalra 2011-05-19 199 chip =3D &ehv_pic_dire= ct_eoi_irq_chip; 3a93261f70c7b9 Ashish Kalra 2011-05-19 200 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 201 irq_set_chip_data(virq, = chip); 3a93261f70c7b9 Ashish Kalra 2011-05-19 202 /* 3a93261f70c7b9 Ashish Kalra 2011-05-19 203 * using handle_fasteoi_= irq as our irq handler, this will 3a93261f70c7b9 Ashish Kalra 2011-05-19 204 * only call the eoi cal= lback and suitable for the MPIC 3a93261f70c7b9 Ashish Kalra 2011-05-19 205 * controller which set = ISR/IPR automatically and clear the 3a93261f70c7b9 Ashish Kalra 2011-05-19 206 * highest priority acti= ve interrupt in ISR/IPR when we do 3a93261f70c7b9 Ashish Kalra 2011-05-19 207 * a specific eoi 3a93261f70c7b9 Ashish Kalra 2011-05-19 208 */ 3a93261f70c7b9 Ashish Kalra 2011-05-19 209 irq_set_chip_and_handler= (virq, chip, handle_fasteoi_irq); 3a93261f70c7b9 Ashish Kalra 2011-05-19 210 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 211 /* Set default irq type = */ 3a93261f70c7b9 Ashish Kalra 2011-05-19 212 irq_set_irq_type(virq, I= RQ_TYPE_NONE); 3a93261f70c7b9 Ashish Kalra 2011-05-19 213 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 214 return 0; 3a93261f70c7b9 Ashish Kalra 2011-05-19 215 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 216 = bae1d8f19983fb Grant Likely 2012-02-14 217 static int ehv_pic_host_x= late(struct irq_domain *h, struct device_node *ct, 3a93261f70c7b9 Ashish Kalra 2011-05-19 218 const u32 *intspec,= unsigned int intsize, 3a93261f70c7b9 Ashish Kalra 2011-05-19 219 irq_hw_number_t *ou= t_hwirq, unsigned int *out_flags) 3a93261f70c7b9 Ashish Kalra 2011-05-19 220 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 221 { 3a93261f70c7b9 Ashish Kalra 2011-05-19 222 /* 3a93261f70c7b9 Ashish Kalra 2011-05-19 223 * interrupt sense value= s coming from the guest device tree 3a93261f70c7b9 Ashish Kalra 2011-05-19 224 * interrupt specifiers = can have four possible sense and 3a93261f70c7b9 Ashish Kalra 2011-05-19 225 * level encoding inform= ation and they need to 3a93261f70c7b9 Ashish Kalra 2011-05-19 226 * be translated between= firmware type & linux type. 3a93261f70c7b9 Ashish Kalra 2011-05-19 227 */ 3a93261f70c7b9 Ashish Kalra 2011-05-19 228 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 229 static unsigned char map= _of_senses_to_linux_irqtype[4] =3D { 3a93261f70c7b9 Ashish Kalra 2011-05-19 230 IRQ_TYPE_EDGE_FALLING, 3a93261f70c7b9 Ashish Kalra 2011-05-19 231 IRQ_TYPE_EDGE_RISING, 3a93261f70c7b9 Ashish Kalra 2011-05-19 232 IRQ_TYPE_LEVEL_LOW, 3a93261f70c7b9 Ashish Kalra 2011-05-19 233 IRQ_TYPE_LEVEL_HIGH, 3a93261f70c7b9 Ashish Kalra 2011-05-19 234 }; 3a93261f70c7b9 Ashish Kalra 2011-05-19 235 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 236 *out_hwirq =3D intspec[0= ]; 3a93261f70c7b9 Ashish Kalra 2011-05-19 237 if (intsize > 1) { 3a93261f70c7b9 Ashish Kalra 2011-05-19 238 hwirq_intspec[intspec[0= ]] =3D intspec[1]; 3a93261f70c7b9 Ashish Kalra 2011-05-19 239 *out_flags =3D map_of_s= enses_to_linux_irqtype[intspec[1] & 3a93261f70c7b9 Ashish Kalra 2011-05-19 240 ~IRQ_TYPE_MPIC_DIR= ECT]; 3a93261f70c7b9 Ashish Kalra 2011-05-19 241 } else { 3a93261f70c7b9 Ashish Kalra 2011-05-19 242 *out_flags =3D IRQ_TYPE= _NONE; 3a93261f70c7b9 Ashish Kalra 2011-05-19 243 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 244 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 245 return 0; 3a93261f70c7b9 Ashish Kalra 2011-05-19 246 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 247 = 9f70b8eb3cd37c Grant Likely 2012-01-26 @248 static const struct irq_d= omain_ops ehv_pic_host_ops =3D { 3a93261f70c7b9 Ashish Kalra 2011-05-19 @249 .match =3D ehv_pic_host_= match, 3a93261f70c7b9 Ashish Kalra 2011-05-19 @250 .map =3D ehv_pic_host_ma= p, 3a93261f70c7b9 Ashish Kalra 2011-05-19 @251 .xlate =3D ehv_pic_host_= xlate, 3a93261f70c7b9 Ashish Kalra 2011-05-19 252 }; 3a93261f70c7b9 Ashish Kalra 2011-05-19 253 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 254 void __init ehv_pic_init(= void) 3a93261f70c7b9 Ashish Kalra 2011-05-19 255 { 3a93261f70c7b9 Ashish Kalra 2011-05-19 256 struct device_node *np, = *np2; 3a93261f70c7b9 Ashish Kalra 2011-05-19 257 struct ehv_pic *ehv_pic; 3a93261f70c7b9 Ashish Kalra 2011-05-19 258 int coreint_flag =3D 1; 3a93261f70c7b9 Ashish Kalra 2011-05-19 259 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 260 np =3D of_find_compatibl= e_node(NULL, NULL, "epapr,hv-pic"); 3a93261f70c7b9 Ashish Kalra 2011-05-19 261 if (!np) { 3a93261f70c7b9 Ashish Kalra 2011-05-19 262 pr_err("ehv_pic_init: c= ould not find epapr,hv-pic node\n"); 3a93261f70c7b9 Ashish Kalra 2011-05-19 263 return; 3a93261f70c7b9 Ashish Kalra 2011-05-19 264 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 265 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 266 if (!of_find_property(np= , "has-external-proxy", NULL)) 3a93261f70c7b9 Ashish Kalra 2011-05-19 267 coreint_flag =3D 0; 3a93261f70c7b9 Ashish Kalra 2011-05-19 268 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 269 ehv_pic =3D kzalloc(size= of(struct ehv_pic), GFP_KERNEL); 3a93261f70c7b9 Ashish Kalra 2011-05-19 270 if (!ehv_pic) { 3a93261f70c7b9 Ashish Kalra 2011-05-19 271 of_node_put(np); 3a93261f70c7b9 Ashish Kalra 2011-05-19 272 return; 3a93261f70c7b9 Ashish Kalra 2011-05-19 273 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 274 = a8db8cf0d894df Grant Likely 2012-02-14 @275 ehv_pic->irqhost =3D irq= _domain_add_linear(np, NR_EHV_PIC_INTS, a8db8cf0d894df Grant Likely 2012-02-14 276 &ehv_pic_host_ops,= ehv_pic); 3a93261f70c7b9 Ashish Kalra 2011-05-19 277 if (!ehv_pic->irqhost) { 3a93261f70c7b9 Ashish Kalra 2011-05-19 278 of_node_put(np); e3854b6e25d1b0 Julia Lawall 2011-08-08 279 kfree(ehv_pic); 3a93261f70c7b9 Ashish Kalra 2011-05-19 280 return; 3a93261f70c7b9 Ashish Kalra 2011-05-19 281 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 282 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 283 np2 =3D of_find_compatib= le_node(NULL, NULL, "fsl,hv-mpic-per-cpu"); 3a93261f70c7b9 Ashish Kalra 2011-05-19 284 if (np2) { 3a93261f70c7b9 Ashish Kalra 2011-05-19 285 mpic_percpu_base_vaddr = =3D of_iomap(np2, 0); 3a93261f70c7b9 Ashish Kalra 2011-05-19 286 if (!mpic_percpu_base_v= addr) 3a93261f70c7b9 Ashish Kalra 2011-05-19 287 pr_err("ehv_pic_init: = of_iomap failed\n"); 3a93261f70c7b9 Ashish Kalra 2011-05-19 288 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 289 of_node_put(np2); 3a93261f70c7b9 Ashish Kalra 2011-05-19 290 } 3a93261f70c7b9 Ashish Kalra 2011-05-19 291 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 292 ehv_pic->hc_irq =3D ehv_= pic_irq_chip; 3a93261f70c7b9 Ashish Kalra 2011-05-19 293 ehv_pic->hc_irq.irq_set_= affinity =3D ehv_pic_set_affinity; 3a93261f70c7b9 Ashish Kalra 2011-05-19 294 ehv_pic->coreint_flag = =3D coreint_flag; 3a93261f70c7b9 Ashish Kalra 2011-05-19 295 = 3a93261f70c7b9 Ashish Kalra 2011-05-19 296 global_ehv_pic =3D ehv_p= ic; 3a93261f70c7b9 Ashish Kalra 2011-05-19 @297 irq_set_default_host(glo= bal_ehv_pic->irqhost); :::::: The code at line 184 was first introduced by commit :::::: 5d4c9bc7767bc86eb9a0e66df783e3fbada7dc97 irqdomain: Use irq_domain_g= et_of_node() instead of direct field access :::::: TO: Marc Zyngier :::::: CC: Thomas Gleixner --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============2488168037658479446== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 --===============2488168037658479446==--