* arch/mips/pci/msi-octeon.c:215: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
@ 2022-07-16 20:05 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-07-16 20:05 UTC (permalink / raw)
To: Aditya Srivastava; +Cc: kbuild-all, linux-kernel, Jonathan Corbet, linux-doc
Hi Aditya,
First bad commit (maybe != root cause):
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: c5fe7a97f20c7f3070ac870144515c0fabc6b999
commit: 3e58e839150db0857dfcb3a0bb3d4af4c6ac1abf scripts: kernel-doc: add warning for comment not following kernel-doc syntax
date: 1 year, 4 months ago
config: mips-randconfig-r015-20220717 (https://download.01.org/0day-ci/archive/20220717/202207170450.i5OUq4GL-lkp@intel.com/config)
compiler: mips64el-linux-gcc (GCC) 12.1.0
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
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3e58e839150db0857dfcb3a0bb3d4af4c6ac1abf
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 3e58e839150db0857dfcb3a0bb3d4af4c6ac1abf
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=mips SHELL=/bin/bash arch/mips/cavium-octeon/executive/ arch/mips/pci/
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
arch/mips/pci/msi-octeon.c:61: warning: expecting prototype for Called when a driver request MSI interrupts instead of the(). Prototype was for arch_setup_msi_irq() instead
>> arch/mips/pci/msi-octeon.c:215: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Called when a device no longer needs its MSI interrupts. All
--
arch/mips/cavium-octeon/executive/octeon-model.c:40: warning: expecting prototype for Read a byte of fuse data(). Prototype was for cvmx_fuse_read_byte() instead
>> arch/mips/cavium-octeon/executive/octeon-model.c:495: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Given the chip processor ID from COP0, this function returns a
--
>> arch/mips/cavium-octeon/executive/cvmx-helper.c:53: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Return the number of interfaces the chip has. Each interface
arch/mips/cavium-octeon/executive/cvmx-helper.c:74: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Return the number of ports on an interface. Depending on the
arch/mips/cavium-octeon/executive/cvmx-helper.c:89: warning: Cannot understand * @INTERNAL
on line 89 - I thought it was a doc line
arch/mips/cavium-octeon/executive/cvmx-helper.c:141: warning: Cannot understand * @INTERNAL
on line 141 - I thought it was a doc line
arch/mips/cavium-octeon/executive/cvmx-helper.c:241: warning: Cannot understand * @INTERNAL
on line 241 - I thought it was a doc line
arch/mips/cavium-octeon/executive/cvmx-helper.c:277: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Get the operating mode of an interface. Depending on the Octeon
arch/mips/cavium-octeon/executive/cvmx-helper.c:359: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Configure the IPD/PIP tagging and QoS options for a specific
arch/mips/cavium-octeon/executive/cvmx-helper.c:408: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* This function sets the interface_port_count[interface] correctly,
arch/mips/cavium-octeon/executive/cvmx-helper.c:493: warning: expecting prototype for This function probes an interface to determine the actual(). Prototype was for cvmx_helper_interface_probe() instead
arch/mips/cavium-octeon/executive/cvmx-helper.c:550: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Setup the IPD/PIP for the ports on an interface. Packet
arch/mips/cavium-octeon/executive/cvmx-helper.c:572: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Setup global setting for IPD/PIP not related to a specific
arch/mips/cavium-octeon/executive/cvmx-helper.c:594: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Setup the PKO for the ports on an interface. The number of
arch/mips/cavium-octeon/executive/cvmx-helper.c:644: warning: expecting prototype for Setup global setting for PKO not related to a specific(). Prototype was for __cvmx_helper_global_setup_pko() instead
arch/mips/cavium-octeon/executive/cvmx-helper.c:673: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Setup global backpressure setting.
arch/mips/cavium-octeon/executive/cvmx-helper.c:707: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Enable packet input/output from the hardware. This function is
arch/mips/cavium-octeon/executive/cvmx-helper.c:775: warning: expecting prototype for Function to adjust internal IPD pointer alignments(). Prototype was for __cvmx_helper_errata_fix_ipd_ptr_alignment() instead
arch/mips/cavium-octeon/executive/cvmx-helper.c:963: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Called after all internal packet IO paths are setup. This
arch/mips/cavium-octeon/executive/cvmx-helper.c:999: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Initialize the PIP, IPD, and PKO hardware to support
arch/mips/cavium-octeon/executive/cvmx-helper.c:1064: warning: expecting prototype for Does core local initialization for packet io(). Prototype was for cvmx_helper_initialize_packet_io_local() instead
arch/mips/cavium-octeon/executive/cvmx-helper.c:1069: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Return the link state of an IPD/PKO port as returned by
arch/mips/cavium-octeon/executive/cvmx-helper.c:1129: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Configure an IPD/PKO port for the specified link state. This
vim +215 arch/mips/pci/msi-octeon.c
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 47
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 48 /**
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 49 * Called when a driver request MSI interrupts instead of the
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 50 * legacy INT A-D. This routine will allocate multiple interrupts
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 51 * for MSI devices that support them. A device can override this by
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 52 * programming the MSI control bits [6:4] before calling
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 53 * pci_enable_msi().
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 54 *
01a6221a6a51ec arch/mips/pci/msi-octeon.c David Daney 2009-06-29 55 * @dev: Device requesting MSI interrupts
01a6221a6a51ec arch/mips/pci/msi-octeon.c David Daney 2009-06-29 56 * @desc: MSI descriptor
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 57 *
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 58 * Returns 0 on success.
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 59 */
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 60 int arch_setup_msi_irq(struct pci_dev *dev, struct msi_desc *desc)
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 @61 {
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 62 struct msi_msg msg;
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 63 u16 control;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 64 int configured_private_bits;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 65 int request_private_bits;
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 66 int irq = 0;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 67 int irq_step;
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 68 u64 search_mask;
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 69 int index;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 70
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 71 /*
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 72 * Read the MSI config to figure out how many IRQs this device
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 73 * wants. Most devices only want 1, which will give
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 74 * configured_private_bits and request_private_bits equal 0.
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 75 */
48c3c38f003c25 arch/mips/pci/msi-octeon.c Yijing Wang 2014-09-23 76 pci_read_config_word(dev, dev->msi_cap + PCI_MSI_FLAGS, &control);
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 77
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 78 /*
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 79 * If the number of private bits has been configured then use
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 80 * that value instead of the requested number. This gives the
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 81 * driver the chance to override the number of interrupts
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 82 * before calling pci_enable_msi().
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 83 */
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 84 configured_private_bits = (control & PCI_MSI_FLAGS_QSIZE) >> 4;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 85 if (configured_private_bits == 0) {
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 86 /* Nothing is configured, so use the hardware requested size */
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 87 request_private_bits = (control & PCI_MSI_FLAGS_QMASK) >> 1;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 88 } else {
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 89 /*
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 90 * Use the number of configured bits, assuming the
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 91 * driver wanted to override the hardware request
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 92 * value.
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 93 */
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 94 request_private_bits = configured_private_bits;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 95 }
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 96
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 97 /*
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 98 * The PCI 2.3 spec mandates that there are at most 32
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 99 * interrupts. If this device asks for more, only give it one.
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 100 */
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 101 if (request_private_bits > 5)
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 102 request_private_bits = 0;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 103
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 104 try_only_one:
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 105 /*
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 106 * The IRQs have to be aligned on a power of two based on the
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 107 * number being requested.
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 108 */
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 109 irq_step = 1 << request_private_bits;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 110
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 111 /* Mask with one bit for each IRQ */
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 112 search_mask = (1 << irq_step) - 1;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 113
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 114 /*
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 115 * We're going to search msi_free_irq_bitmask_lock for zero
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 116 * bits. This represents an MSI interrupt number that isn't in
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 117 * use.
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 118 */
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 119 spin_lock(&msi_free_irq_bitmask_lock);
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 120 for (index = 0; index < msi_irq_size/64; index++) {
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 121 for (irq = 0; irq < 64; irq += irq_step) {
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 122 if ((msi_free_irq_bitmask[index] & (search_mask << irq)) == 0) {
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 123 msi_free_irq_bitmask[index] |= search_mask << irq;
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 124 msi_multiple_irq_bitmask[index] |= (search_mask >> 1) << irq;
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 125 goto msi_irq_allocated;
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 126 }
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 127 }
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 128 }
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 129 msi_irq_allocated:
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 130 spin_unlock(&msi_free_irq_bitmask_lock);
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 131
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 132 /* Make sure the search for available interrupts didn't fail */
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 133 if (irq >= 64) {
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 134 if (request_private_bits) {
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 135 pr_err("arch_setup_msi_irq: Unable to find %d free interrupts, trying just one",
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 136 1 << request_private_bits);
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 137 request_private_bits = 0;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 138 goto try_only_one;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 139 } else
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 140 panic("arch_setup_msi_irq: Unable to find a free MSI interrupt");
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 141 }
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 142
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 143 /* MSI interrupts start at logical IRQ OCTEON_IRQ_MSI_BIT0 */
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 144 irq += index*64;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 145 irq += OCTEON_IRQ_MSI_BIT0;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 146
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 147 switch (octeon_dma_bar_type) {
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 148 case OCTEON_DMA_BAR_TYPE_SMALL:
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 149 /* When not using big bar, Bar 0 is based at 128MB */
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 150 msg.address_lo =
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 151 ((128ul << 20) + CVMX_PCI_MSI_RCV) & 0xffffffff;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 152 msg.address_hi = ((128ul << 20) + CVMX_PCI_MSI_RCV) >> 32;
7f02c463057fc5 arch/mips/pci/msi-octeon.c Colin Ian King 2014-02-10 153 break;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 154 case OCTEON_DMA_BAR_TYPE_BIG:
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 155 /* When using big bar, Bar 0 is based at 0 */
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 156 msg.address_lo = (0 + CVMX_PCI_MSI_RCV) & 0xffffffff;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 157 msg.address_hi = (0 + CVMX_PCI_MSI_RCV) >> 32;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 158 break;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 159 case OCTEON_DMA_BAR_TYPE_PCIE:
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 160 /* When using PCIe, Bar 0 is based at 0 */
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 161 /* FIXME CVMX_NPEI_MSI_RCV* other than 0? */
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 162 msg.address_lo = (0 + CVMX_NPEI_PCIE_MSI_RCV) & 0xffffffff;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 163 msg.address_hi = (0 + CVMX_NPEI_PCIE_MSI_RCV) >> 32;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 164 break;
d19648d7f3b047 arch/mips/pci/msi-octeon.c Eunbong Song 2014-04-11 165 case OCTEON_DMA_BAR_TYPE_PCIE2:
d19648d7f3b047 arch/mips/pci/msi-octeon.c Eunbong Song 2014-04-11 166 /* When using PCIe2, Bar 0 is based at 0 */
d19648d7f3b047 arch/mips/pci/msi-octeon.c Eunbong Song 2014-04-11 167 msg.address_lo = (0 + CVMX_SLI_PCIE_MSI_RCV) & 0xffffffff;
d19648d7f3b047 arch/mips/pci/msi-octeon.c Eunbong Song 2014-04-11 168 msg.address_hi = (0 + CVMX_SLI_PCIE_MSI_RCV) >> 32;
d19648d7f3b047 arch/mips/pci/msi-octeon.c Eunbong Song 2014-04-11 169 break;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 170 default:
ab75dc02c151c9 arch/mips/pci/msi-octeon.c Ralf Baechle 2011-11-17 171 panic("arch_setup_msi_irq: Invalid octeon_dma_bar_type");
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 172 }
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 173 msg.data = irq - OCTEON_IRQ_MSI_BIT0;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 174
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 175 /* Update the number of IRQs the device has available to it */
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 176 control &= ~PCI_MSI_FLAGS_QSIZE;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 177 control |= request_private_bits << 4;
48c3c38f003c25 arch/mips/pci/msi-octeon.c Yijing Wang 2014-09-23 178 pci_write_config_word(dev, dev->msi_cap + PCI_MSI_FLAGS, control);
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 179
e4ec7989b4e55d arch/mips/pci/msi-octeon.c Thomas Gleixner 2011-03-27 180 irq_set_msi_desc(irq, desc);
83a18912b0e8d2 arch/mips/pci/msi-octeon.c Jiang Liu 2014-11-09 181 pci_write_msi_msg(irq, &msg);
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 182 return 0;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 183 }
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 184
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 185 int arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 186 {
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 187 struct msi_desc *entry;
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 188 int ret;
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 189
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 190 /*
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 191 * MSI-X is not supported.
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 192 */
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 193 if (type == PCI_CAP_ID_MSIX)
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 194 return -EINVAL;
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 195
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 196 /*
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 197 * If an architecture wants to support multiple MSI, it needs to
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 198 * override arch_setup_msi_irqs()
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 199 */
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 200 if (type == PCI_CAP_ID_MSI && nvec > 1)
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 201 return 1;
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 202
bbcffac3a8b60f arch/mips/pci/msi-octeon.c Jiang Liu 2015-07-09 203 for_each_pci_msi_entry(entry, dev) {
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 204 ret = arch_setup_msi_irq(dev, entry);
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 205 if (ret < 0)
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 206 return ret;
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 207 if (ret > 0)
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 208 return -ENOSPC;
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 209 }
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 210
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 211 return 0;
52a0f00b50ea36 arch/mips/pci/msi-octeon.c Chandrakala Chavva 2010-07-26 212 }
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 213
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 214 /**
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 @215 * Called when a device no longer needs its MSI interrupts. All
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 216 * MSI interrupts for the device are freed.
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 217 *
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 218 * @irq: The devices first irq number. There may be multple in sequence.
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 219 */
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 220 void arch_teardown_msi_irq(unsigned int irq)
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 221 {
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 222 int number_irqs;
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 223 u64 bitmask;
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 224 int index = 0;
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 225 int irq0;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 226
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 227 if ((irq < OCTEON_IRQ_MSI_BIT0)
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 228 || (irq > msi_irq_size + OCTEON_IRQ_MSI_BIT0))
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 229 panic("arch_teardown_msi_irq: Attempted to teardown illegal "
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 230 "MSI interrupt (%d)", irq);
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 231
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 232 irq -= OCTEON_IRQ_MSI_BIT0;
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 233 index = irq / 64;
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 234 irq0 = irq % 64;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 235
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 236 /*
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 237 * Count the number of IRQs we need to free by looking at the
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 238 * msi_multiple_irq_bitmask. Each bit set means that the next
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 239 * IRQ is also owned by this device.
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 240 */
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 241 number_irqs = 0;
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 242 while ((irq0 + number_irqs < 64) &&
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 243 (msi_multiple_irq_bitmask[index]
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 244 & (1ull << (irq0 + number_irqs))))
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 245 number_irqs++;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 246 number_irqs++;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 247 /* Mask with one bit for each IRQ */
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 248 bitmask = (1 << number_irqs) - 1;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 249 /* Shift the mask to the correct bit location */
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 250 bitmask <<= irq0;
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 251 if ((msi_free_irq_bitmask[index] & bitmask) != bitmask)
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 252 panic("arch_teardown_msi_irq: Attempted to teardown MSI "
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 253 "interrupt (%d) not in use", irq);
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 254
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 255 /* Checks are done, update the in use bitmask */
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 256 spin_lock(&msi_free_irq_bitmask_lock);
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 257 msi_free_irq_bitmask[index] &= ~bitmask;
1aa2b2782a056b arch/mips/pci/msi-octeon.c David Daney 2010-07-26 258 msi_multiple_irq_bitmask[index] &= ~bitmask;
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 259 spin_unlock(&msi_free_irq_bitmask_lock);
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 260 }
e8635b484f644c arch/mips/cavium-octeon/msi.c David Daney 2009-04-23 261
:::::: The code at line 215 was first introduced by commit
:::::: e8635b484f644c7873e6091f15330c49396f2cbc MIPS: Add Cavium OCTEON PCI support.
:::::: TO: David Daney <ddaney@caviumnetworks.com>
:::::: CC: Ralf Baechle <ralf@linux-mips.org>
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-07-16 20:05 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-16 20:05 arch/mips/pci/msi-octeon.c:215: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst kernel test robot
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.