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:	Wed, 14 May 2014 20:32:50 +0100
From:	Grant Likely <grant.likely@...aro.org>
To:	Alexander Holler <holler@...oftware.de>
Cc:	Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
	"devicetree@...r.kernel.org" <devicetree@...r.kernel.org>,
	Jon Loeliger <jdl@....com>,
	Russell King <linux@....linux.org.uk>,
	Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
	Rob Herring <robh+dt@...nel.org>,
	"linux-arm-kernel@...ts.infradead.org" 
	<linux-arm-kernel@...ts.infradead.org>
Subject: Re: [RFC PATCH 5/9] dt: deps: register drivers based on the
 initialization order based on DT

On Wed, May 14, 2014 at 3:58 PM, Alexander Holler <holler@...oftware.de> wrote:
> Am 14.05.2014 16:13, schrieb Grant Likely:
>
>> On Mon, 12 May 2014 18:47:56 +0200, Alexander Holler
>> <holler@...oftware.de> wrote:
>>>
>>> The init system currently calls unknown functions with almost unknown
>>> functionality in an almost random order.
>>
>>
>> Correct, we've got a module system. Some would say that is a strength!
>> :-) That said, I don't object to optimizing to the optimal order when
>> possible.
>
>
> Modules do work after init happened, that isn't what this feature is about.

Oops, I meant modular. I wasn't talking about modules either. The
driver model is designed to match devices with drivers regardless of
the order that either of them get registered to the system. I think
that is a strong aspect of the drivercore. What it doesn't have is any
way of optimizing the probe order, which is at the heart of your
proposal.

>
>
>>
>>> Fixing this is on a short-term basis is a bit tricky.
>>>
>>> In order to register drivers with a deterministic order, a list of all
>>> available in-kernel drivers is needed. Unfortunately such a list doesn't
>>> exist, just a list of initcalls does exist.
>>>
>>> The trick now is to first call special annotated initcalls (I call those
>>> "well done") for platform drivers, but not actualy starting those drivers
>>> by calling their probe function, but just collectiong their meta datas
>>> (struct platform_driver). After all those informations were collected,
>>> available the drivers will be started according to the previously
>>> determined order.
>>
>>
>> Why does the initcall level matter? Why not just let the initcalls
>> happen, capture the calls that register a driver, and then use that list
>> later?
>
>
> Some initcalls assume that stuff is present when they called probe or
> register and do further action based on the rc code.

What I mean is that manipulating the initcall level isn't the best way
to handle it. We've got enough initcalls and there isn't a need to add
more. Other ways to handle the problem would be to either have a
variant of the platform_driver_register() that triggers your desired
behavour, or add a flag to the struct device_driver that tells the
driver core that it should try to resolve ordering. In both cases the
module_platform_driver() macro can do the magic bit. Other drivers
will have to do it manually.

g.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ