linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net v3] r8169: Avoid duplicate sysfs entry creation error
@ 2021-07-20 16:17 Andre Przywara
  2021-07-20 19:17 ` Heiner Kallweit
  2021-07-21 15:00 ` patchwork-bot+netdevbpf
  0 siblings, 2 replies; 3+ messages in thread
From: Andre Przywara @ 2021-07-20 16:17 UTC (permalink / raw)
  To: Heiner Kallweit, nic_swsd
  Cc: David S . Miller, Jakub Kicinski, netdev, linux-kernel,
	Sayanta Pattanayak

From: Sayanta Pattanayak <sayanta.pattanayak@arm.com>

When registering the MDIO bus for a r8169 device, we use the PCI
bus/device specifier as a (seemingly) unique device identifier.
However the very same BDF number can be used on another PCI segment,
which makes the driver fail probing:

[ 27.544136] r8169 0002:07:00.0: enabling device (0000 -> 0003)
[ 27.559734] sysfs: cannot create duplicate filename '/class/mdio_bus/r8169-700'
....
[ 27.684858] libphy: mii_bus r8169-700 failed to register
[ 27.695602] r8169: probe of 0002:07:00.0 failed with error -22

Add the segment number to the device name to make it more unique.

This fixes operation on ARM N1SDP boards, with two boards connected
together to form an SMP system, and all on-board devices showing up
twice, just on different PCI segments. A similar issue would occur on
large systems with many PCI slots and multiple RTL8169 NICs.

Fixes: f1e911d5d0dfd ("r8169: add basic phylib support")
Signed-off-by: Sayanta Pattanayak <sayanta.pattanayak@arm.com>
[Andre: expand commit message, use pci_domain_nr()]
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
---
Compile-tested on ARM, arm64, ppc64, sparc64, mips64, hppa, x86-64,
i386. Tested on an AMD system with an on-board RTL8111 chip.

Changes v2 ... v3:
- Resent with Fixes tag and proper net: annotation

Changes v1 ... v2:
- use pci_domain_nr() wrapper to fix compilation on various arches

 drivers/net/ethernet/realtek/r8169_main.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index f744557c33a3..c7af5bc3b8af 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -5084,7 +5084,8 @@ static int r8169_mdio_register(struct rtl8169_private *tp)
 	new_bus->priv = tp;
 	new_bus->parent = &pdev->dev;
 	new_bus->irq[0] = PHY_MAC_INTERRUPT;
-	snprintf(new_bus->id, MII_BUS_ID_SIZE, "r8169-%x", pci_dev_id(pdev));
+	snprintf(new_bus->id, MII_BUS_ID_SIZE, "r8169-%x-%x",
+		 pci_domain_nr(pdev->bus), pci_dev_id(pdev));
 
 	new_bus->read = r8169_mdio_read_reg;
 	new_bus->write = r8169_mdio_write_reg;
-- 
2.17.6


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH net v3] r8169: Avoid duplicate sysfs entry creation error
  2021-07-20 16:17 [PATCH net v3] r8169: Avoid duplicate sysfs entry creation error Andre Przywara
@ 2021-07-20 19:17 ` Heiner Kallweit
  2021-07-21 15:00 ` patchwork-bot+netdevbpf
  1 sibling, 0 replies; 3+ messages in thread
From: Heiner Kallweit @ 2021-07-20 19:17 UTC (permalink / raw)
  To: Andre Przywara, nic_swsd
  Cc: David S . Miller, Jakub Kicinski, netdev, linux-kernel,
	Sayanta Pattanayak

On 20.07.2021 18:17, Andre Przywara wrote:
> From: Sayanta Pattanayak <sayanta.pattanayak@arm.com>
> 
> When registering the MDIO bus for a r8169 device, we use the PCI
> bus/device specifier as a (seemingly) unique device identifier.
> However the very same BDF number can be used on another PCI segment,
> which makes the driver fail probing:
> 
> [ 27.544136] r8169 0002:07:00.0: enabling device (0000 -> 0003)
> [ 27.559734] sysfs: cannot create duplicate filename '/class/mdio_bus/r8169-700'
> ....
> [ 27.684858] libphy: mii_bus r8169-700 failed to register
> [ 27.695602] r8169: probe of 0002:07:00.0 failed with error -22
> 
> Add the segment number to the device name to make it more unique.
> 
> This fixes operation on ARM N1SDP boards, with two boards connected
> together to form an SMP system, and all on-board devices showing up
> twice, just on different PCI segments. A similar issue would occur on
> large systems with many PCI slots and multiple RTL8169 NICs.
> 
> Fixes: f1e911d5d0dfd ("r8169: add basic phylib support")
> Signed-off-by: Sayanta Pattanayak <sayanta.pattanayak@arm.com>
> [Andre: expand commit message, use pci_domain_nr()]
> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> ---
> Compile-tested on ARM, arm64, ppc64, sparc64, mips64, hppa, x86-64,
> i386. Tested on an AMD system with an on-board RTL8111 chip.
> 
> Changes v2 ... v3:
> - Resent with Fixes tag and proper net: annotation
> 
> Changes v1 ... v2:
> - use pci_domain_nr() wrapper to fix compilation on various arches
> 
>  drivers/net/ethernet/realtek/r8169_main.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
> index f744557c33a3..c7af5bc3b8af 100644
> --- a/drivers/net/ethernet/realtek/r8169_main.c
> +++ b/drivers/net/ethernet/realtek/r8169_main.c
> @@ -5084,7 +5084,8 @@ static int r8169_mdio_register(struct rtl8169_private *tp)
>  	new_bus->priv = tp;
>  	new_bus->parent = &pdev->dev;
>  	new_bus->irq[0] = PHY_MAC_INTERRUPT;
> -	snprintf(new_bus->id, MII_BUS_ID_SIZE, "r8169-%x", pci_dev_id(pdev));
> +	snprintf(new_bus->id, MII_BUS_ID_SIZE, "r8169-%x-%x",
> +		 pci_domain_nr(pdev->bus), pci_dev_id(pdev));
>  
>  	new_bus->read = r8169_mdio_read_reg;
>  	new_bus->write = r8169_mdio_write_reg;
> 

Acked-by: Heiner Kallweit <hkallweit1@gmail.com>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH net v3] r8169: Avoid duplicate sysfs entry creation error
  2021-07-20 16:17 [PATCH net v3] r8169: Avoid duplicate sysfs entry creation error Andre Przywara
  2021-07-20 19:17 ` Heiner Kallweit
@ 2021-07-21 15:00 ` patchwork-bot+netdevbpf
  1 sibling, 0 replies; 3+ messages in thread
From: patchwork-bot+netdevbpf @ 2021-07-21 15:00 UTC (permalink / raw)
  To: Andre Przywara
  Cc: hkallweit1, nic_swsd, davem, kuba, netdev, linux-kernel,
	sayanta.pattanayak

Hello:

This patch was applied to netdev/net.git (refs/heads/master):

On Tue, 20 Jul 2021 17:17:40 +0100 you wrote:
> From: Sayanta Pattanayak <sayanta.pattanayak@arm.com>
> 
> When registering the MDIO bus for a r8169 device, we use the PCI
> bus/device specifier as a (seemingly) unique device identifier.
> However the very same BDF number can be used on another PCI segment,
> which makes the driver fail probing:
> 
> [...]

Here is the summary with links:
  - [net,v3] r8169: Avoid duplicate sysfs entry creation error
    https://git.kernel.org/netdev/net/c/e9a72f874d5b

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-07-21 15:03 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-20 16:17 [PATCH net v3] r8169: Avoid duplicate sysfs entry creation error Andre Przywara
2021-07-20 19:17 ` Heiner Kallweit
2021-07-21 15:00 ` patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).