Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp1428183pxb; Tue, 26 Oct 2021 08:50:51 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxbxrqK8NYw6ZXF2gU53PyNi1GDmaVjpUzWjVerf1DHNq0GL3cOuNPMp7afE1Rl4icFNoof X-Received: by 2002:a63:7c4f:: with SMTP id l15mr2875989pgn.19.1635263371757; Tue, 26 Oct 2021 08:49:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635263371; cv=none; d=google.com; s=arc-20160816; b=S6y89CziUvGFp7rDsHvPv0u2J24X61zLIVx/PMxU3G8+i0VQ+le6xaCgXZ03SJy4JP ycaRJLXsETmU4CvBtu9bc3NJ9ikSv4TX4uJqqUN6etLxTEYAGxGn1RwkwlUO89KKs1ff A+ip8HS15ADHCVb+nWUEqSRRT5G3zWHWDY7ZuS+K91kgPREV+0Ys0O28bUWWEDzdCbAv 48gU3ez3fr45pDuuDT016pYaaSBI8ARJmXa0DwKFMK91RWr23LL67AeGVqhOCgtU8vnL H7elyLsWQbqpPN9XkaKigF6wrOcwPUHleRNfFx7Fk27MmqqssPtXOPWVgYvcTcIu1ZVk sNPg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:date:cc:to:from:subject:message-id :dkim-signature:dkim-signature; bh=I0mJPUZnz8Ih8VZRAIF3bxoM4Pju8m9zD0yQsSiG5Ao=; b=k/UoPR9a5/2ECeHX0l+EKrtwzg3SinLOZNtxVFlMhZLcMoBL+J0rrykM24nPF/ip98 6Vyo0ft2tvysxJUgk1xj9rQqgWnEeSmArWrgtDIN3Kdpb9M2WqXEiees3nGu1JO2MNa1 E5Y0GLwzhVhtBVrgLoM1h1+B+tGz4ms3MYs2u09C6ZXG4sCxywb5GmMIAp7352QWs6jk 0sjxcAf3F129EZGYYNgLb9SElW6lLyP13ys2qESLVTe8Nh9geThO5HUP6PjjP4lU5tkk ACU7ABXwUGeUb/ogdZK+4mKdyNuDCr5H5h9J4vSzdRb4yeKcz+VSBHQMU55OCGwxqYd8 2Hqw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tq-group.com header.s=key1 header.b=HqHBmYdv; dkim=pass header.i=@tq-group.com header.s=key1 header.b=X7l16yyw; 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=pass (p=NONE sp=NONE dis=NONE) header.from=tq-group.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f14si33902903pfc.294.2021.10.26.08.49.17; Tue, 26 Oct 2021 08:49:31 -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; dkim=pass header.i=@tq-group.com header.s=key1 header.b=HqHBmYdv; dkim=pass header.i=@tq-group.com header.s=key1 header.b=X7l16yyw; 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=pass (p=NONE sp=NONE dis=NONE) header.from=tq-group.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235627AbhJZL5E (ORCPT + 99 others); Tue, 26 Oct 2021 07:57:04 -0400 Received: from mx1.tq-group.com ([93.104.207.81]:45713 "EHLO mx1.tq-group.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232392AbhJZL45 (ORCPT ); Tue, 26 Oct 2021 07:56:57 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tq-group.com; i=@tq-group.com; q=dns/txt; s=key1; t=1635249274; x=1666785274; h=message-id:subject:from:to:cc:date:in-reply-to: references:mime-version:content-transfer-encoding; bh=I0mJPUZnz8Ih8VZRAIF3bxoM4Pju8m9zD0yQsSiG5Ao=; b=HqHBmYdvkUQVYXSG3NSGerDv+7udjMiPwRxwgjEE/RbtpTcO6lhn9vLq 7TdFLlfhSSIRYu7xF4eJy1594VSRsAL9xCdFp7PosS2fg09PtfQ2ONiPr O9DJEzbbpRMtFPK8ujWXxgBqnKPK9BB52gH/EAP1AY219lWXkTJbq9BgN kUg6qKpmlOhrhzxITgRy0jzb4VZ/K6Th0F9KCldZU30oFyVnsTaUNtZ3D TgSefrHOksogow5OuEf9pnd9B/zUnrSdmdidkG8uFieBwJmH8c+/eE2bp umki6vlhjQoi2Dlgrn9X1ZxKPgLdhl/17YwYlsWfs5c5/9sYaZrmgMn4p g==; X-IronPort-AV: E=Sophos;i="5.87,182,1631570400"; d="scan'208";a="20226884" Received: from unknown (HELO tq-pgp-pr1.tq-net.de) ([192.168.6.15]) by mx1-pgp.tq-group.com with ESMTP; 26 Oct 2021 13:54:31 +0200 Received: from mx1.tq-group.com ([192.168.6.7]) by tq-pgp-pr1.tq-net.de (PGP Universal service); Tue, 26 Oct 2021 13:54:31 +0200 X-PGP-Universal: processed; by tq-pgp-pr1.tq-net.de on Tue, 26 Oct 2021 13:54:31 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tq-group.com; i=@tq-group.com; q=dns/txt; s=key1; t=1635249271; x=1666785271; h=message-id:subject:from:to:cc:date:in-reply-to: references:mime-version:content-transfer-encoding; bh=I0mJPUZnz8Ih8VZRAIF3bxoM4Pju8m9zD0yQsSiG5Ao=; b=X7l16yywGH+sm+q9IzCCkVUKCcCBhvH99wmMq9j+wjFGjPQuRiNGVjaq JkB/7EL6Ktc2vHXiDLcvAT8avoYiRbEBT/sKDcF80th0pz1JKX177I+WF A52bcYHe7WFBqMzqeyOUazi0FeRBnMZcWwdNMs2TordB4XcPXCT9py8rW mjfx15o76VMsUj1wBiaQlTdvVdB3+RogIxnX7xISh1z+G+n1Ywvpfv0Gv 39cYOe8aMusB7I86hl7HA2PZa3XULkg87TfMxYulC45/clO02v/xS9TiZ +zNO5uUfBQcPxXbPjRUMLmCQK1E52OvHWmOgrgrUQirfW5AnnZx/mEk8s Q==; X-IronPort-AV: E=Sophos;i="5.87,182,1631570400"; d="scan'208";a="20226883" Received: from vtuxmail01.tq-net.de ([10.115.0.20]) by mx1.tq-group.com with ESMTP; 26 Oct 2021 13:54:31 +0200 Received: from schifferm-ubuntu4.tq-net.de (schifferm-ubuntu4.tq-net.de [10.121.48.12]) by vtuxmail01.tq-net.de (Postfix) with ESMTPA id 642C2280065; Tue, 26 Oct 2021 13:54:31 +0200 (CEST) Message-ID: Subject: Re: [PATCH] net: fec: defer probe if PHY on external MDIO bus is not available From: Matthias Schiffer To: Andrew Lunn Cc: Joakim Zhang , "David S. Miller" , Jakub Kicinski , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Date: Tue, 26 Oct 2021 13:54:29 +0200 In-Reply-To: References: <20211014113043.3518-1-matthias.schiffer@ew.tq-group.com> <7a478c1f25d2ea96ff09cee77d648e9c63b97dcf.camel@ew.tq-group.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.28.5-0ubuntu0.18.04.2 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 2021-10-22 at 14:56 +0200, Andrew Lunn wrote: > > Hmm, lots of network drivers? I tried to find an example, but all > > drivers that generate -EPROBE_DEFER for missing PHYs at all don't have > > an internal MDIO bus and thus avoid the circular dependency. > > Try drivers/net/dsa. > > These often have mdio busses which get registered and then > unregistered. There are also IRQ drivers which do the same. > > Andrew All drivers I looked at were careful to register the MDIO bus in the last part of the probe function, so that the only errors that could happen after that (and thus require to unregister the bus device again) would not be -EPROBE_DEFER. The documented infinite loop is easy to reproduce: You just need two separate device instances with misbehaving probe() functions that return -EPROBE_DEFER after registering and unregistering some subdevice. If the missing device that causes the deferral never appears (for example because its driver is not available), the two devices will be probed ad infinitum. I agree with the documentation that a driver should not do this, and thus we need another way to deal with the cyclic dependency between an Ethernet interface and a PHY on its internal MDIO bus. While I think that a generic solution would be theoretically possible by ensuring that the probing loop makes some kind of "progress", I think this would set a precedent for "expensive" operations happening before a -EPROBE_DEFER return, which should be avoided even when no infinite loop results. Matthias