From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1166742AbdDXI22 (ORCPT ); Mon, 24 Apr 2017 04:28:28 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:42182 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1166665AbdDXI1p (ORCPT ); Mon, 24 Apr 2017 04:27:45 -0400 MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Date: Mon, 24 Apr 2017 16:27:44 +0800 From: weili@codeaurora.org To: Greg Kroah-Hartman Cc: linux-kernel@vger.kernel.org, vatsa@codeaurora.org Subject: Re: [PATCH] driver-core: remove lock for platform devices during probe In-Reply-To: <20170424073232.GA19970@kroah.com> References: <1493012536-9240-1-git-send-email-weili@codeaurora.org> <20170424073232.GA19970@kroah.com> Message-ID: User-Agent: Roundcube Webmail/1.2.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Greg, We are optimizing boot time for Linux kernel and try to make some platform drivers use asynchronous probe(by changing probe type of driver to PROBE_PREFER_ASYNCHRONOUS) to reduce boot time. However we found the platform drivers did not probe in parallel because they will lock the same parent device(platform bus for platform drivers) during probe. So we add this patch to remove lock of parent for platform device. This will help to make platform driver probe in parallel and reduce boot time. Best Regards Wei On 2017-04-24 15:32, Greg Kroah-Hartman wrote: > On Mon, Apr 24, 2017 at 01:42:16PM +0800, Wei Li wrote: >> During driver probe procedure, lock on the parent of >> platform devices could be removed to make probe in >> parallel. >> >> Signed-off-by: Wei Li > > Why? Why does this matter? > >> --- >> drivers/base/dd.c | 6 ++++-- >> 1 file changed, 4 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/base/dd.c b/drivers/base/dd.c >> index a1fbf55..e238fbc 100644 >> --- a/drivers/base/dd.c >> +++ b/drivers/base/dd.c >> @@ -25,6 +25,7 @@ >> #include >> #include >> #include >> +#include >> >> #include "base.h" >> #include "power/power.h" >> @@ -749,13 +750,14 @@ static int __driver_attach(struct device *dev, >> void *data) >> return ret; >> } /* ret > 0 means positive match */ >> >> - if (dev->parent) /* Needed for USB */ >> + if (dev->parent && >> + (dev->bus != &platform_bus_type)) /* Needed for USB */ > > The platform_bus_type check is not needed by USB, right? > > thanks, > > greg k-h