From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH v3] bcm63xx_enet: fix internal phy IRQ assignment
Date: Wed, 10 Mar 2021 12:55:20 +0800 [thread overview]
Message-ID: <202103101234.B2OkiWWU-lkp@intel.com> (raw)
In-Reply-To: <2190629.1yaby32tsi@tool>
[-- Attachment #1: Type: text/plain, Size: 9169 bytes --]
Hi "Daniel,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on ipvs/master]
[also build test ERROR on linus/master sparc-next/master v5.12-rc2 next-20210309]
[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]
url: https://github.com/0day-ci/linux/commits/Daniel-Gonz-lez-Cabanelas/bcm63xx_enet-fix-internal-phy-IRQ-assignment/20210225-001952
base: https://git.kernel.org/pub/scm/linux/kernel/git/horms/ipvs.git master
config: mips-bcm63xx_defconfig (attached as .config)
compiler: mips-linux-gcc (GCC) 9.3.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://github.com/0day-ci/linux/commit/65174cd38e1739216cc40e3d285f16391d79d6e5
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Daniel-Gonz-lez-Cabanelas/bcm63xx_enet-fix-internal-phy-IRQ-assignment/20210225-001952
git checkout 65174cd38e1739216cc40e3d285f16391d79d6e5
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=mips
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/net/ethernet/broadcom/bcm63xx_enet.c: In function 'bcm_enet_start_xmit':
drivers/net/ethernet/broadcom/bcm63xx_enet.c:583:9: warning: variable 'data' set but not used [-Wunused-but-set-variable]
583 | char *data;
| ^~~~
drivers/net/ethernet/broadcom/bcm63xx_enet.c: In function 'bcm_enet_probe':
>> drivers/net/ethernet/broadcom/bcm63xx_enet.c:1807:4: error: 'phydev' undeclared (first use in this function); did you mean 'pdev'?
1807 | phydev = mdiobus_get_phy(bus, priv->phy_id);
| ^~~~~~
| pdev
drivers/net/ethernet/broadcom/bcm63xx_enet.c:1807:4: note: each undeclared identifier is reported only once for each function it appears in
vim +1807 drivers/net/ethernet/broadcom/bcm63xx_enet.c
1683
1684 /*
1685 * allocate netdevice, request register memory and register device.
1686 */
1687 static int bcm_enet_probe(struct platform_device *pdev)
1688 {
1689 struct bcm_enet_priv *priv;
1690 struct net_device *dev;
1691 struct bcm63xx_enet_platform_data *pd;
1692 struct resource *res_irq, *res_irq_rx, *res_irq_tx;
1693 struct mii_bus *bus;
1694 int i, ret;
1695
1696 if (!bcm_enet_shared_base[0])
1697 return -EPROBE_DEFER;
1698
1699 res_irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
1700 res_irq_rx = platform_get_resource(pdev, IORESOURCE_IRQ, 1);
1701 res_irq_tx = platform_get_resource(pdev, IORESOURCE_IRQ, 2);
1702 if (!res_irq || !res_irq_rx || !res_irq_tx)
1703 return -ENODEV;
1704
1705 dev = alloc_etherdev(sizeof(*priv));
1706 if (!dev)
1707 return -ENOMEM;
1708 priv = netdev_priv(dev);
1709
1710 priv->enet_is_sw = false;
1711 priv->dma_maxburst = BCMENET_DMA_MAXBURST;
1712
1713 ret = bcm_enet_change_mtu(dev, dev->mtu);
1714 if (ret)
1715 goto out;
1716
1717 priv->base = devm_platform_ioremap_resource(pdev, 0);
1718 if (IS_ERR(priv->base)) {
1719 ret = PTR_ERR(priv->base);
1720 goto out;
1721 }
1722
1723 dev->irq = priv->irq = res_irq->start;
1724 priv->irq_rx = res_irq_rx->start;
1725 priv->irq_tx = res_irq_tx->start;
1726
1727 priv->mac_clk = devm_clk_get(&pdev->dev, "enet");
1728 if (IS_ERR(priv->mac_clk)) {
1729 ret = PTR_ERR(priv->mac_clk);
1730 goto out;
1731 }
1732 ret = clk_prepare_enable(priv->mac_clk);
1733 if (ret)
1734 goto out;
1735
1736 /* initialize default and fetch platform data */
1737 priv->rx_ring_size = BCMENET_DEF_RX_DESC;
1738 priv->tx_ring_size = BCMENET_DEF_TX_DESC;
1739
1740 pd = dev_get_platdata(&pdev->dev);
1741 if (pd) {
1742 memcpy(dev->dev_addr, pd->mac_addr, ETH_ALEN);
1743 priv->has_phy = pd->has_phy;
1744 priv->phy_id = pd->phy_id;
1745 priv->has_phy_interrupt = pd->has_phy_interrupt;
1746 priv->phy_interrupt = pd->phy_interrupt;
1747 priv->use_external_mii = !pd->use_internal_phy;
1748 priv->pause_auto = pd->pause_auto;
1749 priv->pause_rx = pd->pause_rx;
1750 priv->pause_tx = pd->pause_tx;
1751 priv->force_duplex_full = pd->force_duplex_full;
1752 priv->force_speed_100 = pd->force_speed_100;
1753 priv->dma_chan_en_mask = pd->dma_chan_en_mask;
1754 priv->dma_chan_int_mask = pd->dma_chan_int_mask;
1755 priv->dma_chan_width = pd->dma_chan_width;
1756 priv->dma_has_sram = pd->dma_has_sram;
1757 priv->dma_desc_shift = pd->dma_desc_shift;
1758 priv->rx_chan = pd->rx_chan;
1759 priv->tx_chan = pd->tx_chan;
1760 }
1761
1762 if (priv->has_phy && !priv->use_external_mii) {
1763 /* using internal PHY, enable clock */
1764 priv->phy_clk = devm_clk_get(&pdev->dev, "ephy");
1765 if (IS_ERR(priv->phy_clk)) {
1766 ret = PTR_ERR(priv->phy_clk);
1767 priv->phy_clk = NULL;
1768 goto out_disable_clk_mac;
1769 }
1770 ret = clk_prepare_enable(priv->phy_clk);
1771 if (ret)
1772 goto out_disable_clk_mac;
1773 }
1774
1775 /* do minimal hardware init to be able to probe mii bus */
1776 bcm_enet_hw_preinit(priv);
1777
1778 /* MII bus registration */
1779 if (priv->has_phy) {
1780
1781 priv->mii_bus = mdiobus_alloc();
1782 if (!priv->mii_bus) {
1783 ret = -ENOMEM;
1784 goto out_uninit_hw;
1785 }
1786
1787 bus = priv->mii_bus;
1788 bus->name = "bcm63xx_enet MII bus";
1789 bus->parent = &pdev->dev;
1790 bus->priv = priv;
1791 bus->read = bcm_enet_mdio_read_phylib;
1792 bus->write = bcm_enet_mdio_write_phylib;
1793 sprintf(bus->id, "%s-%d", pdev->name, pdev->id);
1794
1795 /* only probe bus where we think the PHY is, because
1796 * the mdio read operation return 0 instead of 0xffff
1797 * if a slave is not present on hw */
1798 bus->phy_mask = ~(1 << priv->phy_id);
1799
1800 ret = mdiobus_register(bus);
1801 if (ret) {
1802 dev_err(&pdev->dev, "unable to register mdio bus\n");
1803 goto out_free_mdio;
1804 }
1805
1806 if (priv->has_phy_interrupt) {
> 1807 phydev = mdiobus_get_phy(bus, priv->phy_id);
1808 if (!phydev) {
1809 dev_err(&dev->dev, "no PHY found\n");
1810 goto out_unregister_mdio;
1811 }
1812
1813 bus->irq[priv->phy_id] = priv->phy_interrupt;
1814 phydev->irq = priv->phy_interrupt;
1815 }
1816 } else {
1817
1818 /* run platform code to initialize PHY device */
1819 if (pd && pd->mii_config &&
1820 pd->mii_config(dev, 1, bcm_enet_mdio_read_mii,
1821 bcm_enet_mdio_write_mii)) {
1822 dev_err(&pdev->dev, "unable to configure mdio bus\n");
1823 goto out_uninit_hw;
1824 }
1825 }
1826
1827 spin_lock_init(&priv->rx_lock);
1828
1829 /* init rx timeout (used for oom) */
1830 timer_setup(&priv->rx_timeout, bcm_enet_refill_rx_timer, 0);
1831
1832 /* init the mib update lock&work */
1833 mutex_init(&priv->mib_update_lock);
1834 INIT_WORK(&priv->mib_update_task, bcm_enet_update_mib_counters_defer);
1835
1836 /* zero mib counters */
1837 for (i = 0; i < ENET_MIB_REG_COUNT; i++)
1838 enet_writel(priv, 0, ENET_MIB_REG(i));
1839
1840 /* register netdevice */
1841 dev->netdev_ops = &bcm_enet_ops;
1842 netif_napi_add(dev, &priv->napi, bcm_enet_poll, 16);
1843
1844 dev->ethtool_ops = &bcm_enet_ethtool_ops;
1845 /* MTU range: 46 - 2028 */
1846 dev->min_mtu = ETH_ZLEN - ETH_HLEN;
1847 dev->max_mtu = BCMENET_MAX_MTU - VLAN_ETH_HLEN;
1848 SET_NETDEV_DEV(dev, &pdev->dev);
1849
1850 ret = register_netdev(dev);
1851 if (ret)
1852 goto out_unregister_mdio;
1853
1854 netif_carrier_off(dev);
1855 platform_set_drvdata(pdev, dev);
1856 priv->pdev = pdev;
1857 priv->net_dev = dev;
1858
1859 return 0;
1860
1861 out_unregister_mdio:
1862 if (priv->mii_bus)
1863 mdiobus_unregister(priv->mii_bus);
1864
1865 out_free_mdio:
1866 if (priv->mii_bus)
1867 mdiobus_free(priv->mii_bus);
1868
1869 out_uninit_hw:
1870 /* turn off mdc clock */
1871 enet_writel(priv, 0, ENET_MIISC_REG);
1872 clk_disable_unprepare(priv->phy_clk);
1873
1874 out_disable_clk_mac:
1875 clk_disable_unprepare(priv->mac_clk);
1876 out:
1877 free_netdev(dev);
1878 return ret;
1879 }
1880
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 14342 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: "Daniel González Cabanelas" <dgcbueu@gmail.com>, davem@davemloft.net
Cc: kbuild-all@lists.01.org, kuba@kernel.org, f.fainelli@gmail.com,
gregkh@linuxfoundation.org, netdev@vger.kernel.org,
noltari@gmail.com
Subject: Re: [PATCH v3] bcm63xx_enet: fix internal phy IRQ assignment
Date: Wed, 10 Mar 2021 12:55:20 +0800 [thread overview]
Message-ID: <202103101234.B2OkiWWU-lkp@intel.com> (raw)
In-Reply-To: <2190629.1yaby32tsi@tool>
[-- Attachment #1: Type: text/plain, Size: 8922 bytes --]
Hi "Daniel,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on ipvs/master]
[also build test ERROR on linus/master sparc-next/master v5.12-rc2 next-20210309]
[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]
url: https://github.com/0day-ci/linux/commits/Daniel-Gonz-lez-Cabanelas/bcm63xx_enet-fix-internal-phy-IRQ-assignment/20210225-001952
base: https://git.kernel.org/pub/scm/linux/kernel/git/horms/ipvs.git master
config: mips-bcm63xx_defconfig (attached as .config)
compiler: mips-linux-gcc (GCC) 9.3.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://github.com/0day-ci/linux/commit/65174cd38e1739216cc40e3d285f16391d79d6e5
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Daniel-Gonz-lez-Cabanelas/bcm63xx_enet-fix-internal-phy-IRQ-assignment/20210225-001952
git checkout 65174cd38e1739216cc40e3d285f16391d79d6e5
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=mips
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/net/ethernet/broadcom/bcm63xx_enet.c: In function 'bcm_enet_start_xmit':
drivers/net/ethernet/broadcom/bcm63xx_enet.c:583:9: warning: variable 'data' set but not used [-Wunused-but-set-variable]
583 | char *data;
| ^~~~
drivers/net/ethernet/broadcom/bcm63xx_enet.c: In function 'bcm_enet_probe':
>> drivers/net/ethernet/broadcom/bcm63xx_enet.c:1807:4: error: 'phydev' undeclared (first use in this function); did you mean 'pdev'?
1807 | phydev = mdiobus_get_phy(bus, priv->phy_id);
| ^~~~~~
| pdev
drivers/net/ethernet/broadcom/bcm63xx_enet.c:1807:4: note: each undeclared identifier is reported only once for each function it appears in
vim +1807 drivers/net/ethernet/broadcom/bcm63xx_enet.c
1683
1684 /*
1685 * allocate netdevice, request register memory and register device.
1686 */
1687 static int bcm_enet_probe(struct platform_device *pdev)
1688 {
1689 struct bcm_enet_priv *priv;
1690 struct net_device *dev;
1691 struct bcm63xx_enet_platform_data *pd;
1692 struct resource *res_irq, *res_irq_rx, *res_irq_tx;
1693 struct mii_bus *bus;
1694 int i, ret;
1695
1696 if (!bcm_enet_shared_base[0])
1697 return -EPROBE_DEFER;
1698
1699 res_irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
1700 res_irq_rx = platform_get_resource(pdev, IORESOURCE_IRQ, 1);
1701 res_irq_tx = platform_get_resource(pdev, IORESOURCE_IRQ, 2);
1702 if (!res_irq || !res_irq_rx || !res_irq_tx)
1703 return -ENODEV;
1704
1705 dev = alloc_etherdev(sizeof(*priv));
1706 if (!dev)
1707 return -ENOMEM;
1708 priv = netdev_priv(dev);
1709
1710 priv->enet_is_sw = false;
1711 priv->dma_maxburst = BCMENET_DMA_MAXBURST;
1712
1713 ret = bcm_enet_change_mtu(dev, dev->mtu);
1714 if (ret)
1715 goto out;
1716
1717 priv->base = devm_platform_ioremap_resource(pdev, 0);
1718 if (IS_ERR(priv->base)) {
1719 ret = PTR_ERR(priv->base);
1720 goto out;
1721 }
1722
1723 dev->irq = priv->irq = res_irq->start;
1724 priv->irq_rx = res_irq_rx->start;
1725 priv->irq_tx = res_irq_tx->start;
1726
1727 priv->mac_clk = devm_clk_get(&pdev->dev, "enet");
1728 if (IS_ERR(priv->mac_clk)) {
1729 ret = PTR_ERR(priv->mac_clk);
1730 goto out;
1731 }
1732 ret = clk_prepare_enable(priv->mac_clk);
1733 if (ret)
1734 goto out;
1735
1736 /* initialize default and fetch platform data */
1737 priv->rx_ring_size = BCMENET_DEF_RX_DESC;
1738 priv->tx_ring_size = BCMENET_DEF_TX_DESC;
1739
1740 pd = dev_get_platdata(&pdev->dev);
1741 if (pd) {
1742 memcpy(dev->dev_addr, pd->mac_addr, ETH_ALEN);
1743 priv->has_phy = pd->has_phy;
1744 priv->phy_id = pd->phy_id;
1745 priv->has_phy_interrupt = pd->has_phy_interrupt;
1746 priv->phy_interrupt = pd->phy_interrupt;
1747 priv->use_external_mii = !pd->use_internal_phy;
1748 priv->pause_auto = pd->pause_auto;
1749 priv->pause_rx = pd->pause_rx;
1750 priv->pause_tx = pd->pause_tx;
1751 priv->force_duplex_full = pd->force_duplex_full;
1752 priv->force_speed_100 = pd->force_speed_100;
1753 priv->dma_chan_en_mask = pd->dma_chan_en_mask;
1754 priv->dma_chan_int_mask = pd->dma_chan_int_mask;
1755 priv->dma_chan_width = pd->dma_chan_width;
1756 priv->dma_has_sram = pd->dma_has_sram;
1757 priv->dma_desc_shift = pd->dma_desc_shift;
1758 priv->rx_chan = pd->rx_chan;
1759 priv->tx_chan = pd->tx_chan;
1760 }
1761
1762 if (priv->has_phy && !priv->use_external_mii) {
1763 /* using internal PHY, enable clock */
1764 priv->phy_clk = devm_clk_get(&pdev->dev, "ephy");
1765 if (IS_ERR(priv->phy_clk)) {
1766 ret = PTR_ERR(priv->phy_clk);
1767 priv->phy_clk = NULL;
1768 goto out_disable_clk_mac;
1769 }
1770 ret = clk_prepare_enable(priv->phy_clk);
1771 if (ret)
1772 goto out_disable_clk_mac;
1773 }
1774
1775 /* do minimal hardware init to be able to probe mii bus */
1776 bcm_enet_hw_preinit(priv);
1777
1778 /* MII bus registration */
1779 if (priv->has_phy) {
1780
1781 priv->mii_bus = mdiobus_alloc();
1782 if (!priv->mii_bus) {
1783 ret = -ENOMEM;
1784 goto out_uninit_hw;
1785 }
1786
1787 bus = priv->mii_bus;
1788 bus->name = "bcm63xx_enet MII bus";
1789 bus->parent = &pdev->dev;
1790 bus->priv = priv;
1791 bus->read = bcm_enet_mdio_read_phylib;
1792 bus->write = bcm_enet_mdio_write_phylib;
1793 sprintf(bus->id, "%s-%d", pdev->name, pdev->id);
1794
1795 /* only probe bus where we think the PHY is, because
1796 * the mdio read operation return 0 instead of 0xffff
1797 * if a slave is not present on hw */
1798 bus->phy_mask = ~(1 << priv->phy_id);
1799
1800 ret = mdiobus_register(bus);
1801 if (ret) {
1802 dev_err(&pdev->dev, "unable to register mdio bus\n");
1803 goto out_free_mdio;
1804 }
1805
1806 if (priv->has_phy_interrupt) {
> 1807 phydev = mdiobus_get_phy(bus, priv->phy_id);
1808 if (!phydev) {
1809 dev_err(&dev->dev, "no PHY found\n");
1810 goto out_unregister_mdio;
1811 }
1812
1813 bus->irq[priv->phy_id] = priv->phy_interrupt;
1814 phydev->irq = priv->phy_interrupt;
1815 }
1816 } else {
1817
1818 /* run platform code to initialize PHY device */
1819 if (pd && pd->mii_config &&
1820 pd->mii_config(dev, 1, bcm_enet_mdio_read_mii,
1821 bcm_enet_mdio_write_mii)) {
1822 dev_err(&pdev->dev, "unable to configure mdio bus\n");
1823 goto out_uninit_hw;
1824 }
1825 }
1826
1827 spin_lock_init(&priv->rx_lock);
1828
1829 /* init rx timeout (used for oom) */
1830 timer_setup(&priv->rx_timeout, bcm_enet_refill_rx_timer, 0);
1831
1832 /* init the mib update lock&work */
1833 mutex_init(&priv->mib_update_lock);
1834 INIT_WORK(&priv->mib_update_task, bcm_enet_update_mib_counters_defer);
1835
1836 /* zero mib counters */
1837 for (i = 0; i < ENET_MIB_REG_COUNT; i++)
1838 enet_writel(priv, 0, ENET_MIB_REG(i));
1839
1840 /* register netdevice */
1841 dev->netdev_ops = &bcm_enet_ops;
1842 netif_napi_add(dev, &priv->napi, bcm_enet_poll, 16);
1843
1844 dev->ethtool_ops = &bcm_enet_ethtool_ops;
1845 /* MTU range: 46 - 2028 */
1846 dev->min_mtu = ETH_ZLEN - ETH_HLEN;
1847 dev->max_mtu = BCMENET_MAX_MTU - VLAN_ETH_HLEN;
1848 SET_NETDEV_DEV(dev, &pdev->dev);
1849
1850 ret = register_netdev(dev);
1851 if (ret)
1852 goto out_unregister_mdio;
1853
1854 netif_carrier_off(dev);
1855 platform_set_drvdata(pdev, dev);
1856 priv->pdev = pdev;
1857 priv->net_dev = dev;
1858
1859 return 0;
1860
1861 out_unregister_mdio:
1862 if (priv->mii_bus)
1863 mdiobus_unregister(priv->mii_bus);
1864
1865 out_free_mdio:
1866 if (priv->mii_bus)
1867 mdiobus_free(priv->mii_bus);
1868
1869 out_uninit_hw:
1870 /* turn off mdc clock */
1871 enet_writel(priv, 0, ENET_MIISC_REG);
1872 clk_disable_unprepare(priv->phy_clk);
1873
1874 out_disable_clk_mac:
1875 clk_disable_unprepare(priv->mac_clk);
1876 out:
1877 free_netdev(dev);
1878 return ret;
1879 }
1880
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 14342 bytes --]
next prev parent reply other threads:[~2021-03-10 4:55 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-24 16:11 [PATCH v3] bcm63xx_enet: fix internal phy IRQ assignment Daniel González Cabanelas
2021-02-24 17:08 ` Florian Fainelli
2021-02-25 22:14 ` Andrew Lunn
2021-03-10 4:55 ` kernel test robot [this message]
2021-03-10 4:55 ` kernel test robot
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=202103101234.B2OkiWWU-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild-all@lists.01.org \
/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.