From nobody Wed Apr 29 00:43:45 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B7899C433F5 for ; Thu, 26 May 2022 03:46:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244748AbiEZDqg (ORCPT ); Wed, 25 May 2022 23:46:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52484 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232867AbiEZDqY (ORCPT ); Wed, 25 May 2022 23:46:24 -0400 Received: from mail-yw1-x1149.google.com (mail-yw1-x1149.google.com [IPv6:2607:f8b0:4864:20::1149]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B1960BDA2C for ; Wed, 25 May 2022 20:46:18 -0700 (PDT) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-2fed274f3fbso3359867b3.17 for ; Wed, 25 May 2022 20:46:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=o/QH0joN+MugcyRHull52tGgjdzjVgF+TdLryasZ3OQ=; b=RGPxjbKyMwcIxA2s03U5bdMAKmdBqar/f9ZLCnfb2UZlQH9CZS4tHnNV6daOpRgUNd wFwuE/fyGzgV+7YzA06Dyp8Cv9lGrB/NCoggmDp0xiqq2OsU2CDT70ANtBd/9H6RK8EW n8gpulIOK8U5yciXzMafYX69ntsdkCopahJA1BMxX8qhWZHNu1r2aGN9Ms07JlO6mPa/ KNr9m6gIonyZvJb/NlGauCfUs+xNrcdIIKhYzRdgjZ37xULcphyrKW/3HhP7QMZ3s8ol BDHkO7ZOP/NTzHHG9yPPc2io1Z+f/zgD5h2lLO0VI2kDS9wZg7djwkBwygbLtWO7ZpI1 zmsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=o/QH0joN+MugcyRHull52tGgjdzjVgF+TdLryasZ3OQ=; b=yjVyWmXuKIUl+XXbYySTr55p3SmkMW7TzmfSgi/RWKft863DYBOsR+jl9qDO3Q55Ah 2+2GFgAOrtyO3+nhR5iiPOsJ39ka7l9dpF0hs5ELSnxTnY+0q9lWFrzFypzPfAzxxAQP MNzcOBUAqa9wMqjACTWyhQrQHKAZZaOjza2YNyriqSgfdAuZ8qSG8rqWIDMODkkn9Mx8 ECK6szw6tXJ/9jkwuxvYyQyyHHDo9W98mITr3CvsQknmG1ve0SO84jrZvzEnYSxR26lL ZxQ9tAss05pJvkuHgBoThQd5KpHF15UHqVv4BtkvcU1xVS5z6Zu+xrK4ybk5zLm4/YZq L+fA== X-Gm-Message-State: AOAM5325ISBmewIKvbYhQk6VrqnluTHLAlWBBCtFnifcRPpTcKgnN+F8 3uqsV5iZ93YaDexOVJk+F1340AOEK+hi5so= X-Google-Smtp-Source: ABdhPJyTq9NixuM0Ihvbq7fgWYMs3p9ob+kOt9sgXq4qKiYBdS/V6BnGyENeSt/NfIcvpHnbJuwRLLL+/EBqkHM= X-Received: from saravanak.san.corp.google.com ([2620:15c:2d:3:cbc9:88bf:e847:ab95]) (user=saravanak job=sendgmr) by 2002:a05:6902:102a:b0:64f:4132:9be with SMTP id x10-20020a056902102a00b0064f413209bemr32123591ybt.288.1653536777885; Wed, 25 May 2022 20:46:17 -0700 (PDT) Date: Wed, 25 May 2022 20:46:08 -0700 In-Reply-To: <20220526034609.480766-1-saravanak@google.com> Message-Id: <20220526034609.480766-2-saravanak@google.com> Mime-Version: 1.0 References: <20220526034609.480766-1-saravanak@google.com> X-Mailer: git-send-email 2.36.1.124.g0e6072fb45-goog Subject: [PATCH v1 1/2] driver core: Fix wait_for_device_probe() & deferred_probe_timeout interaction From: Saravana Kannan To: Greg Kroah-Hartman , "Rafael J. Wysocki" , John Stultz , Mark Brown , Rob Herring , Saravana Kannan Cc: kernel-team@android.com, linux-kernel@vger.kernel.org, John Stultz , "David S. Miller" , Alexey Kuznetsov , Hideaki YOSHIFUJI , Jakub Kicinski , "Rafael J . Wysocki" , Geert Uytterhoeven , Yoshihiro Shimoda , Robin Murphy , Andy Shevchenko , Sudeep Holla , Andy Shevchenko , Naresh Kamboju , Basil Eljuse , Ferry Toth , Arnd Bergmann , Anders Roxell , linux-pm@vger.kernel.org, Nathan Chancellor , Sebastian Andrzej Siewior Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Mounting NFS rootfs was timing out when deferred_probe_timeout was non-zero [1]. This was because ip_auto_config() initcall times out waiting for the network interfaces to show up when deferred_probe_timeout was non-zero. While ip_auto_config() calls wait_for_device_probe() to make sure any currently running deferred probe work or asynchronous probe finishes, that wasn't sufficient to account for devices being deferred until deferred_probe_timeout. Commit 35a672363ab3 ("driver core: Ensure wait_for_device_probe() waits until the deferred_probe_timeout fires") tried to fix that by making sure wait_for_device_probe() waits for deferred_probe_timeout to expire before returning. However, if wait_for_device_probe() is called from the kernel_init() context: - Before deferred_probe_initcall() [2], it causes the boot process to hang due to a deadlock. - After deferred_probe_initcall() [3], it blocks kernel_init() from continuing till deferred_probe_timeout expires and beats the point of deferred_probe_timeout that's trying to wait for userspace to load modules. Neither of this is good. So revert the changes to wait_for_device_probe(). [1] - https://lore.kernel.org/lkml/TYAPR01MB45443DF63B9EF29054F7C41FD8C60@T= YAPR01MB4544.jpnprd01.prod.outlook.com/ [2] - https://lore.kernel.org/lkml/YowHNo4sBjr9ijZr@dev-arch.thelio-3990X/ [3] - https://lore.kernel.org/lkml/Yo3WvGnNk3LvLb7R@linutronix.de/ Cc: John Stultz Cc: "David S. Miller" Cc: Alexey Kuznetsov Cc: Hideaki YOSHIFUJI Cc: Jakub Kicinski Cc: Rafael J. Wysocki Cc: Rob Herring Cc: Geert Uytterhoeven Cc: Yoshihiro Shimoda Cc: Robin Murphy Cc: Andy Shevchenko Cc: Sudeep Holla Cc: Andy Shevchenko Cc: Naresh Kamboju Cc: Basil Eljuse Cc: Ferry Toth Cc: Arnd Bergmann Cc: Anders Roxell Cc: linux-pm@vger.kernel.org Fixes: 35a672363ab3 ("driver core: Ensure wait_for_device_probe() waits unt= il the deferred_probe_timeout fires") Reported-by: Nathan Chancellor Reported-by: Sebastian Andrzej Siewior Signed-off-by: Saravana Kannan Acked-by: John Stultz Tested-by: Geert Uytterhoeven --- drivers/base/dd.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/base/dd.c b/drivers/base/dd.c index 2fc8507f59ee..91f63cd33b12 100644 --- a/drivers/base/dd.c +++ b/drivers/base/dd.c @@ -263,7 +263,6 @@ int driver_deferred_probe_timeout; #endif =20 EXPORT_SYMBOL_GPL(driver_deferred_probe_timeout); -static DECLARE_WAIT_QUEUE_HEAD(probe_timeout_waitqueue); =20 static int __init deferred_probe_timeout_setup(char *str) { @@ -318,7 +317,6 @@ static void deferred_probe_timeout_work_func(struct wor= k_struct *work) list_for_each_entry(p, &deferred_probe_pending_list, deferred_probe) dev_info(p->device, "deferred probe pending\n"); mutex_unlock(&deferred_probe_mutex); - wake_up_all(&probe_timeout_waitqueue); } static DECLARE_DELAYED_WORK(deferred_probe_timeout_work, deferred_probe_ti= meout_work_func); =20 @@ -736,9 +734,6 @@ int driver_probe_done(void) */ void wait_for_device_probe(void) { - /* wait for probe timeout */ - wait_event(probe_timeout_waitqueue, !driver_deferred_probe_timeout); - /* wait for the deferred probe workqueue to finish */ flush_work(&deferred_probe_work); =20 --=20 2.36.1.124.g0e6072fb45-goog From nobody Wed Apr 29 00:43:45 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 33C79C433F5 for ; Thu, 26 May 2022 03:46:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343792AbiEZDqu (ORCPT ); Wed, 25 May 2022 23:46:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52536 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S245303AbiEZDqa (ORCPT ); Wed, 25 May 2022 23:46:30 -0400 Received: from mail-pl1-x649.google.com (mail-pl1-x649.google.com [IPv6:2607:f8b0:4864:20::649]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E1124FD38 for ; Wed, 25 May 2022 20:46:21 -0700 (PDT) Received: by mail-pl1-x649.google.com with SMTP id e18-20020a170902ef5200b0016153d857a6so396735plx.5 for ; Wed, 25 May 2022 20:46:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=6MNgMENOyD6oT5LvMsfOpHfBO2ZH4FG1eUHU37bxLow=; b=cwMuN3FusGYuQwW0vzhutxD5D0QU51D/+Sueh2qUlBal2JEFrqoNA7a6wSV/+RZmXv Z6Ww0mhE/LLpZckd0Dyl5fg7aqF5/vy2brnsU40OG1GYBlzhUcpn7G+tqA5smx/FvBBD DAcVlcjxzbKZp/y0A3EWxudBIcUtQY0LQcXeez5jllaQGMZ3nfCoiTaX2ORs2bxqv84L LM6DkaNLYs1+mkAVP2lC+mMN5D/NEia0aTu8T1CFBKirqNuBd4v+757OlLH8GBz+YRtP aZFkXkUJRi3V7LZgBzdnxVONx32kF/VndiaLZJerfB7eZZgparT/PYo89rZonbonn7at QCKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=6MNgMENOyD6oT5LvMsfOpHfBO2ZH4FG1eUHU37bxLow=; b=4GBZljI+TFfJZ517ihHwOg2ijmhxjZnalhHM3onlTcnO/gLOg1u9FX4Jxqw4DunZ8z A99liVlAF15MCKryCC0UcYMNvECsrHKWb9++nZ2NyW0qXjbz0lERZPOLyuVhu17NY11w FWv4UJOJTayyjFQPkNBLH4RVLfty3B4nSKo7FtgTlA5yuxH6rvivqlrt15Q97LjR82Li tgNSSqRYIN+63MkTC7+cg/S+ylYC37L1SecYyKBHibEJAW/6c/Ja9WIdcRckbDd18RAm rq2N0v7kjps6KkIUBzCofxxr9A+DlGLz0lOhwss6zj16rK7nOi7xPEttmXVD8kfrUjo8 HBKQ== X-Gm-Message-State: AOAM531MCWFCraUENZH7UH1fprjDci2u4uNfYZyH0YGy9MjwYg6mjjWX yQUQLmIZlSKiLd+1k3f6xDGS4SS4ros3kDA= X-Google-Smtp-Source: ABdhPJzvyi8HTzIzW8ZO9SiL2k3tZwthIn6V/jOlzo2pc4pIRW/s3uLbEF7iZt/YPGQhY346pubKNrle350ZskE= X-Received: from saravanak.san.corp.google.com ([2620:15c:2d:3:cbc9:88bf:e847:ab95]) (user=saravanak job=sendgmr) by 2002:a17:902:cecd:b0:163:794c:fa9 with SMTP id d13-20020a170902cecd00b00163794c0fa9mr1134158plg.136.1653536781324; Wed, 25 May 2022 20:46:21 -0700 (PDT) Date: Wed, 25 May 2022 20:46:09 -0700 In-Reply-To: <20220526034609.480766-1-saravanak@google.com> Message-Id: <20220526034609.480766-3-saravanak@google.com> Mime-Version: 1.0 References: <20220526034609.480766-1-saravanak@google.com> X-Mailer: git-send-email 2.36.1.124.g0e6072fb45-goog Subject: [PATCH v1 2/2] driver core: Set default deferred_probe_timeout back to 0. From: Saravana Kannan To: Greg Kroah-Hartman , "Rafael J. Wysocki" , John Stultz , Mark Brown , Rob Herring , Saravana Kannan Cc: kernel-team@android.com, linux-kernel@vger.kernel.org, Nathan Chancellor , Sebastian Andrzej Siewior Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Since we had to effectively reverted commit 35a672363ab3 ("driver core: Ensure wait_for_device_probe() waits until the deferred_probe_timeout fires") in an earlier patch, a non-zero deferred_probe_timeout will break NFS rootfs mounting [1] again. So, set the default back to zero until we can fix that. [1] - https://lore.kernel.org/lkml/TYAPR01MB45443DF63B9EF29054F7C41FD8C60@T= YAPR01MB4544.jpnprd01.prod.outlook.com/ Cc: Mark Brown Cc: Rob Herring Reported-by: Nathan Chancellor Reported-by: Sebastian Andrzej Siewior Fixes: 2b28a1a84a0e ("driver core: Extend deferred probe timeout on driver = registration") Signed-off-by: Saravana Kannan Tested-by: Geert Uytterhoeven --- drivers/base/dd.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/base/dd.c b/drivers/base/dd.c index 91f63cd33b12..251b5ba1b84a 100644 --- a/drivers/base/dd.c +++ b/drivers/base/dd.c @@ -256,12 +256,7 @@ static int deferred_devs_show(struct seq_file *s, void= *data) } DEFINE_SHOW_ATTRIBUTE(deferred_devs); =20 -#ifdef CONFIG_MODULES -int driver_deferred_probe_timeout =3D 10; -#else int driver_deferred_probe_timeout; -#endif - EXPORT_SYMBOL_GPL(driver_deferred_probe_timeout); =20 static int __init deferred_probe_timeout_setup(char *str) --=20 2.36.1.124.g0e6072fb45-goog