[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202210202204.u22wJti3-lkp@intel.com>
Date: Thu, 20 Oct 2022 22:13:10 +0800
From: kernel test robot <lkp@...el.com>
To: Bjorn Helgaas <helgaas@...nel.org>,
Lorenzo Pieralisi <lpieralisi@...nel.org>
Cc: llvm@...ts.linux.dev, kbuild-all@...ts.01.org,
Kishon Vijay Abraham I <kishon@...nel.org>,
Tom Joseph <tjoseph@...ence.com>,
Rob Herring <robh@...nel.org>,
Krzysztof WilczyĆski <kw@...ux.com>,
Minghuan Lian <minghuan.Lian@....com>,
Mingkai Hu <mingkai.hu@....com>, Roy Zang <roy.zang@....com>,
Thomas Petazzoni <thomas.petazzoni@...tlin.com>,
Thierry Reding <thierry.reding@...il.com>,
Jonathan Hunter <jonathanh@...dia.com>,
Linus Walleij <linus.walleij@...aro.org>,
Toan Le <toan@...amperecomputing.com>,
Joyce Ooi <joyce.ooi@...el.com>, Ray Jui <rjui@...adcom.com>,
Scott Branden <sbranden@...adcom.com>,
Conor Dooley <conor.dooley@...rochip.com>,
Daire McNamara <daire.mcnamara@...rochip.com>,
Shawn Lin <shawn.lin@...k-chips.com>,
Heiko Stuebner <heiko@...ech.de>,
Bharat Kumar Gogada <bharat.kumar.gogada@....com>,
Michal Simek <monstr@...str.eu>,
bcm-kernel-feedback-list@...adcom.com, linux-omap@...r.kernel.org,
linux-pci@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
linux-kernel@...r.kernel.org, linuxppc-dev@...ts.ozlabs.org,
linux-tegra@...r.kernel.org, linux-riscv@...ts.infradead.org
Subject: Re: [PATCH] PCI: Remove unnecessary of_irq.h includes
Hi Bjorn,
I love your patch! Yet something to improve:
[auto build test ERROR on helgaas-pci/next]
[also build test ERROR on xilinx-xlnx/master rockchip/for-next linus/master v6.1-rc1 next-20221020]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Bjorn-Helgaas/PCI-Remove-unnecessary-of_irq-h-includes/20221020-100633
base: https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git next
patch link: https://lore.kernel.org/r/20221019195452.37606-1-helgaas%40kernel.org
patch subject: [PATCH] PCI: Remove unnecessary of_irq.h includes
config: s390-randconfig-r044-20221019
compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 791a7ae1ba3efd6bca96338e10ffde557ba83920)
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
# install s390 cross compiling tool for clang build
# apt-get install binutils-s390x-linux-gnu
# https://github.com/intel-lab-lkp/linux/commit/273a24b16a40ffd6a64c6c55aecbfae00a1cd996
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Bjorn-Helgaas/PCI-Remove-unnecessary-of_irq-h-includes/20221020-100633
git checkout 273a24b16a40ffd6a64c6c55aecbfae00a1cd996
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=s390 SHELL=/bin/bash drivers/pci/controller/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@...el.com>
All errors (new ones prefixed by >>):
In file included from drivers/pci/controller/pcie-altera-msi.c:11:
In file included from include/linux/irqchip/chained_irq.h:10:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/s390/include/asm/io.h:75:
include/asm-generic/io.h:547:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __raw_readb(PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:560:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/big_endian.h:37:59: note: expanded from macro '__le16_to_cpu'
#define __le16_to_cpu(x) __swab16((__force __u16)(__le16)(x))
^
include/uapi/linux/swab.h:102:54: note: expanded from macro '__swab16'
#define __swab16(x) (__u16)__builtin_bswap16((__u16)(x))
^
In file included from drivers/pci/controller/pcie-altera-msi.c:11:
In file included from include/linux/irqchip/chained_irq.h:10:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/s390/include/asm/io.h:75:
include/asm-generic/io.h:573:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/big_endian.h:35:59: note: expanded from macro '__le32_to_cpu'
#define __le32_to_cpu(x) __swab32((__force __u32)(__le32)(x))
^
include/uapi/linux/swab.h:115:54: note: expanded from macro '__swab32'
#define __swab32(x) (__u32)__builtin_bswap32((__u32)(x))
^
In file included from drivers/pci/controller/pcie-altera-msi.c:11:
In file included from include/linux/irqchip/chained_irq.h:10:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/s390/include/asm/io.h:75:
include/asm-generic/io.h:584:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writeb(value, PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:594:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:604:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:692:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
readsb(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:700:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
readsw(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:708:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
readsl(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:717:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
writesb(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:726:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
writesw(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:735:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
writesl(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
>> drivers/pci/controller/pcie-altera-msi.c:116:33: error: incomplete definition of type 'struct irq_domain'
struct altera_msi *msi = domain->host_data;
~~~~~~^
include/linux/irq.h:130:8: note: forward declaration of 'struct irq_domain'
struct irq_domain;
^
>> drivers/pci/controller/pcie-altera-msi.c:133:2: error: call to undeclared function 'irq_domain_set_info'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
irq_domain_set_info(domain, virq, bit, &altera_msi_bottom_irq_chip,
^
drivers/pci/controller/pcie-altera-msi.c:134:14: error: incomplete definition of type 'struct irq_domain'
domain->host_data, handle_simple_irq,
~~~~~~^
include/linux/irq.h:130:8: note: forward declaration of 'struct irq_domain'
struct irq_domain;
^
>> drivers/pci/controller/pcie-altera-msi.c:147:23: error: call to undeclared function 'irq_domain_get_irq_data'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
struct irq_data *d = irq_domain_get_irq_data(domain, virq);
^
drivers/pci/controller/pcie-altera-msi.c:147:23: note: did you mean 'irq_desc_get_irq_data'?
include/linux/irqdesc.h:132:32: note: 'irq_desc_get_irq_data' declared here
static inline struct irq_data *irq_desc_get_irq_data(struct irq_desc *desc)
^
>> drivers/pci/controller/pcie-altera-msi.c:147:19: error: incompatible integer to pointer conversion initializing 'struct irq_data *' with an expression of type 'int' [-Wint-conversion]
struct irq_data *d = irq_domain_get_irq_data(domain, virq);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/pci/controller/pcie-altera-msi.c:166:36: error: variable has incomplete type 'const struct irq_domain_ops'
static const struct irq_domain_ops msi_domain_ops = {
^
include/linux/msi.h:301:8: note: forward declaration of 'struct irq_domain_ops'
struct irq_domain_ops;
^
>> drivers/pci/controller/pcie-altera-msi.c:173:33: error: call to undeclared function 'of_node_to_fwnode'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
struct fwnode_handle *fwnode = of_node_to_fwnode(msi->pdev->dev.of_node);
^
drivers/pci/controller/pcie-altera-msi.c:173:33: note: did you mean 'of_node_to_nid'?
include/linux/of.h:866:19: note: 'of_node_to_nid' declared here
static inline int of_node_to_nid(struct device_node *device)
^
>> drivers/pci/controller/pcie-altera-msi.c:173:24: error: incompatible integer to pointer conversion initializing 'struct fwnode_handle *' with an expression of type 'int' [-Wint-conversion]
struct fwnode_handle *fwnode = of_node_to_fwnode(msi->pdev->dev.of_node);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/pci/controller/pcie-altera-msi.c:175:22: error: call to undeclared function 'irq_domain_add_linear'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
msi->inner_domain = irq_domain_add_linear(NULL, msi->num_of_vectors,
^
>> drivers/pci/controller/pcie-altera-msi.c:186:3: error: call to undeclared function 'irq_domain_remove'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
irq_domain_remove(msi->inner_domain);
^
drivers/pci/controller/pcie-altera-msi.c:195:2: error: call to undeclared function 'irq_domain_remove'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
irq_domain_remove(msi->msi_domain);
^
12 warnings and 11 errors generated.
--
In file included from drivers/pci/controller/pcie-microchip-host.c:11:
In file included from include/linux/irqchip/chained_irq.h:10:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/s390/include/asm/io.h:75:
include/asm-generic/io.h:547:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __raw_readb(PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:560:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/big_endian.h:37:59: note: expanded from macro '__le16_to_cpu'
#define __le16_to_cpu(x) __swab16((__force __u16)(__le16)(x))
^
include/uapi/linux/swab.h:102:54: note: expanded from macro '__swab16'
#define __swab16(x) (__u16)__builtin_bswap16((__u16)(x))
^
In file included from drivers/pci/controller/pcie-microchip-host.c:11:
In file included from include/linux/irqchip/chained_irq.h:10:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/s390/include/asm/io.h:75:
include/asm-generic/io.h:573:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/big_endian.h:35:59: note: expanded from macro '__le32_to_cpu'
#define __le32_to_cpu(x) __swab32((__force __u32)(__le32)(x))
^
include/uapi/linux/swab.h:115:54: note: expanded from macro '__swab32'
#define __swab32(x) (__u32)__builtin_bswap32((__u32)(x))
^
In file included from drivers/pci/controller/pcie-microchip-host.c:11:
In file included from include/linux/irqchip/chained_irq.h:10:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/s390/include/asm/io.h:75:
include/asm-generic/io.h:584:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writeb(value, PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:594:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:604:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:692:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
readsb(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:700:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
readsw(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:708:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
readsl(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:717:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
writesb(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:726:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
writesw(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:735:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
writesl(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
>> drivers/pci/controller/pcie-microchip-host.c:473:31: error: incomplete definition of type 'struct irq_domain'
struct mc_pcie *port = domain->host_data;
~~~~~~^
include/linux/irq.h:130:8: note: forward declaration of 'struct irq_domain'
struct irq_domain;
^
>> drivers/pci/controller/pcie-microchip-host.c:489:2: error: call to undeclared function 'irq_domain_set_info'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
irq_domain_set_info(domain, virq, bit, &mc_msi_bottom_irq_chip,
^
drivers/pci/controller/pcie-microchip-host.c:490:14: error: incomplete definition of type 'struct irq_domain'
domain->host_data, handle_edge_irq, NULL, NULL);
~~~~~~^
include/linux/irq.h:130:8: note: forward declaration of 'struct irq_domain'
struct irq_domain;
^
>> drivers/pci/controller/pcie-microchip-host.c:505:23: error: call to undeclared function 'irq_domain_get_irq_data'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
struct irq_data *d = irq_domain_get_irq_data(domain, virq);
^
drivers/pci/controller/pcie-microchip-host.c:505:23: note: did you mean 'irq_desc_get_irq_data'?
include/linux/irqdesc.h:132:32: note: 'irq_desc_get_irq_data' declared here
static inline struct irq_data *irq_desc_get_irq_data(struct irq_desc *desc)
^
>> drivers/pci/controller/pcie-microchip-host.c:505:19: error: incompatible integer to pointer conversion initializing 'struct irq_data *' with an expression of type 'int' [-Wint-conversion]
struct irq_data *d = irq_domain_get_irq_data(domain, virq);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/pci/controller/pcie-microchip-host.c:519:36: error: variable has incomplete type 'const struct irq_domain_ops'
static const struct irq_domain_ops msi_domain_ops = {
^
include/linux/msi.h:301:8: note: forward declaration of 'struct irq_domain_ops'
struct irq_domain_ops;
^
>> drivers/pci/controller/pcie-microchip-host.c:540:33: error: call to undeclared function 'of_node_to_fwnode'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
struct fwnode_handle *fwnode = of_node_to_fwnode(dev->of_node);
^
drivers/pci/controller/pcie-microchip-host.c:540:33: note: did you mean 'of_node_to_nid'?
include/linux/of.h:866:19: note: 'of_node_to_nid' declared here
static inline int of_node_to_nid(struct device_node *device)
^
>> drivers/pci/controller/pcie-microchip-host.c:540:24: error: incompatible integer to pointer conversion initializing 'struct fwnode_handle *' with an expression of type 'int' [-Wint-conversion]
struct fwnode_handle *fwnode = of_node_to_fwnode(dev->of_node);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/pci/controller/pcie-microchip-host.c:545:20: error: call to undeclared function 'irq_domain_add_linear'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
msi->dev_domain = irq_domain_add_linear(NULL, msi->num_vectors,
^
>> drivers/pci/controller/pcie-microchip-host.c:556:3: error: call to undeclared function 'irq_domain_remove'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
irq_domain_remove(msi->dev_domain);
^
drivers/pci/controller/pcie-microchip-host.c:644:31: error: incomplete definition of type 'struct irq_domain'
irq_set_chip_data(irq, domain->host_data);
~~~~~~^
include/linux/irq.h:130:8: note: forward declaration of 'struct irq_domain'
struct irq_domain;
^
drivers/pci/controller/pcie-microchip-host.c:649:36: error: variable has incomplete type 'const struct irq_domain_ops'
static const struct irq_domain_ops intx_domain_ops = {
^
include/linux/msi.h:301:8: note: forward declaration of 'struct irq_domain_ops'
struct irq_domain_ops;
^
drivers/pci/controller/pcie-microchip-host.c:727:9: error: call to undeclared function 'irq_domain_get_irq_data'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
data = irq_domain_get_irq_data(port->event_domain, irq);
^
>> drivers/pci/controller/pcie-microchip-host.c:727:7: error: incompatible integer to pointer conversion assigning to 'struct irq_data *' from 'int' [-Wint-conversion]
data = irq_domain_get_irq_data(port->event_domain, irq);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/pci/controller/pcie-microchip-host.c:841:31: error: incomplete definition of type 'struct irq_domain'
irq_set_chip_data(irq, domain->host_data);
~~~~~~^
include/linux/irq.h:130:8: note: forward declaration of 'struct irq_domain'
struct irq_domain;
^
drivers/pci/controller/pcie-microchip-host.c:846:36: error: variable has incomplete type 'const struct irq_domain_ops'
static const struct irq_domain_ops event_domain_ops = {
^
include/linux/msi.h:301:8: note: forward declaration of 'struct irq_domain_ops'
struct irq_domain_ops;
^
drivers/pci/controller/pcie-microchip-host.c:902:23: error: call to undeclared function 'irq_domain_add_linear'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
port->event_domain = irq_domain_add_linear(pcie_intc_node, NUM_EVENTS,
^
>> drivers/pci/controller/pcie-microchip-host.c:910:2: error: call to undeclared function 'irq_domain_update_bus_token'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
irq_domain_update_bus_token(port->event_domain, DOMAIN_BUS_NEXUS);
^
>> drivers/pci/controller/pcie-microchip-host.c:910:50: error: use of undeclared identifier 'DOMAIN_BUS_NEXUS'
irq_domain_update_bus_token(port->event_domain, DOMAIN_BUS_NEXUS);
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
12 warnings and 20 errors generated.
vim +116 drivers/pci/controller/pcie-altera-msi.c
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 112
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 113 static int altera_irq_domain_alloc(struct irq_domain *domain, unsigned int virq,
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 114 unsigned int nr_irqs, void *args)
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 115 {
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 @116 struct altera_msi *msi = domain->host_data;
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 117 unsigned long bit;
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 118 u32 mask;
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 119
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 120 WARN_ON(nr_irqs != 1);
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 121 mutex_lock(&msi->lock);
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 122
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 123 bit = find_first_zero_bit(msi->used, msi->num_of_vectors);
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 124 if (bit >= msi->num_of_vectors) {
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 125 mutex_unlock(&msi->lock);
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 126 return -ENOSPC;
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 127 }
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 128
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 129 set_bit(bit, msi->used);
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 130
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 131 mutex_unlock(&msi->lock);
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 132
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 @133 irq_domain_set_info(domain, virq, bit, &altera_msi_bottom_irq_chip,
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 134 domain->host_data, handle_simple_irq,
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 135 NULL, NULL);
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 136
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 137 mask = msi_readl(msi, MSI_INTMASK);
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 138 mask |= 1 << bit;
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 139 msi_writel(msi, mask, MSI_INTMASK);
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 140
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 141 return 0;
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 142 }
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 143
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 144 static void altera_irq_domain_free(struct irq_domain *domain,
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 145 unsigned int virq, unsigned int nr_irqs)
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 146 {
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 @147 struct irq_data *d = irq_domain_get_irq_data(domain, virq);
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 148 struct altera_msi *msi = irq_data_get_irq_chip_data(d);
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 149 u32 mask;
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 150
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 151 mutex_lock(&msi->lock);
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 152
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 153 if (!test_bit(d->hwirq, msi->used)) {
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 154 dev_err(&msi->pdev->dev, "trying to free unused MSI#%lu\n",
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 155 d->hwirq);
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 156 } else {
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 157 __clear_bit(d->hwirq, msi->used);
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 158 mask = msi_readl(msi, MSI_INTMASK);
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 159 mask &= ~(1 << d->hwirq);
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 160 msi_writel(msi, mask, MSI_INTMASK);
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 161 }
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 162
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 163 mutex_unlock(&msi->lock);
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 164 }
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 165
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 @166 static const struct irq_domain_ops msi_domain_ops = {
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 167 .alloc = altera_irq_domain_alloc,
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 168 .free = altera_irq_domain_free,
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 169 };
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 170
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 171 static int altera_allocate_domains(struct altera_msi *msi)
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 172 {
3c87b791880a2e drivers/pci/host/pcie-altera-msi.c Linus Torvalds 2015-11-06 @173 struct fwnode_handle *fwnode = of_node_to_fwnode(msi->pdev->dev.of_node);
3c87b791880a2e drivers/pci/host/pcie-altera-msi.c Linus Torvalds 2015-11-06 174
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 @175 msi->inner_domain = irq_domain_add_linear(NULL, msi->num_of_vectors,
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 176 &msi_domain_ops, msi);
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 177 if (!msi->inner_domain) {
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 178 dev_err(&msi->pdev->dev, "failed to create IRQ domain\n");
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 179 return -ENOMEM;
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 180 }
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 181
3c87b791880a2e drivers/pci/host/pcie-altera-msi.c Linus Torvalds 2015-11-06 182 msi->msi_domain = pci_msi_create_irq_domain(fwnode,
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 183 &altera_msi_domain_info, msi->inner_domain);
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 184 if (!msi->msi_domain) {
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 185 dev_err(&msi->pdev->dev, "failed to create MSI domain\n");
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 @186 irq_domain_remove(msi->inner_domain);
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 187 return -ENOMEM;
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 188 }
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 189
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 190 return 0;
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 191 }
af1169b48b179c drivers/pci/host/pcie-altera-msi.c Ley Foon Tan 2015-10-23 192
--
0-DAY CI Kernel Test Service
https://01.org/lkp
View attachment "config" of type "text/plain" (140919 bytes)
Powered by blists - more mailing lists