Received: by 10.223.185.116 with SMTP id b49csp2203709wrg; Thu, 22 Feb 2018 09:44:10 -0800 (PST) X-Google-Smtp-Source: AH8x226UAEMm5DyDJS02RkdXHW/o4JdYepFV3KdVr9ASJl68Up0sjLfrBoUU5giwK7gZvCUdkhJJ X-Received: by 10.98.73.140 with SMTP id r12mr7639481pfi.229.1519321450668; Thu, 22 Feb 2018 09:44:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519321450; cv=none; d=google.com; s=arc-20160816; b=t7N5sSlTeGDsgUDp5LjGvw4soPMuTNIbY1A55AIM4IHk4Ewci9ofLqavFqqGnUrLcw FM33QfkIQQdYtfLtaVSv3LyPstUw5aW7vLcg0BzYyY3Uxij0ZMSZAG4ZRpS7/UYYPoPD 7mG0Vyi7WyCiZ6tlbcQIHftjccYQxhr84QRJ5EUwytyKOzyR21TNq6py9ODukWJYDkt0 TQZzrtAZ3TFwVPwus2z2PRWhcCDfwmop9/zrqDMx1204eJJw0Umdo/Xxc4ccu/V+4MVq eWzzfUYuHFYMv2uHV1e/EuAgFOQqC8opCtu4R/IJgyd5jeedPL+hxrF1P/dqoRg2f95V 326w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=5eyDzkaxWkZyLpGnC4Anqfy0nvrS6zYLg8JrEJ4yY/U=; b=rMxHZ6d35mB2oc6utSuifYOqLUT0NdfiAQ1diKAaVJe42Cm5JIOREXjlVL0b1YXsl7 7GFo9h3On6xKMjadDaTXTucHJ7lZsfYG4/LTH+GQvOz6XO7lQz59dQ3SNs1jIoUbchBq uoAYs8Zq5r9Y+ULCkOikDCfcpAKXijTY7NXH8BGSeEwyhgSRDIPpTe3ulaiLKipSSAIN fVzMztxE7fD7QS+OZQkIBOxPfPo/2ZzwNe03+hF0cMsEjw6NNYF6vEU3qaeoZcLvnnHI +lpAeRHEKxqApXximSTj3nX7R0uPCLvH3pNz2e/9bmdAEXiMfIhozTDBzrlSGV9QsiH/ wJdg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=hSy89EaG; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k9si237605pgc.628.2018.02.22.09.43.56; Thu, 22 Feb 2018 09:44:10 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=hSy89EaG; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933603AbeBVRnA (ORCPT + 99 others); Thu, 22 Feb 2018 12:43:00 -0500 Received: from lelnx193.ext.ti.com ([198.47.27.77]:55314 "EHLO lelnx193.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933446AbeBVRmz (ORCPT ); Thu, 22 Feb 2018 12:42:55 -0500 Received: from dflxv15.itg.ti.com ([128.247.5.124]) by lelnx193.ext.ti.com (8.15.1/8.15.1) with ESMTP id w1MHgpNt013171; Thu, 22 Feb 2018 11:42:51 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ti.com; s=ti-com-17Q1; t=1519321371; bh=GYPFf+g7mPbL950Wqb278iQmQrAOrou6+DGSUrs1L9I=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=hSy89EaG0mane4GDC8axaJfWv9OxAxt2bwY4TVVwWbgqhZwVOBStp7qEgUBBQF9rw LbLeh6Ku/NnfcADUD/zvnL2Mo9sJ6wuOCb7QO5NLAPCHDk9GS/8B30VvXradyqS3rO MnD9DiW4DmiJI6sFKR/H1LANCdYHuPU68M2H34Ek= Received: from DLEE113.ent.ti.com (dlee113.ent.ti.com [157.170.170.24]) by dflxv15.itg.ti.com (8.14.3/8.13.8) with ESMTP id w1MHgpee013187; Thu, 22 Feb 2018 11:42:51 -0600 Received: from DLEE113.ent.ti.com (157.170.170.24) by DLEE113.ent.ti.com (157.170.170.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1261.35; Thu, 22 Feb 2018 11:42:50 -0600 Received: from dlep33.itg.ti.com (157.170.170.75) by DLEE113.ent.ti.com (157.170.170.24) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1261.35 via Frontend Transport; Thu, 22 Feb 2018 11:42:50 -0600 Received: from jadmar.ti.com (ileax41-snat.itg.ti.com [10.172.224.153]) by dlep33.itg.ti.com (8.14.3/8.13.8) with ESMTP id w1MHgmx9007912; Thu, 22 Feb 2018 11:42:49 -0600 From: Jyri Sarha To: , CC: , , , , Jyri Sarha , "Rafael J . Wysocki" Subject: [PATCH RFC] driver core: Reprobe consumer if it was unbound by dropped device_link Date: Thu, 22 Feb 2018 19:42:46 +0200 Message-ID: <57c1d52a5a8f5985dc1dd53260d7d68795be8ea2.1519321145.git.jsarha@ti.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Put consumer device to deferred probe list if it is unbound due to a dropped link to a supplier. When a device link supplier is unbound (either manually or because one of its own suppliers was unbound), its consumers are unbound as well. Currently if the supplier binds again after this the consumer does not automatically probe again. With this patch it does. If this patch is not acceptable as such, how about adding this behavior behind a new device link flag? The idea to this patch was gotten from this post by Lucas Wunner: https://www.spinics.net/lists/dri-devel/msg166318.html Part of the code and the description is borrowed from him. cc: Lukas Wunner cc: Rafael J. Wysocki cc: Thierry Reding Signed-off-by: Jyri Sarha --- drivers/base/base.h | 1 + drivers/base/core.c | 2 ++ drivers/base/dd.c | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/base/base.h b/drivers/base/base.h index d800de6..39370eb 100644 --- a/drivers/base/base.h +++ b/drivers/base/base.h @@ -114,6 +114,7 @@ extern void device_release_driver_internal(struct device *dev, extern void driver_detach(struct device_driver *drv); extern int driver_probe_device(struct device_driver *drv, struct device *dev); +extern void driver_deferred_probe_add(struct device *dev); extern void driver_deferred_probe_del(struct device *dev); static inline int driver_match_device(struct device_driver *drv, struct device *dev) diff --git a/drivers/base/core.c b/drivers/base/core.c index b2261f9..0964ed5 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -570,6 +570,8 @@ void device_links_unbind_consumers(struct device *dev) device_release_driver_internal(consumer, NULL, consumer->parent); + driver_deferred_probe_add(consumer); + put_device(consumer); goto start; } diff --git a/drivers/base/dd.c b/drivers/base/dd.c index de6fd09..846ae78 100644 --- a/drivers/base/dd.c +++ b/drivers/base/dd.c @@ -140,7 +140,7 @@ static void deferred_probe_work_func(struct work_struct *work) } static DECLARE_WORK(deferred_probe_work, deferred_probe_work_func); -static void driver_deferred_probe_add(struct device *dev) +void driver_deferred_probe_add(struct device *dev) { mutex_lock(&deferred_probe_mutex); if (list_empty(&dev->p->deferred_probe)) { -- Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki