On Thu, 2017-04-06 at 06:46 +0800, kbuild test robot wrote: > Hi Benjamin, > > [auto build test ERROR on powerpc/next] > [also build test ERROR on v4.11-rc5 next-20170405] > [if your patch is applied to the wrong git tree, please drop us a > note to help improve the system]
Ooops, I was 1 patch off in my git send-email, forgetting the opal-api.h updates. I'm sending the pre-req patch separately. Cheers, Ben. > url: https://github.com/0day-ci/linux/commits/Benjamin- > Herrenschmidt/powerpc-Add-more-PPC-bit-conversion-macros/20170406- > 041935 > base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux > .git next > config: powerpc-defconfig (attached as .config) > compiler: powerpc64-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705 > reproduce: > wget https://raw.githubusercontent.com/01org/lkp-tests/master > /sbin/make.cross -O ~/bin/make.cross > chmod +x ~/bin/make.cross > # save the attached .config to linux build tree > make.cross ARCH=powerpc > > All errors (new ones prefixed by >>): > > arch/powerpc/sysdev/xive/native.c: In function > 'xive_native_populate_irq_data': > > > arch/powerpc/sysdev/xive/native.c:55:7: error: implicit > > > declaration of function 'opal_xive_get_irq_info' [- > > > Werror=implicit-function-declaration] > > rc = opal_xive_get_irq_info(hw_irq, &flags, &eoi_page, > &trig_page, > ^~~~~~~~~~~~~~~~~~~~~~ > > > arch/powerpc/sysdev/xive/native.c:64:19: error: > > > 'OPAL_XIVE_IRQ_STORE_EOI' undeclared (first use in this function) > > if (opal_flags & OPAL_XIVE_IRQ_STORE_EOI) > ^~~~~~~~~~~~~~~~~~~~~~~ > arch/powerpc/sysdev/xive/native.c:64:19: note: each undeclared > identifier is reported only once for each function it appears in > > > arch/powerpc/sysdev/xive/native.c:66:19: error: > > > 'OPAL_XIVE_IRQ_LSI' undeclared (first use in this function) > > if (opal_flags & OPAL_XIVE_IRQ_LSI) > ^~~~~~~~~~~~~~~~~ > > > arch/powerpc/sysdev/xive/native.c:68:19: error: > > > 'OPAL_XIVE_IRQ_SHIFT_BUG' undeclared (first use in this function) > > if (opal_flags & OPAL_XIVE_IRQ_SHIFT_BUG) > ^~~~~~~~~~~~~~~~~~~~~~~ > > > arch/powerpc/sysdev/xive/native.c:70:19: error: > > > 'OPAL_XIVE_IRQ_MASK_VIA_FW' undeclared (first use in this > > > function) > > if (opal_flags & OPAL_XIVE_IRQ_MASK_VIA_FW) > ^~~~~~~~~~~~~~~~~~~~~~~~~ > > > arch/powerpc/sysdev/xive/native.c:72:19: error: > > > 'OPAL_XIVE_IRQ_EOI_VIA_FW' undeclared (first use in this > > > function) > > if (opal_flags & OPAL_XIVE_IRQ_EOI_VIA_FW) > ^~~~~~~~~~~~~~~~~~~~~~~~ > arch/powerpc/sysdev/xive/native.c: In function > 'xive_native_configure_irq': > > > arch/powerpc/sysdev/xive/native.c:105:8: error: implicit > > > declaration of function 'opal_xive_set_irq_config' [- > > > Werror=implicit-function-declaration] > > rc = opal_xive_set_irq_config(hw_irq, target, prio, sw_irq); > ^~~~~~~~~~~~~~~~~~~~~~~~ > arch/powerpc/sysdev/xive/native.c: In function > 'xive_native_configure_queue': > > > arch/powerpc/sysdev/xive/native.c:135:7: error: implicit > > > declaration of function 'opal_xive_get_queue_info' [- > > > Werror=implicit-function-declaration] > > rc = opal_xive_get_queue_info(vp_id, prio, NULL, NULL, > ^~~~~~~~~~~~~~~~~~~~~~~~ > > > arch/powerpc/sysdev/xive/native.c:148:10: error: > > > 'OPAL_XIVE_EQ_ALWAYS_NOTIFY' undeclared (first use in this > > > function) > > flags = OPAL_XIVE_EQ_ALWAYS_NOTIFY | OPAL_XIVE_EQ_ENABLED; > ^~~~~~~~~~~~~~~~~~~~~~~~~~ > > > arch/powerpc/sysdev/xive/native.c:148:39: error: > > > 'OPAL_XIVE_EQ_ENABLED' undeclared (first use in this function) > > flags = OPAL_XIVE_EQ_ALWAYS_NOTIFY | OPAL_XIVE_EQ_ENABLED; > ^~~~~~~~~~~~~~~~~~~~ > > > arch/powerpc/sysdev/xive/native.c:153:12: error: > > > 'OPAL_XIVE_EQ_ESCALATE' undeclared (first use in this function) > > flags |= OPAL_XIVE_EQ_ESCALATE; > ^~~~~~~~~~~~~~~~~~~~~ > > > arch/powerpc/sysdev/xive/native.c:158:8: error: implicit > > > declaration of function 'opal_xive_set_queue_info' [- > > > Werror=implicit-function-declaration] > > rc = opal_xive_set_queue_info(vp_id, prio, qpage_phys, order, > flags); > ^~~~~~~~~~~~~~~~~~~~~~~~ > arch/powerpc/sysdev/xive/native.c: In function > 'xive_native_get_ipi': > > > arch/powerpc/sysdev/xive/native.c:254:9: error: implicit > > > declaration of function 'opal_xive_allocate_irq' [- > > > Werror=implicit-function-declaration] > > irq = opal_xive_allocate_irq(chip_id); > ^~~~~~~~~~~~~~~~~~~~~~ > arch/powerpc/sysdev/xive/native.c: In function > 'xive_native_alloc_irq': > > > arch/powerpc/sysdev/xive/native.c:275:31: error: > > > 'OPAL_XIVE_ANY_CHIP' undeclared (first use in this function) > > rc = opal_xive_allocate_irq(OPAL_XIVE_ANY_CHIP); > ^~~~~~~~~~~~~~~~~~ > arch/powerpc/sysdev/xive/native.c: In function > 'xive_native_free_irq': > > > arch/powerpc/sysdev/xive/native.c:288:12: error: implicit > > > declaration of function 'opal_xive_free_irq' [-Werror=implicit- > > > function-declaration] > > s64 rc = opal_xive_free_irq(irq); > ^~~~~~~~~~~~~~~~~~ > arch/powerpc/sysdev/xive/native.c: In function > 'xive_native_shutdown': > > > arch/powerpc/sysdev/xive/native.c:317:2: error: implicit > > > declaration of function 'opal_xive_reset' [-Werror=implicit- > > > function-declaration] > > opal_xive_reset(OPAL_XIVE_MODE_EMU); > ^~~~~~~~~~~~~~~ > > > arch/powerpc/sysdev/xive/native.c:317:18: error: > > > 'OPAL_XIVE_MODE_EMU' undeclared (first use in this function) > > opal_xive_reset(OPAL_XIVE_MODE_EMU); > ^~~~~~~~~~~~~~~~~~ > arch/powerpc/sysdev/xive/native.c: In function > 'xive_native_setup_cpu': > > > arch/powerpc/sysdev/xive/native.c:392:8: error: implicit > > > declaration of function 'opal_xive_set_vp_info' [- > > > Werror=implicit-function-declaration] > > rc = opal_xive_set_vp_info(vp, OPAL_XIVE_VP_ENABLED, 0); > ^~~~~~~~~~~~~~~~~~~~~ > > > arch/powerpc/sysdev/xive/native.c:392:34: error: > > > 'OPAL_XIVE_VP_ENABLED' undeclared (first use in this function) > > rc = opal_xive_set_vp_info(vp, OPAL_XIVE_VP_ENABLED, 0); > ^~~~~~~~~~~~~~~~~~~~ > > > arch/powerpc/sysdev/xive/native.c:403:7: error: implicit > > > declaration of function 'opal_xive_get_vp_info' [- > > > Werror=implicit-function-declaration] > > rc = opal_xive_get_vp_info(vp, NULL, &vp_cam_be, NULL, NULL); > ^~~~~~~~~~~~~~~~~~~~~ > arch/powerpc/sysdev/xive/native.c: In function > 'xive_native_sync_source': > -- > arch/powerpc/xmon/xmon.c: In function 'dump_one_xive': > > > arch/powerpc/xmon/xmon.c:2352:2: error: implicit declaration of > > > function 'opal_xive_dump' [-Werror=implicit-function-declaration] > > opal_xive_dump(XIVE_DUMP_TM_HYP, hwid); > ^~~~~~~~~~~~~~ > > > arch/powerpc/xmon/xmon.c:2352:17: error: 'XIVE_DUMP_TM_HYP' > > > undeclared (first use in this function) > > opal_xive_dump(XIVE_DUMP_TM_HYP, hwid); > ^~~~~~~~~~~~~~~~ > arch/powerpc/xmon/xmon.c:2352:17: note: each undeclared identifier > is reported only once for each function it appears in > > > arch/powerpc/xmon/xmon.c:2353:17: error: 'XIVE_DUMP_TM_POOL' > > > undeclared (first use in this function) > > opal_xive_dump(XIVE_DUMP_TM_POOL, hwid); > ^~~~~~~~~~~~~~~~~ > > > arch/powerpc/xmon/xmon.c:2354:17: error: 'XIVE_DUMP_TM_OS' > > > undeclared (first use in this function) > > opal_xive_dump(XIVE_DUMP_TM_OS, hwid); > ^~~~~~~~~~~~~~~ > > > arch/powerpc/xmon/xmon.c:2355:17: error: 'XIVE_DUMP_TM_USER' > > > undeclared (first use in this function) > > opal_xive_dump(XIVE_DUMP_TM_USER, hwid); > ^~~~~~~~~~~~~~~~~ > > > arch/powerpc/xmon/xmon.c:2356:17: error: 'XIVE_DUMP_VP' > > > undeclared (first use in this function) > > opal_xive_dump(XIVE_DUMP_VP, hwid); > ^~~~~~~~~~~~ > > > arch/powerpc/xmon/xmon.c:2357:17: error: 'XIVE_DUMP_EMU_STATE' > > > undeclared (first use in this function) > > opal_xive_dump(XIVE_DUMP_EMU_STATE, hwid); > ^~~~~~~~~~~~~~~~~~~ > arch/powerpc/xmon/xmon.c: In function 'dump_one_xive_irq': > > > arch/powerpc/xmon/xmon.c:2393:7: error: implicit declaration of > > > function 'opal_xive_get_irq_config' [-Werror=implicit-function- > > > declaration] > > rc = opal_xive_get_irq_config(num, &vp, &prio, &lirq); > ^~~~~~~~~~~~~~~~~~~~~~~~ > cc1: all warnings being treated as errors > > vim +/opal_xive_get_irq_info +55 arch/powerpc/sysdev/xive/native.c > > 49 __be32 esb_shift, src_chip; > 50 u64 opal_flags; > 51 s64 rc; > 52 > 53 memset(data, 0, sizeof(*data)); > 54 > > 55 rc = opal_xive_get_irq_info(hw_irq, &flags, > &eoi_page, &trig_page, > 56 &esb_shift, > &src_chip); > 57 if (rc) { > 58 pr_err("XIVE: > opal_xive_get_irq_info(0x%x) returned %lld\n", > 59 hw_irq, rc); > 60 return -EINVAL; > 61 } > 62 > 63 opal_flags = be64_to_cpu(flags); > > 64 if (opal_flags & OPAL_XIVE_IRQ_STORE_EOI) > 65 data->flags |= XIVE_IRQ_FLAG_STORE_EOI; > > 66 if (opal_flags & OPAL_XIVE_IRQ_LSI) > 67 data->flags |= XIVE_IRQ_FLAG_LSI; > > 68 if (opal_flags & OPAL_XIVE_IRQ_SHIFT_BUG) > 69 data->flags |= XIVE_IRQ_FLAG_SHIFT_BUG; > > 70 if (opal_flags & OPAL_XIVE_IRQ_MASK_VIA_FW) > 71 data->flags |= XIVE_IRQ_FLAG_MASK_FW; > > 72 if (opal_flags & OPAL_XIVE_IRQ_EOI_VIA_FW) > 73 data->flags |= XIVE_IRQ_FLAG_EOI_FW; > 74 data->eoi_page = be64_to_cpu(eoi_page); > 75 data->trig_page = be64_to_cpu(trig_page); > 76 data->esb_shift = be32_to_cpu(esb_shift); > 77 data->src_chip = be32_to_cpu(src_chip); > 78 > 79 data->eoi_mmio = ioremap(data->eoi_page, 1u << > data->esb_shift); > 80 if (!data->eoi_mmio) { > 81 pr_err("XIVE: Failed to map EOI page > for irq 0x%x\n", hw_irq); > 82 return -ENOMEM; > 83 } > 84 > 85 if (!data->trig_page) > 86 return 0; > 87 if (data->trig_page == data->eoi_page) { > 88 data->trig_mmio = data->eoi_mmio; > 89 return 0; > 90 } > 91 > 92 data->trig_mmio = ioremap(data->trig_page, 1u > << data->esb_shift); > 93 if (!data->trig_mmio) { > 94 pr_err("XIVE: Failed to map trigger > page for irq 0x%x\n", hw_irq); > 95 return -ENOMEM; > 96 } > 97 return 0; > 98 } > 99 > 100 int xive_native_configure_irq(u32 hw_irq, u32 target, > u8 prio, u32 sw_irq) > 101 { > 102 s64 rc; > 103 > 104 for (;;) { > > 105 rc = opal_xive_set_irq_config(hw_irq, > target, prio, sw_irq); > 106 if (rc != OPAL_BUSY) > 107 break; > 108 msleep(1); > 109 } > 110 return rc == 0 ? 0 : -ENXIO; > 111 } > 112 > 113 /* This can be called multiple time to change a queue > configuration */ > 114 int xive_native_configure_queue(u32 vp_id, struct > xive_q *q, u8 prio, > 115 __be32 *qpage, u32 > order, bool can_escalate) > 116 { > 117 s64 rc = 0; > 118 __be64 qeoi_page_be; > 119 __be32 esc_irq_be; > 120 u64 flags, qpage_phys; > 121 > 122 /* If there's an actual queue page, clean it */ > 123 if (order) { > 124 if (WARN_ON(!qpage)) > 125 return -EINVAL; > 126 qpage_phys = __pa(qpage); > 127 } else > 128 qpage_phys = 0; > 129 > 130 /* Initialize the rest of the fields */ > 131 q->msk = order ? ((1u << (order - 2)) - 1) : 0; > 132 q->idx = 0; > 133 q->toggle = 0; > 134 > > 135 rc = opal_xive_get_queue_info(vp_id, prio, > NULL, NULL, > 136 &qeoi_page_be, > 137 &esc_irq_be, > 138 NULL); > 139 if (rc) { > 140 pr_err("XIVE: Error %lld getting queue > info prio %d\n", > 141 rc, prio); > 142 rc = -EIO; > 143 goto fail; > 144 } > 145 q->eoi_phys = be64_to_cpu(qeoi_page_be); > 146 > 147 /* Default flags */ > > 148 flags = OPAL_XIVE_EQ_ALWAYS_NOTIFY | > OPAL_XIVE_EQ_ENABLED; > 149 > 150 /* Escalation needed ? */ > 151 if (can_escalate) { > 152 q->esc_irq = be32_to_cpu(esc_irq_be); > > 153 flags |= OPAL_XIVE_EQ_ESCALATE; > 154 } > 155 > 156 /* Configure and enable the queue in HW */ > 157 for (;;) { > > 158 rc = opal_xive_set_queue_info(vp_id, > prio, qpage_phys, order, flags); > 159 if (rc != OPAL_BUSY) > 160 break; > 161 msleep(1); > 162 } > 163 if (rc) { > 164 pr_err("XIVE: Error %lld setting queue > for prio %d\n", > 165 rc, prio); > 166 rc = -EIO; > 167 } else { > 168 /* > 169 * KVM code requires all of the above > to be visible before > 170 * q->qpage is set due to how it > manages IPI EOIs > 171 */ > 172 wmb(); > 173 q->qpage = qpage; > 174 } > 175 fail: > 176 return rc; > 177 } > 178 > 179 static void __xive_native_disable_queue(u32 vp_id, > struct xive_q *q, u8 prio) > 180 { > 181 s64 rc; > 182 > 183 /* Disable the queue in HW */ > 184 for (;;) { > 185 rc = opal_xive_set_queue_info(vp_id, > prio, 0, 0, 0); > 186 break; > 187 msleep(1); > 188 } > 189 if (rc) > 190 pr_err("XIVE: Error %lld disabling > queue for prio %d\n", > 191 rc, prio); > 192 } > 193 > 194 void xive_native_disable_queue(u32 vp_id, struct xive_q > *q, u8 prio) > 195 { > 196 __xive_native_disable_queue(vp_id, q, prio); > 197 } > 198 > 199 static int xive_native_setup_queue(unsigned int cpu, > struct xive_cpu *xc, u8 prio) > 200 { > 201 struct xive_q *q = &xc->queue[prio]; > 202 unsigned int alloc_order; > 203 struct page *pages; > 204 __be32 *qpage; > 205 > 206 alloc_order = (xive_queue_shift > PAGE_SHIFT) ? > 207 (xive_queue_shift - PAGE_SHIFT) : 0; > 208 pages = alloc_pages_node(cpu_to_node(cpu), > GFP_KERNEL, alloc_order); > 209 if (!pages) > 210 return -ENOMEM; > 211 qpage = (__be32 *)page_address(pages); > 212 memset(qpage, 0, 1 << xive_queue_shift); > 213 return > xive_native_configure_queue(get_hard_smp_processor_id(cpu), > 214 q, prio, > qpage, xive_queue_shift, false); > 215 } > 216 > 217 static void xive_native_cleanup_queue(unsigned int cpu, > struct xive_cpu *xc, u8 prio) > 218 { > 219 struct xive_q *q = &xc->queue[prio]; > 220 unsigned int alloc_order; > 221 > 222 /* > 223 * We use the variant with no iounmap as this > is called on exec > 224 * from an IPI and iounmap isn't safe > 225 */ > 226 __xive_native_disable_queue(get_hard_smp_proces > sor_id(cpu), q, prio); > 227 alloc_order = (xive_queue_shift > PAGE_SHIFT) ? > 228 (xive_queue_shift - PAGE_SHIFT) : 0; > 229 free_pages((unsigned long)q->qpage, > alloc_order); > 230 q->qpage = NULL; > 231 } > 232 > 233 static bool xive_native_match(struct device_node *node) > 234 { > 235 return of_device_is_compatible(node, "ibm,opal- > xive-vc"); > 236 } > 237 > 238 #ifdef CONFIG_SMP > 239 static int xive_native_get_ipi(unsigned int cpu, struct > xive_cpu *xc) > 240 { > 241 struct device_node *np; > 242 unsigned int chip_id; > 243 s64 irq; > 244 > 245 /* Find the chip ID */ > 246 np = of_get_cpu_node(cpu, NULL); > 247 if (np) { > 248 if (of_property_read_u32(np, "ibm,chip- > id", &chip_id) < 0) > 249 chip_id = 0; > 250 } > 251 > 252 /* Allocate an IPI and populate info about it > */ > 253 for (;;) { > > 254 irq = opal_xive_allocate_irq(chip_id); > 255 if (irq == OPAL_BUSY) { > 256 msleep(1); > 257 continue; > > --- > 0-DAY kernel test infrastructure Open Source > Technology Center > https://lists.01.org/pipermail/kbuild-all Intel > Corporation