All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nick Desaulniers <ndesaulniers@google.com>
To: marmarek@invisiblethingslab.com
Cc: kbuild@lists.01.org,
	clang-built-linux <clang-built-linux@googlegroups.com>,
	kbuild test robot <lkp@intel.com>,
	kbuild-all@lists.01.org, xen-devel@lists.xenproject.org,
	jbeulich@suse.com, simon@invisiblethingslab.com,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Juergen Gross <jgross@suse.com>,
	sstabellini@kernel.org, yuehaibing@huawei.com,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v3] xen-pciback: optionally allow interrupt enable flag writes
Date: Mon, 13 Jan 2020 09:11:41 -0800	[thread overview]
Message-ID: <CAKwvOdnRhSXviJ3VGUJbB7XEjSXuTTKJOT8O1crOE6F0F=oJmA@mail.gmail.com> (raw)
In-Reply-To: <202001112351.gy4c3aUU%lkp@intel.com>

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@intel.com> wrote:
>
> CC: kbuild-all@lists.01.org
> In-Reply-To: <20200111034347.5270-1-marmarek@invisiblethingslab.com>
> References: <20200111034347.5270-1-marmarek@invisiblethingslab.com>
> TO: "Marek Marczykowski-Górecki" <marmarek@invisiblethingslab.com>
> CC: xen-devel@lists.xenproject.org, "Marek Marczykowski-Górecki" <marmarek@invisiblethingslab.com>, Jan Beulich <jbeulich@suse.com>, Simon Gaiser <simon@invisiblethingslab.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, Juergen Gross <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>, YueHaibing <yuehaibing@huawei.com>, open list <linux-kernel@vger.kernel.org>, "Marek Marczykowski-Górecki" <marmarek@invisiblethingslab.com>, Jan Beulich <jbeulich@suse.com>, Simon Gaiser <simon@invisiblethingslab.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, Juergen Gross <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>, YueHaibing <yuehaibing@huawei.com>, open list <linux-kernel@vger.kernel.org>
> CC: "Marek Marczykowski-Górecki" <marmarek@invisiblethingslab.com>, Jan Beulich <jbeulich@suse.com>, Simon Gaiser <simon@invisiblethingslab.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, Juergen Gross <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>, YueHaibing <yuehaibing@huawei.com>, open list <linux-kernel@vger.kernel.org>
>
> 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@intel.com>
>
> 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@lists.01.org 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@googlegroups.com.
> 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

WARNING: multiple messages have this Message-ID (diff)
From: Nick Desaulniers <ndesaulniers@google.com>
To: marmarek@invisiblethingslab.com
Cc: Juergen Gross <jgross@suse.com>,
	sstabellini@kernel.org, kbuild-all@lists.01.org,
	kbuild test robot <lkp@intel.com>,
	kbuild@lists.01.org, yuehaibing@huawei.com,
	LKML <linux-kernel@vger.kernel.org>,
	simon@invisiblethingslab.com,
	clang-built-linux <clang-built-linux@googlegroups.com>,
	jbeulich@suse.com, xen-devel@lists.xenproject.org,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>
Subject: Re: [Xen-devel] [PATCH v3] xen-pciback: optionally allow interrupt enable flag writes
Date: Mon, 13 Jan 2020 09:11:41 -0800	[thread overview]
Message-ID: <CAKwvOdnRhSXviJ3VGUJbB7XEjSXuTTKJOT8O1crOE6F0F=oJmA@mail.gmail.com> (raw)
In-Reply-To: <202001112351.gy4c3aUU%lkp@intel.com>

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@intel.com> wrote:
>
> CC: kbuild-all@lists.01.org
> In-Reply-To: <20200111034347.5270-1-marmarek@invisiblethingslab.com>
> References: <20200111034347.5270-1-marmarek@invisiblethingslab.com>
> TO: "Marek Marczykowski-Górecki" <marmarek@invisiblethingslab.com>
> CC: xen-devel@lists.xenproject.org, "Marek Marczykowski-Górecki" <marmarek@invisiblethingslab.com>, Jan Beulich <jbeulich@suse.com>, Simon Gaiser <simon@invisiblethingslab.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, Juergen Gross <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>, YueHaibing <yuehaibing@huawei.com>, open list <linux-kernel@vger.kernel.org>, "Marek Marczykowski-Górecki" <marmarek@invisiblethingslab.com>, Jan Beulich <jbeulich@suse.com>, Simon Gaiser <simon@invisiblethingslab.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, Juergen Gross <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>, YueHaibing <yuehaibing@huawei.com>, open list <linux-kernel@vger.kernel.org>
> CC: "Marek Marczykowski-Górecki" <marmarek@invisiblethingslab.com>, Jan Beulich <jbeulich@suse.com>, Simon Gaiser <simon@invisiblethingslab.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, Juergen Gross <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>, YueHaibing <yuehaibing@huawei.com>, open list <linux-kernel@vger.kernel.org>
>
> 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@intel.com>
>
> 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@lists.01.org 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@googlegroups.com.
> 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@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

WARNING: multiple messages have this Message-ID (diff)
From: Nick Desaulniers <ndesaulniers@google.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH v3] xen-pciback: optionally allow interrupt enable flag writes
Date: Mon, 13 Jan 2020 09:11:41 -0800	[thread overview]
Message-ID: <CAKwvOdnRhSXviJ3VGUJbB7XEjSXuTTKJOT8O1crOE6F0F=oJmA@mail.gmail.com> (raw)
In-Reply-To: <202001112351.gy4c3aUU%lkp@intel.com>

[-- Attachment #1: Type: text/plain, Size: 8685 bytes --]

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@intel.com> wrote:
>
> CC: kbuild-all(a)lists.01.org
> In-Reply-To: <20200111034347.5270-1-marmarek@invisiblethingslab.com>
> References: <20200111034347.5270-1-marmarek@invisiblethingslab.com>
> TO: "Marek Marczykowski-Górecki" <marmarek@invisiblethingslab.com>
> CC: xen-devel(a)lists.xenproject.org, "Marek Marczykowski-Górecki" <marmarek@invisiblethingslab.com>, Jan Beulich <jbeulich@suse.com>, Simon Gaiser <simon@invisiblethingslab.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, Juergen Gross <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>, YueHaibing <yuehaibing@huawei.com>, open list <linux-kernel@vger.kernel.org>, "Marek Marczykowski-Górecki" <marmarek(a)invisiblethingslab.com>, Jan Beulich <jbeulich@suse.com>, Simon Gaiser <simon@invisiblethingslab.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, Juergen Gross <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>, YueHaibing <yuehaibing@huawei.com>, open list <linux-kernel(a)vger.kernel.org>
> CC: "Marek Marczykowski-Górecki" <marmarek@invisiblethingslab.com>, Jan Beulich <jbeulich@suse.com>, Simon Gaiser <simon@invisiblethingslab.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, Juergen Gross <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>, YueHaibing <yuehaibing@huawei.com>, open list <linux-kernel@vger.kernel.org>
>
> 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@intel.com>
>
> 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(a)lists.01.org 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(a)googlegroups.com.
> 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

       reply	other threads:[~2020-01-13 17:11 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <202001112351.gy4c3aUU%lkp@intel.com>
2020-01-13 17:11 ` Nick Desaulniers [this message]
2020-01-13 17:11   ` [PATCH v3] xen-pciback: optionally allow interrupt enable flag writes Nick Desaulniers
2020-01-13 17:11   ` [Xen-devel] " Nick Desaulniers
2020-01-11  3:43 Marek Marczykowski-Górecki
2020-01-13 21:25 ` Boris Ostrovsky
2020-01-13 21:39   ` Marek Marczykowski-Górecki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAKwvOdnRhSXviJ3VGUJbB7XEjSXuTTKJOT8O1crOE6F0F=oJmA@mail.gmail.com' \
    --to=ndesaulniers@google.com \
    --cc=boris.ostrovsky@oracle.com \
    --cc=clang-built-linux@googlegroups.com \
    --cc=jbeulich@suse.com \
    --cc=jgross@suse.com \
    --cc=kbuild-all@lists.01.org \
    --cc=kbuild@lists.01.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=marmarek@invisiblethingslab.com \
    --cc=simon@invisiblethingslab.com \
    --cc=sstabellini@kernel.org \
    --cc=xen-devel@lists.xenproject.org \
    --cc=yuehaibing@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.