From 5642346a05d2f763d35deb3f5afe4a7990f04f21 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 16 May 2024 11:10:58 +0200 Subject: [PATCH] 6.1-stable patches added patches: net-bcmgenet-clear-rgmii_link-upon-link-down.patch --- ...enet-clear-rgmii_link-upon-link-down.patch | 80 +++++++++++++++++++ ...ynchronize-ext_rgmii_oob_ctrl-access.patch | 27 ++++--- ...bcmgenet-synchronize-umac_cmd-access.patch | 18 +++-- ...chronize-use-of-bcmgenet_set_rx_mode.patch | 12 ++- queue-6.1/series | 7 +- 5 files changed, 120 insertions(+), 24 deletions(-) create mode 100644 queue-6.1/net-bcmgenet-clear-rgmii_link-upon-link-down.patch diff --git a/queue-6.1/net-bcmgenet-clear-rgmii_link-upon-link-down.patch b/queue-6.1/net-bcmgenet-clear-rgmii_link-upon-link-down.patch new file mode 100644 index 00000000000..a6dc718ac8e --- /dev/null +++ b/queue-6.1/net-bcmgenet-clear-rgmii_link-upon-link-down.patch @@ -0,0 +1,80 @@ +From stable+bounces-45203-greg=kroah.com@vger.kernel.org Wed May 15 19:03:16 2024 +From: Florian Fainelli +Date: Wed, 15 May 2024 10:02:24 -0700 +Subject: net: bcmgenet: Clear RGMII_LINK upon link down +To: linux-kernel@vger.kernel.org +Cc: broonie@kernel.org, Florian Fainelli , Jakub Kicinski , Florian Fainelli , Doug Berger , Broadcom internal kernel review list , "David S. Miller" , Eric Dumazet , Paolo Abeni , netdev@vger.kernel.org (open list:BROADCOM GENET ETHERNET DRIVER), stable@vger.kernel.org, Greg Kroah-Hartman , Sasha Levin +Message-ID: <20240515170227.1679927-2-florian.fainelli@broadcom.com> + +From: Florian Fainelli + +commit 696450c05181559a35d4d5bee55c465b1ac6fe2e upstream + +Clear the RGMII_LINK bit upon detecting link down to be consistent with +setting the bit upon link up. We also move the clearing of the +out-of-band disable to the runtime initialization rather than for each +link up/down transition. + +Signed-off-by: Florian Fainelli +Link: https://lore.kernel.org/r/20221118213754.1383364-1-f.fainelli@gmail.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Florian Fainelli +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/ethernet/broadcom/genet/bcmmii.c | 19 ++++++++++++++----- + 1 file changed, 14 insertions(+), 5 deletions(-) + +--- a/drivers/net/ethernet/broadcom/genet/bcmmii.c ++++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c +@@ -72,7 +72,6 @@ static void bcmgenet_mac_config(struct n + * Receive clock is provided by the PHY. + */ + reg = bcmgenet_ext_readl(priv, EXT_RGMII_OOB_CTRL); +- reg &= ~OOB_DISABLE; + reg |= RGMII_LINK; + bcmgenet_ext_writel(priv, reg, EXT_RGMII_OOB_CTRL); + +@@ -100,10 +99,18 @@ static void bcmgenet_mac_config(struct n + */ + void bcmgenet_mii_setup(struct net_device *dev) + { ++ struct bcmgenet_priv *priv = netdev_priv(dev); + struct phy_device *phydev = dev->phydev; ++ u32 reg; + +- if (phydev->link) ++ if (phydev->link) { + bcmgenet_mac_config(dev); ++ } else { ++ reg = bcmgenet_ext_readl(priv, EXT_RGMII_OOB_CTRL); ++ reg &= ~RGMII_LINK; ++ bcmgenet_ext_writel(priv, reg, EXT_RGMII_OOB_CTRL); ++ } ++ + phy_print_status(phydev); + } + +@@ -264,18 +271,20 @@ int bcmgenet_mii_config(struct net_devic + (priv->phy_interface != PHY_INTERFACE_MODE_MOCA); + + /* This is an external PHY (xMII), so we need to enable the RGMII +- * block for the interface to work ++ * block for the interface to work, unconditionally clear the ++ * Out-of-band disable since we do not need it. + */ ++ reg = bcmgenet_ext_readl(priv, EXT_RGMII_OOB_CTRL); ++ reg &= ~OOB_DISABLE; + if (priv->ext_phy) { +- reg = bcmgenet_ext_readl(priv, EXT_RGMII_OOB_CTRL); + reg &= ~ID_MODE_DIS; + reg |= id_mode_dis; + if (GENET_IS_V1(priv) || GENET_IS_V2(priv) || GENET_IS_V3(priv)) + reg |= RGMII_MODE_EN_V123; + else + reg |= RGMII_MODE_EN; +- bcmgenet_ext_writel(priv, reg, EXT_RGMII_OOB_CTRL); + } ++ bcmgenet_ext_writel(priv, reg, EXT_RGMII_OOB_CTRL); + + if (init) + dev_info(kdev, "configuring instance for %s\n", phy_name); diff --git a/queue-6.1/net-bcmgenet-synchronize-ext_rgmii_oob_ctrl-access.patch b/queue-6.1/net-bcmgenet-synchronize-ext_rgmii_oob_ctrl-access.patch index 1892a505234..c3b706b81ac 100644 --- a/queue-6.1/net-bcmgenet-synchronize-ext_rgmii_oob_ctrl-access.patch +++ b/queue-6.1/net-bcmgenet-synchronize-ext_rgmii_oob_ctrl-access.patch @@ -1,11 +1,14 @@ -From d85cf67a339685beae1d0aee27b7f61da95455be Mon Sep 17 00:00:00 2001 -From: Doug Berger -Date: Thu, 25 Apr 2024 15:27:19 -0700 +From stable+bounces-45204-greg=kroah.com@vger.kernel.org Wed May 15 19:03:18 2024 +From: Florian Fainelli +Date: Wed, 15 May 2024 10:02:25 -0700 Subject: net: bcmgenet: synchronize EXT_RGMII_OOB_CTRL access +To: linux-kernel@vger.kernel.org +Cc: broonie@kernel.org, Doug Berger , stable@vger.kernel.org, Florian Fainelli , "David S . Miller" , Florian Fainelli , Broadcom internal kernel review list , Eric Dumazet , Jakub Kicinski , Paolo Abeni , netdev@vger.kernel.org (open list:BROADCOM GENET ETHERNET DRIVER), Greg Kroah-Hartman , Sasha Levin +Message-ID: <20240515170227.1679927-3-florian.fainelli@broadcom.com> From: Doug Berger -commit d85cf67a339685beae1d0aee27b7f61da95455be upstream. +commit d85cf67a339685beae1d0aee27b7f61da95455be upstream The EXT_RGMII_OOB_CTRL register can be written from different contexts. It is predominantly written from the adjust_link @@ -23,6 +26,7 @@ Cc: stable@vger.kernel.org Signed-off-by: Doug Berger Acked-by: Florian Fainelli Signed-off-by: David S. Miller +Signed-off-by: Florian Fainelli Signed-off-by: Greg Kroah-Hartman --- drivers/net/ethernet/broadcom/genet/bcmmii.c | 4 +++- @@ -39,16 +43,19 @@ Signed-off-by: Greg Kroah-Hartman */ #include -@@ -71,10 +71,12 @@ static void bcmgenet_mac_config(struct n - * transmit -- 25MHz(100Mbps) or 125MHz(1Gbps). - * Receive clock is provided by the PHY. +@@ -274,6 +274,7 @@ int bcmgenet_mii_config(struct net_devic + * block for the interface to work, unconditionally clear the + * Out-of-band disable since we do not need it. */ + mutex_lock(&phydev->lock); reg = bcmgenet_ext_readl(priv, EXT_RGMII_OOB_CTRL); reg &= ~OOB_DISABLE; - reg |= RGMII_LINK; + if (priv->ext_phy) { +@@ -285,6 +286,7 @@ int bcmgenet_mii_config(struct net_devic + reg |= RGMII_MODE_EN; + } bcmgenet_ext_writel(priv, reg, EXT_RGMII_OOB_CTRL); + mutex_unlock(&phydev->lock); - reg = bcmgenet_umac_readl(priv, UMAC_CMD); - reg &= ~((CMD_SPEED_MASK << CMD_SPEED_SHIFT) | + if (init) + dev_info(kdev, "configuring instance for %s\n", phy_name); diff --git a/queue-6.1/net-bcmgenet-synchronize-umac_cmd-access.patch b/queue-6.1/net-bcmgenet-synchronize-umac_cmd-access.patch index f282a0ee83f..792998e638b 100644 --- a/queue-6.1/net-bcmgenet-synchronize-umac_cmd-access.patch +++ b/queue-6.1/net-bcmgenet-synchronize-umac_cmd-access.patch @@ -1,11 +1,14 @@ -From 0d5e2a82232605b337972fb2c7d0cbc46898aca1 Mon Sep 17 00:00:00 2001 -From: Doug Berger -Date: Thu, 25 Apr 2024 15:27:21 -0700 +From stable+bounces-45206-greg=kroah.com@vger.kernel.org Wed May 15 19:03:43 2024 +From: Florian Fainelli +Date: Wed, 15 May 2024 10:02:27 -0700 Subject: net: bcmgenet: synchronize UMAC_CMD access +To: linux-kernel@vger.kernel.org +Cc: broonie@kernel.org, Doug Berger , stable@vger.kernel.org, Florian Fainelli , "David S . Miller" , Florian Fainelli , Broadcom internal kernel review list , Eric Dumazet , Jakub Kicinski , Paolo Abeni , netdev@vger.kernel.org (open list:BROADCOM GENET ETHERNET DRIVER), Greg Kroah-Hartman , Sasha Levin +Message-ID: <20240515170227.1679927-5-florian.fainelli@broadcom.com> From: Doug Berger -commit 0d5e2a82232605b337972fb2c7d0cbc46898aca1 upstream. +commit 0d5e2a82232605b337972fb2c7d0cbc46898aca1 upstream The UMAC_CMD register is written from different execution contexts and has insufficient synchronization protections to @@ -23,6 +26,7 @@ Cc: stable@vger.kernel.org Signed-off-by: Doug Berger Acked-by: Florian Fainelli Signed-off-by: David S. Miller +Signed-off-by: Florian Fainelli Signed-off-by: Greg Kroah-Hartman --- drivers/net/ethernet/broadcom/genet/bcmgenet.c | 12 +++++++++++- @@ -166,15 +170,15 @@ Signed-off-by: Greg Kroah-Hartman } --- a/drivers/net/ethernet/broadcom/genet/bcmmii.c +++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c -@@ -78,6 +78,7 @@ static void bcmgenet_mac_config(struct n +@@ -75,6 +75,7 @@ static void bcmgenet_mac_config(struct n + reg |= RGMII_LINK; bcmgenet_ext_writel(priv, reg, EXT_RGMII_OOB_CTRL); - mutex_unlock(&phydev->lock); + spin_lock_bh(&priv->reg_lock); reg = bcmgenet_umac_readl(priv, UMAC_CMD); reg &= ~((CMD_SPEED_MASK << CMD_SPEED_SHIFT) | CMD_HD_EN | -@@ -90,6 +91,7 @@ static void bcmgenet_mac_config(struct n +@@ -87,6 +88,7 @@ static void bcmgenet_mac_config(struct n reg |= CMD_TX_EN | CMD_RX_EN; } bcmgenet_umac_writel(priv, reg, UMAC_CMD); diff --git a/queue-6.1/net-bcmgenet-synchronize-use-of-bcmgenet_set_rx_mode.patch b/queue-6.1/net-bcmgenet-synchronize-use-of-bcmgenet_set_rx_mode.patch index e8a5f850348..6ed6d33fe1f 100644 --- a/queue-6.1/net-bcmgenet-synchronize-use-of-bcmgenet_set_rx_mode.patch +++ b/queue-6.1/net-bcmgenet-synchronize-use-of-bcmgenet_set_rx_mode.patch @@ -1,11 +1,14 @@ -From 2dbe5f19368caae63b1f59f5bc2af78c7d522b3a Mon Sep 17 00:00:00 2001 -From: Doug Berger -Date: Thu, 25 Apr 2024 15:27:20 -0700 +From stable+bounces-45205-greg=kroah.com@vger.kernel.org Wed May 15 19:03:49 2024 +From: Florian Fainelli +Date: Wed, 15 May 2024 10:02:26 -0700 Subject: net: bcmgenet: synchronize use of bcmgenet_set_rx_mode() +To: linux-kernel@vger.kernel.org +Cc: broonie@kernel.org, Doug Berger , stable@vger.kernel.org, Florian Fainelli , "David S . Miller" , Florian Fainelli , Broadcom internal kernel review list , Eric Dumazet , Jakub Kicinski , Paolo Abeni , netdev@vger.kernel.org (open list:BROADCOM GENET ETHERNET DRIVER), Greg Kroah-Hartman , Sasha Levin +Message-ID: <20240515170227.1679927-4-florian.fainelli@broadcom.com> From: Doug Berger -commit 2dbe5f19368caae63b1f59f5bc2af78c7d522b3a upstream. +commit 2dbe5f19368caae63b1f59f5bc2af78c7d522b3a upstream The ndo_set_rx_mode function is synchronized with the netif_addr_lock spinlock and BHs disabled. Since this @@ -17,6 +20,7 @@ Cc: stable@vger.kernel.org Signed-off-by: Doug Berger Acked-by: Florian Fainelli Signed-off-by: David S. Miller +Signed-off-by: Florian Fainelli Signed-off-by: Greg Kroah-Hartman --- drivers/net/ethernet/broadcom/genet/bcmgenet.c | 4 +++- diff --git a/queue-6.1/series b/queue-6.1/series index 7eb2e52b993..b7d08d3ba57 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -208,9 +208,6 @@ iio-imu-adis16475-fix-sync-mode-setting.patch iio-accel-mxc4005-interrupt-handling-fixes.patch kmsan-compiler_types-declare-__no_sanitize_or_inline.patch tipc-fix-uaf-in-error-path.patch -net-bcmgenet-synchronize-ext_rgmii_oob_ctrl-access.patch -net-bcmgenet-synchronize-use-of-bcmgenet_set_rx_mode.patch -net-bcmgenet-synchronize-umac_cmd-access.patch asoc-tegra-fix-dspk-16-bit-playback.patch asoc-ti-davinci-mcasp-fix-race-condition-during-probe.patch dyndbg-fix-old-bug_on-in-control-parser.patch @@ -241,3 +238,7 @@ btrfs-do-not-wait-for-short-bulk-allocation.patch mm-hugetlb-fix-debug_locks_warn_on-1-when-dissolve_free_hugetlb_folio.patch mm-swapops-update-check-in-is_pfn_swap_entry-for-hwpoison-entries.patch md-fix-kmemleak-of-rdev-serial.patch +net-bcmgenet-clear-rgmii_link-upon-link-down.patch +net-bcmgenet-synchronize-ext_rgmii_oob_ctrl-access.patch +net-bcmgenet-synchronize-use-of-bcmgenet_set_rx_mode.patch +net-bcmgenet-synchronize-umac_cmd-access.patch -- 2.47.3