Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp4690788pxv; Tue, 20 Jul 2021 09:25:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwEK6KDcZvwl6T+ruBdM9RMqKhwk8zkJy/NrUrZScQSOm2XqeaxbGuw+S6tJbJNm8wFYcDb X-Received: by 2002:aa7:c14e:: with SMTP id r14mr41227634edp.251.1626798305798; Tue, 20 Jul 2021 09:25:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626798305; cv=none; d=google.com; s=arc-20160816; b=YV3E5lj/A2mkjAwpsCztHhQk2SKKrFKe/Id0zgX2T5XpVxl9EYlmB6rkTwmtBDchzc uKrTjytucLyTmLStJ8jIzg/FwMjQMxfI5DBdB9bbUcO7LkE5/jBOb8XjLigyQexxpmyH MGU/f0FzR1TmVqL9qVWChvMnG0gjHND58eLI5VFvhPzzf+evRu5/gSd31eI/72IwAP3X yl2cyx7txUzZodhkqS7tgE/kmj9mY5UO989kL6jnKfTBUJbuYNnMhWM5qWPu6mA9JzSz M0rj4T/gNPL/RNblvj9jeTm29czdRgfRKYy7xaaw1eKMFiAO+3SptA9SgPDUGZKKwKSZ ry4w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from; bh=ipTOvxxNjQVyvDe9fGVWAgKOfMtFlUG+TqzvFX1Al7Q=; b=i4QQhkWoriM/QxTM1bAadx6NmawJN/O3ew0/j/XjsWAF+7OrDE1zFjT+sk0zCz3sf4 QsqE3VHBigIMIhIIL1TOa3nbXrMEUbPNlo0GQ05k6WzwHfMX1z9bBrp0dd/SNFu7dct7 Bbk8HNTkDWgQn8QuFCDrFabVRjMfRcqj6q/8m5izUS5qt3XAzqh6zmw4svMnbkGUT9Vh Ahml1YIhIOZo+JuanLu4iXvIMZ2I4S7j5p58loDE3xpCWR5I+dyX4cWp/1+hDvN4rHI/ BQLvxfAmWKk2P/SNFv5MINCRnNTZPr9ADOEeHgYk5hIlvpQdCk2JULrjaBwH/ggCX6q/ Ek9Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id nd28si25227465ejc.701.2021.07.20.09.24.41; Tue, 20 Jul 2021 09:25:05 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232759AbhGTPlg (ORCPT + 99 others); Tue, 20 Jul 2021 11:41:36 -0400 Received: from foss.arm.com ([217.140.110.172]:34212 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234561AbhGTPhh (ORCPT ); Tue, 20 Jul 2021 11:37:37 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 3F09631B; Tue, 20 Jul 2021 09:18:15 -0700 (PDT) Received: from localhost.localdomain (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 023673F694; Tue, 20 Jul 2021 09:18:13 -0700 (PDT) From: Andre Przywara To: Heiner Kallweit , nic_swsd@realtek.com Cc: "David S . Miller" , Jakub Kicinski , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Sayanta Pattanayak Subject: [PATCH net v3] r8169: Avoid duplicate sysfs entry creation error Date: Tue, 20 Jul 2021 17:17:40 +0100 Message-Id: <20210720161740.5214-1-andre.przywara@arm.com> X-Mailer: git-send-email 2.14.1 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Sayanta Pattanayak 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 [Andre: expand commit message, use pci_domain_nr()] Signed-off-by: Andre Przywara --- 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