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]

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_processor_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

Attachment: .config.gz
Description: application/gzip

Reply via email to