lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 24 Apr 2017 16:27:44 +0800
From:   weili@...eaurora.org
To:     Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Cc:     linux-kernel@...r.kernel.org, vatsa@...eaurora.org
Subject: Re: [PATCH] driver-core: remove lock for platform devices during
 probe

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 <weili@...eaurora.org>
> 
> 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 <linux/async.h>
>>  #include <linux/pm_runtime.h>
>>  #include <linux/pinctrl/devinfo.h>
>> +#include <linux/platform_device.h>
>> 
>>  #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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ