Wolfram,

Great proposal!  I'm glad to see this, as I think it addresses an important
area of work and enablement in the kernel.

I wish you had used the template, though. :-)

I've put the proposal on the wiki at:
http://elinux.org/Improve_devm_*_and_get_rid_of_boilerplate_code
 -- Tim


On Tuesday, October 01, 2013 5:46 AM, 
celinux-dev-boun...@lists.celinuxforum.org 
[celinux-dev-boun...@lists.celinuxforum.org] On Behalf Of Wolfram Sang 
[w...@the-dreams.de] wrote:
>
>Summary
>=======
>
>Clean up, consolidate and improve the managed devices of the Linux kernel
>(devm_* functions) and make their usage more consistent. That also enables to
>remove boilerplate code and strings in drivers.
>
>
>Proposer
>========
>
>Wolfram Sang <w...@the-dreams.de>
>
>
>Description
>===========
>
>Managed devices have a great potential to make writing device drivers easier
>and less error prone. The basic mechanisms are there, yet using these
>mechanisms has gone a bit wild and there is no maintainer to keep an eye on it.
>This project aims to improve the situation by:
>
>* Fix the callers
>
>Fix the kernel tree to clearly represent the best-practices in using devm 
>functions.
>This will usually remove code from the kernel.
>
>* Cleaning up
>
>Remove superfluous or too shim devm-functions to have a well-known basic set of
>functions. This will remove code from the kernel.
>
>* Consolidate
>
>On top of these functions, add convenience functions which combine typical
>procedures into seperate functions. An already existing example is
>devm_ioremap_resource() which does devm_request_mem_region() and
>devm_ioremap{_nocache} with proper error checking and giving proper error
>messages. This will remove code and *lots* of inconsistent error strings from
>the kernel. Also, most devm functions themselves use a similar pattern.
>Refactoring might be worth in that area, too.
>
>* Remove subtle issues
>
>There are some devm functions missing. So for some subsystems, resource
>allocation is additionally done by hand. This can cause subtle bugs, especially
>in exit paths, since manually allocated resources might be not available
>anymore when devm allocated resource would still need them. Adding those
>functions will get things right. Also, the already existing action mechanism
>might be used to do things on removal which are otherwise often forgotten.
>
>
>The huge bonus of such a cleaned up devm interface is that devices drivers will
>be smaller in size, easier to write, and less error-prone since typical
>patterns are outsourced to a trusted mechanism. And maintainers will spend less
>time reviewing because resource allocation is a neverending source of mistakes.
>
>
>Related work
>============
>
>First steps have already been done:
>
>Remove unneded checks with devm_ioremap_resource:
>http://article.gmane.org/gmane.linux.drivers.driver-project.devel/38106
>
>And bugs are found on the way, too:
>
>Fixing wrong devres allocation in the PWM subsystem:
>http://lkml.org/lkml/2013/6/3/589
>
>Fixing up wrong devm-conversions:
>http://thread.gmane.org/gmane.linux.kernel/1495010
>
>Cleaning up copy&paste mistake in the GPIO subsystem:
>http://lkml.org/lkml/2013/6/4/436
>
>Scope
>=====
>
>I think the main ideas can be discussed and implemented in 120 hours effort.
>If the duration is 1 or 2 months depends on how discussions with upstream go.
>
>
>Contractor candidates
>=====================
>
>Given that I already started digging into the topic, have some designs sketched
>and already submitted initial patches, I recommend myself. I also think I have
>enough upstream experience to deal with such a major task.
>
_______________________________________________
Celinux-dev mailing list
Celinux-dev@lists.celinuxforum.org
https://lists.celinuxforum.org/mailman/listinfo/celinux-dev

Reply via email to