Message ID | 20171013170221.70056-1-andriy.shevchenko@linux.intel.com |
---|---|
State | Superseded, archived |
Delegated to: | David Miller |
Headers | show |
Series | [v1] pch_gbe: Switch to new PCI IRQ allocation API | expand |
On Fri, 2017-10-13 at 20:02 +0300, Andy Shevchenko wrote: > This removes custom flag handling. Please, discard this one, slipped to early. > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > --- > drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h | 3 +- > .../net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c | 42 +++++++++-- > ----------- > 2 files changed, 17 insertions(+), 28 deletions(-) > > diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h > b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h > index 8d710a3b4db0..697e29dd4bd3 100644 > --- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h > +++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h > @@ -613,7 +613,6 @@ struct pch_gbe_privdata { > * @rx_ring: Pointer of Rx descriptor ring structure > * @rx_buffer_len: Receive buffer length > * @tx_queue_len: Transmit queue length > - * @have_msi: PCI MSI mode flag > * @pch_gbe_privdata: PCI Device ID driver_data > */ > > @@ -623,6 +622,7 @@ struct pch_gbe_adapter { > atomic_t irq_sem; > struct net_device *netdev; > struct pci_dev *pdev; > + int irq; > struct net_device *polling_netdev; > struct napi_struct napi; > struct pch_gbe_hw hw; > @@ -637,7 +637,6 @@ struct pch_gbe_adapter { > struct pch_gbe_rx_ring *rx_ring; > unsigned long rx_buffer_len; > unsigned long tx_queue_len; > - bool have_msi; > bool rx_stop_flag; > int hwts_tx_en; > int hwts_rx_en; > diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c > b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c > index 5ae9681a2da7..0284a3bc019c 100644 > --- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c > +++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c > @@ -781,11 +781,8 @@ static void pch_gbe_free_irq(struct > pch_gbe_adapter *adapter) > { > struct net_device *netdev = adapter->netdev; > > - free_irq(adapter->pdev->irq, netdev); > - if (adapter->have_msi) { > - pci_disable_msi(adapter->pdev); > - netdev_dbg(netdev, "call pci_disable_msi\n"); > - } > + free_irq(adapter->irq, netdev); > + pci_free_irq_vectors(adapter->pdev); > } > > /** > @@ -799,7 +796,7 @@ static void pch_gbe_irq_disable(struct > pch_gbe_adapter *adapter) > atomic_inc(&adapter->irq_sem); > iowrite32(0, &hw->reg->INT_EN); > ioread32(&hw->reg->INT_ST); > - synchronize_irq(adapter->pdev->irq); > + synchronize_irq(adapter->irq); > > netdev_dbg(adapter->netdev, "INT_EN reg : 0x%08x\n", > ioread32(&hw->reg->INT_EN)); > @@ -1903,30 +1900,23 @@ static int pch_gbe_request_irq(struct > pch_gbe_adapter *adapter) > { > struct net_device *netdev = adapter->netdev; > int err; > - int flags; > > - flags = IRQF_SHARED; > - adapter->have_msi = false; > - err = pci_enable_msi(adapter->pdev); > - netdev_dbg(netdev, "call pci_enable_msi\n"); > - if (err) { > - netdev_dbg(netdev, "call pci_enable_msi - Error: > %d\n", err); > - } else { > - flags = 0; > - adapter->have_msi = true; > - } > - err = request_irq(adapter->pdev->irq, &pch_gbe_intr, > - flags, netdev->name, netdev); > + err = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_ALL_TYPES); > + if (err < 0) > + return err; > + > + adapter->irq = pci_irq_vector(pdev, 0); > + > + err = request_irq(adapter->irq, &pch_gbe_intr, IRQF_SHARED, > + netdev->name, netdev); > if (err) > netdev_err(netdev, "Unable to allocate interrupt > Error: %d\n", > err); > - netdev_dbg(netdev, > - "adapter->have_msi : %d flags : 0x%04x return : > 0x%04x\n", > - adapter->have_msi, flags, err); > + netdev_dbg(netdev, "have_msi : %d return : 0x%04x\n", > + pci_dev_msi_enabled(adapter->pdev), err); > return err; > } > > - > /** > * pch_gbe_up - Up GbE network device > * @adapter: Board private structure > @@ -2399,9 +2389,9 @@ static void pch_gbe_netpoll(struct net_device > *netdev) > { > struct pch_gbe_adapter *adapter = netdev_priv(netdev); > > - disable_irq(adapter->pdev->irq); > - pch_gbe_intr(adapter->pdev->irq, netdev); > - enable_irq(adapter->pdev->irq); > + disable_irq(adapter->irq); > + pch_gbe_intr(adapter->irq, netdev); > + enable_irq(adapter->irq); > } > #endif >
Hi Andy, [auto build test ERROR on net-next/master] [also build test ERROR on v4.14-rc5 next-20171013] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Andy-Shevchenko/pch_gbe-Switch-to-new-PCI-IRQ-allocation-API/20171016-131405 config: xtensa-allyesconfig (attached as .config) compiler: xtensa-linux-gcc (GCC) 4.9.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=xtensa All errors (new ones prefixed by >>): drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c: In function 'pch_gbe_request_irq': >> drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c:1904:30: error: 'pdev' undeclared (first use in this function) err = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_ALL_TYPES); ^ drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c:1904:30: note: each undeclared identifier is reported only once for each function it appears in vim +/pdev +1904 drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c 1891 1892 /** 1893 * pch_gbe_request_irq - Allocate an interrupt line 1894 * @adapter: Board private structure 1895 * Returns: 1896 * 0: Successfully 1897 * Negative value: Failed 1898 */ 1899 static int pch_gbe_request_irq(struct pch_gbe_adapter *adapter) 1900 { 1901 struct net_device *netdev = adapter->netdev; 1902 int err; 1903 > 1904 err = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_ALL_TYPES); 1905 if (err < 0) 1906 return err; 1907 1908 adapter->irq = pci_irq_vector(pdev, 0); 1909 1910 err = request_irq(adapter->irq, &pch_gbe_intr, IRQF_SHARED, 1911 netdev->name, netdev); 1912 if (err) 1913 netdev_err(netdev, "Unable to allocate interrupt Error: %d\n", 1914 err); 1915 netdev_dbg(netdev, "have_msi : %d return : 0x%04x\n", 1916 pci_dev_msi_enabled(adapter->pdev), err); 1917 return err; 1918 } 1919 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h index 8d710a3b4db0..697e29dd4bd3 100644 --- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h +++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h @@ -613,7 +613,6 @@ struct pch_gbe_privdata { * @rx_ring: Pointer of Rx descriptor ring structure * @rx_buffer_len: Receive buffer length * @tx_queue_len: Transmit queue length - * @have_msi: PCI MSI mode flag * @pch_gbe_privdata: PCI Device ID driver_data */ @@ -623,6 +622,7 @@ struct pch_gbe_adapter { atomic_t irq_sem; struct net_device *netdev; struct pci_dev *pdev; + int irq; struct net_device *polling_netdev; struct napi_struct napi; struct pch_gbe_hw hw; @@ -637,7 +637,6 @@ struct pch_gbe_adapter { struct pch_gbe_rx_ring *rx_ring; unsigned long rx_buffer_len; unsigned long tx_queue_len; - bool have_msi; bool rx_stop_flag; int hwts_tx_en; int hwts_rx_en; diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c index 5ae9681a2da7..0284a3bc019c 100644 --- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c @@ -781,11 +781,8 @@ static void pch_gbe_free_irq(struct pch_gbe_adapter *adapter) { struct net_device *netdev = adapter->netdev; - free_irq(adapter->pdev->irq, netdev); - if (adapter->have_msi) { - pci_disable_msi(adapter->pdev); - netdev_dbg(netdev, "call pci_disable_msi\n"); - } + free_irq(adapter->irq, netdev); + pci_free_irq_vectors(adapter->pdev); } /** @@ -799,7 +796,7 @@ static void pch_gbe_irq_disable(struct pch_gbe_adapter *adapter) atomic_inc(&adapter->irq_sem); iowrite32(0, &hw->reg->INT_EN); ioread32(&hw->reg->INT_ST); - synchronize_irq(adapter->pdev->irq); + synchronize_irq(adapter->irq); netdev_dbg(adapter->netdev, "INT_EN reg : 0x%08x\n", ioread32(&hw->reg->INT_EN)); @@ -1903,30 +1900,23 @@ static int pch_gbe_request_irq(struct pch_gbe_adapter *adapter) { struct net_device *netdev = adapter->netdev; int err; - int flags; - flags = IRQF_SHARED; - adapter->have_msi = false; - err = pci_enable_msi(adapter->pdev); - netdev_dbg(netdev, "call pci_enable_msi\n"); - if (err) { - netdev_dbg(netdev, "call pci_enable_msi - Error: %d\n", err); - } else { - flags = 0; - adapter->have_msi = true; - } - err = request_irq(adapter->pdev->irq, &pch_gbe_intr, - flags, netdev->name, netdev); + err = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_ALL_TYPES); + if (err < 0) + return err; + + adapter->irq = pci_irq_vector(pdev, 0); + + err = request_irq(adapter->irq, &pch_gbe_intr, IRQF_SHARED, + netdev->name, netdev); if (err) netdev_err(netdev, "Unable to allocate interrupt Error: %d\n", err); - netdev_dbg(netdev, - "adapter->have_msi : %d flags : 0x%04x return : 0x%04x\n", - adapter->have_msi, flags, err); + netdev_dbg(netdev, "have_msi : %d return : 0x%04x\n", + pci_dev_msi_enabled(adapter->pdev), err); return err; } - /** * pch_gbe_up - Up GbE network device * @adapter: Board private structure @@ -2399,9 +2389,9 @@ static void pch_gbe_netpoll(struct net_device *netdev) { struct pch_gbe_adapter *adapter = netdev_priv(netdev); - disable_irq(adapter->pdev->irq); - pch_gbe_intr(adapter->pdev->irq, netdev); - enable_irq(adapter->pdev->irq); + disable_irq(adapter->irq); + pch_gbe_intr(adapter->irq, netdev); + enable_irq(adapter->irq); } #endif
This removes custom flag handling. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> --- drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h | 3 +- .../net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c | 42 +++++++++------------- 2 files changed, 17 insertions(+), 28 deletions(-)