From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 20323C2BBFD for ; Sat, 11 Apr 2020 23:09:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E375A215A4 for ; Sat, 11 Apr 2020 23:09:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1586646593; bh=sPiUjXw3NXpP5qEklGpw3Mls0KRF8CnmJR5qzU4XXv4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=h9M+rjOxH3cZ3J0ACKvuZ2TiYKALJDqElD3Pk9YnqZ8aKmuuvHUdIFd9k82hz2DhC 4Of523GiLlo0ttLT8jGaaqSMOI3rPAX19lFl/BQUR9VQgqL13k2rkOuOvsc5kVP43K Rj5iWtnkLzOI0/OgCyxJJ70LiDGAhDeTz83NUrDY= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728895AbgDKXJv (ORCPT ); Sat, 11 Apr 2020 19:09:51 -0400 Received: from mail.kernel.org ([198.145.29.99]:47694 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727384AbgDKXJt (ORCPT ); Sat, 11 Apr 2020 19:09:49 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 7366B2173E; Sat, 11 Apr 2020 23:09:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1586646589; bh=sPiUjXw3NXpP5qEklGpw3Mls0KRF8CnmJR5qzU4XXv4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VCNGI9kyZqi/XUl/tKJQxrtoP8jIsMlh7A68qVpHwqCrenIXDiYjhwX5qQcf4auvj YqbKc3H+z5zZc6nhsqemKsRaYXYQ/496z9ECJRb24z6XFJPTxzCm6NeX6bZQDC9Y9R 6S0hgWTTBZVt9DUI/r9zCnTsX+GJQrPSwllxleGo= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Heiner Kallweit , Florian Fainelli , Andrew Lunn , "David S . Miller" , Sasha Levin , netdev@vger.kernel.org Subject: [PATCH AUTOSEL 5.4 004/108] net: phy: probe PHY drivers synchronously Date: Sat, 11 Apr 2020 19:07:59 -0400 Message-Id: <20200411230943.24951-4-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200411230943.24951-1-sashal@kernel.org> References: <20200411230943.24951-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Heiner Kallweit [ Upstream commit 16983507742cbcaa5592af530872a82e82fb9c51 ] If we have scenarios like mdiobus_register() -> loads PHY driver module(s) -> registers PHY driver(s) -> may schedule async probe phydev = mdiobus_get_phy() or phydev = phy_device_create() -> loads PHY driver module -> registers PHY driver -> may schedule async probe then we expect the PHY driver to be bound to the phydev when triggering the action. This may not be the case in case of asynchronous probing. Therefore ensure that PHY drivers are probed synchronously. Default still is sync probing, except async probing is explicitly requested. I saw some comments that the intention is to promote async probing for more parallelism in boot process and want to be prepared for the case that the default is changed to async probing. Signed-off-by: Heiner Kallweit Reviewed-by: Florian Fainelli Reviewed-by: Andrew Lunn Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/phy/phy_device.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index 0907c3d8d94a2..67d0f68f92316 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -2322,6 +2322,7 @@ int phy_driver_register(struct phy_driver *new_driver, struct module *owner) new_driver->mdiodrv.driver.probe = phy_probe; new_driver->mdiodrv.driver.remove = phy_remove; new_driver->mdiodrv.driver.owner = owner; + new_driver->mdiodrv.driver.probe_type = PROBE_FORCE_SYNCHRONOUS; retval = driver_register(&new_driver->mdiodrv.driver); if (retval) { -- 2.20.1