Skip to content
Permalink
Browse files
r8169: Avoid duplicate sysfs entry creation error
When registering the MDIO bus for a r8169 device, we use the PCI B/D/F
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 an ARM N1SDP board, where two boards might be
connected together to form an SMP system, and all on-board devices show
up twice, just on different PCI segments.

Signed-off-by: Sayanta Pattanayak <sayanta.pattanayak@arm.com>
[Andre: expand commit message]
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
  • Loading branch information
SayantaP-arm authored and intel-lab-lkp committed Jun 22, 2021
1 parent a96bfed commit d832a81ab997133a25b71a3066a51708edf39054
Showing 1 changed file with 2 additions and 1 deletion.
@@ -5086,7 +5086,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",
pdev->bus->domain_nr, pci_dev_id(pdev));

new_bus->read = r8169_mdio_read_reg;
new_bus->write = r8169_mdio_write_reg;

0 comments on commit d832a81

Please sign in to comment.