[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v3] xen-pciback: optionally allow interrupt enable flag writes



Hi Marek,
Below is a report from 0day bot build w/ Clang. The warning looks
legit, can you please take a look? Apologies if this has already been
reported.

On Sat, Jan 11, 2020 at 7:48 AM kbuild test robot <lkp@xxxxxxxxx> wrote:
>
> CC: kbuild-all@xxxxxxxxxxxx
> In-Reply-To: <20200111034347.5270-1-marmarek@xxxxxxxxxxxxxxxxxxxxxx>
> References: <20200111034347.5270-1-marmarek@xxxxxxxxxxxxxxxxxxxxxx>
> TO: "Marek Marczykowski-Górecki" <marmarek@xxxxxxxxxxxxxxxxxxxxxx>
> CC: xen-devel@xxxxxxxxxxxxxxxxxxxx, "Marek Marczykowski-Górecki" 
> <marmarek@xxxxxxxxxxxxxxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Simon 
> Gaiser <simon@xxxxxxxxxxxxxxxxxxxxxx>, Boris Ostrovsky 
> <boris.ostrovsky@xxxxxxxxxx>, Juergen Gross <jgross@xxxxxxxx>, Stefano 
> Stabellini <sstabellini@xxxxxxxxxx>, YueHaibing <yuehaibing@xxxxxxxxxx>, open 
> list <linux-kernel@xxxxxxxxxxxxxxx>, "Marek Marczykowski-Górecki" 
> <marmarek@xxxxxxxxxxxxxxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Simon 
> Gaiser <simon@xxxxxxxxxxxxxxxxxxxxxx>, Boris Ostrovsky 
> <boris.ostrovsky@xxxxxxxxxx>, Juergen Gross <jgross@xxxxxxxx>, Stefano 
> Stabellini <sstabellini@xxxxxxxxxx>, YueHaibing <yuehaibing@xxxxxxxxxx>, open 
> list <linux-kernel@xxxxxxxxxxxxxxx>
> CC: "Marek Marczykowski-Górecki" <marmarek@xxxxxxxxxxxxxxxxxxxxxx>, Jan 
> Beulich <jbeulich@xxxxxxxx>, Simon Gaiser <simon@xxxxxxxxxxxxxxxxxxxxxx>, 
> Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx>, Juergen Gross 
> <jgross@xxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, YueHaibing 
> <yuehaibing@xxxxxxxxxx>, open list <linux-kernel@xxxxxxxxxxxxxxx>
>
> Hi "Marek,
>
> Thank you for the patch! Perhaps something to improve:
>
> [auto build test WARNING on xen-tip/linux-next]
> [also build test WARNING on linux/master linus/master v5.5-rc5 next-20200110]
> [if your patch is applied to the wrong git tree, please drop us a note to help
> improve the system. BTW, we also suggest to use '--base' option to specify the
> base tree in git format-patch, please see 
> https://stackoverflow.com/a/37406982]
>
> url:    
> https://github.com/0day-ci/linux/commits/Marek-Marczykowski-G-recki/xen-pciback-optionally-allow-interrupt-enable-flag-writes/20200111-162243
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git linux-next
> config: x86_64-allyesconfig (attached as .config)
> compiler: clang version 10.0.0 (git://gitmirror/llvm_project 
> 016bf03ef6fcd9dce43b0c17971f76323f07a684)
> reproduce:
>         # save the attached .config to linux build tree
>         make ARCH=x86_64
>
> If you fix the issue, kindly add following tag
> Reported-by: kbuild test robot <lkp@xxxxxxxxx>
>
> All warnings (new ones prefixed by >>):
>
> >> drivers/xen/xen-pciback/conf_space_header.c:121:19: warning: variable 
> >> 'val' is uninitialized when used here [-Wuninitialized]
>                    if ((cmd->val ^ val) & PCI_COMMAND_INTX_DISABLE) {
>                                    ^~~
>    drivers/xen/xen-pciback/conf_space_header.c:65:9: note: initialize the 
> variable 'val' to silence this warning
>            u16 val;
>                   ^
>                    = 0
>    1 warning generated.
>
> vim +/val +121 drivers/xen/xen-pciback/conf_space_header.c
>
>     60
>     61  static int command_write(struct pci_dev *dev, int offset, u16 value, 
> void *data)
>     62  {
>     63          struct xen_pcibk_dev_data *dev_data;
>     64          int err;
>     65          u16 val;
>     66          struct pci_cmd_info *cmd = data;
>     67
>     68          dev_data = pci_get_drvdata(dev);
>     69          if (!pci_is_enabled(dev) && is_enable_cmd(value)) {
>     70                  if (unlikely(verbose_request))
>     71                          printk(KERN_DEBUG DRV_NAME ": %s: enable\n",
>     72                                 pci_name(dev));
>     73                  err = pci_enable_device(dev);
>     74                  if (err)
>     75                          return err;
>     76                  if (dev_data)
>     77                          dev_data->enable_intx = 1;
>     78          } else if (pci_is_enabled(dev) && !is_enable_cmd(value)) {
>     79                  if (unlikely(verbose_request))
>     80                          printk(KERN_DEBUG DRV_NAME ": %s: disable\n",
>     81                                 pci_name(dev));
>     82                  pci_disable_device(dev);
>     83                  if (dev_data)
>     84                          dev_data->enable_intx = 0;
>     85          }
>     86
>     87          if (!dev->is_busmaster && is_master_cmd(value)) {
>     88                  if (unlikely(verbose_request))
>     89                          printk(KERN_DEBUG DRV_NAME ": %s: set bus 
> master\n",
>     90                                 pci_name(dev));
>     91                  pci_set_master(dev);
>     92          } else if (dev->is_busmaster && !is_master_cmd(value)) {
>     93                  if (unlikely(verbose_request))
>     94                          printk(KERN_DEBUG DRV_NAME ": %s: clear bus 
> master\n",
>     95                                 pci_name(dev));
>     96                  pci_clear_master(dev);
>     97          }
>     98
>     99          if (!(cmd->val & PCI_COMMAND_INVALIDATE) &&
>    100              (value & PCI_COMMAND_INVALIDATE)) {
>    101                  if (unlikely(verbose_request))
>    102                          printk(KERN_DEBUG
>    103                                 DRV_NAME ": %s: enable 
> memory-write-invalidate\n",
>    104                                 pci_name(dev));
>    105                  err = pci_set_mwi(dev);
>    106                  if (err) {
>    107                          pr_warn("%s: cannot enable 
> memory-write-invalidate (%d)\n",
>    108                                  pci_name(dev), err);
>    109                          value &= ~PCI_COMMAND_INVALIDATE;
>    110                  }
>    111          } else if ((cmd->val & PCI_COMMAND_INVALIDATE) &&
>    112                     !(value & PCI_COMMAND_INVALIDATE)) {
>    113                  if (unlikely(verbose_request))
>    114                          printk(KERN_DEBUG
>    115                                 DRV_NAME ": %s: disable 
> memory-write-invalidate\n",
>    116                                 pci_name(dev));
>    117                  pci_clear_mwi(dev);
>    118          }
>    119
>    120          if (dev_data && dev_data->allow_interrupt_control) {
>  > 121                  if ((cmd->val ^ val) & PCI_COMMAND_INTX_DISABLE) {
>    122                          if (value & PCI_COMMAND_INTX_DISABLE) {
>    123                                  pci_intx(dev, 0);
>    124                          } else {
>    125                                  /* Do not allow enabling INTx 
> together with MSI or MSI-X. */
>    126                                  switch 
> (xen_pcibk_get_interrupt_type(dev)) {
>    127                                  case INTERRUPT_TYPE_NONE:
>    128                                  case INTERRUPT_TYPE_INTX:
>    129                                          pci_intx(dev, 1);
>    130                                          break;
>    131                                  default:
>    132                                          return PCIBIOS_SET_FAILED;
>    133                                  }
>    134                          }
>    135                  }
>    136          }
>    137
>    138          cmd->val = value;
>    139
>    140          if (!xen_pcibk_permissive && (!dev_data || 
> !dev_data->permissive))
>    141                  return 0;
>    142
>    143          /* Only allow the guest to control certain bits. */
>    144          err = pci_read_config_word(dev, offset, &val);
>    145          if (err || val == value)
>    146                  return err;
>    147
>    148          value &= PCI_COMMAND_GUEST;
>    149          value |= val & ~PCI_COMMAND_GUEST;
>    150
>    151          return pci_write_config_word(dev, offset, value);
>    152  }
>    153
>
> ---
> 0-DAY kernel test infrastructure                 Open Source Technology Center
> https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx Intel Corporation
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Clang Built Linux" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to clang-built-linux+unsubscribe@xxxxxxxxxxxxxxxx.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/clang-built-linux/202001112351.gy4c3aUU%25lkp%40intel.com.



-- 
Thanks,
~Nick Desaulniers

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.