* Re: Resource usages in Linux drivers [not found] ` <5538B938.9060607@cogentembedded.com> @ 2015-04-23 9:29 ` Jia-Ju Bai 2015-04-23 10:08 ` Jia-Ju Bai 0 siblings, 1 reply; 6+ messages in thread From: Jia-Ju Bai @ 2015-04-23 9:29 UTC (permalink / raw) To: Sergei Shtylyov; +Cc: Jeff Kirsher, netdev, David Miller, stephen, Neil Horman Thank you! On 04/23/2015 05:19 PM, Sergei Shtylyov wrote: > Hello. > > On 4/23/2015 9:45 AM, Jia-Ju Bai wrote: > >> Dear Sir, > >> I am very sorry to trouble you. > >> I find that resource management is error-prone when writing Linux >> drivers, and >> many problems may occur, such as resource leaks. >> Meanwhile, I find that many applied patches in the kernel mailing >> list focus >> on releasing allocated resources, especially in error-handling paths. > >> Therefore, I have a question: is it possible to automatically release >> allocated resources in drivers before unloading and in error-handling >> paths? > > Yes, there's managed device API, look for functions starting with > devm_. > There's one limitation though: it can be used only in the driver's > probe() method, so can't be used when e.g. network device is being > opened. I think many APIs, such as kmalloc, can also be managed like garbage collection in Java. Maybe the performance is a matter. > >> I am looking forward to your reply, thanks! > > Such questions should actually be asked on the mailing lists, not > personally. > I am sorry for that, and I will cc to the mailing lists and other maintainers. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Resource usages in Linux drivers 2015-04-23 9:29 ` Resource usages in Linux drivers Jia-Ju Bai @ 2015-04-23 10:08 ` Jia-Ju Bai 2015-04-23 10:37 ` Sergei Shtylyov 0 siblings, 1 reply; 6+ messages in thread From: Jia-Ju Bai @ 2015-04-23 10:08 UTC (permalink / raw) To: Sergei Shtylyov; +Cc: Jeff Kirsher, netdev, David Miller, stephen, Neil Horman On 04/23/2015 05:29 PM, Jia-Ju Bai wrote: > Thank you! > > On 04/23/2015 05:19 PM, Sergei Shtylyov wrote: >> Hello. >> >> On 4/23/2015 9:45 AM, Jia-Ju Bai wrote: >> >>> Dear Sir, >> >>> I am very sorry to trouble you. >> >>> I find that resource management is error-prone when writing Linux >>> drivers, and >>> many problems may occur, such as resource leaks. >>> Meanwhile, I find that many applied patches in the kernel mailing >>> list focus >>> on releasing allocated resources, especially in error-handling paths. >> >>> Therefore, I have a question: is it possible to automatically release >>> allocated resources in drivers before unloading and in >>> error-handling paths? >> >> Yes, there's managed device API, look for functions starting with >> devm_. >> There's one limitation though: it can be used only in the driver's >> probe() method, so can't be used when e.g. network device is being >> opened. > I think many APIs, such as kmalloc, can also be managed like garbage > collection in Java. > Maybe the performance is a matter. > >> >>> I am looking forward to your reply, thanks! >> >> Such questions should actually be asked on the mailing lists, not >> personally. >> > I am sorry for that, and I will cc to the mailing lists and other > maintainers. > > I find that some common APIs are not managed, such as napi_enable and napi_start_queue. Is it possible to provide managed APIs for them? I also find many drivers do not use these managed APIs, especially in ethernet card drivers (like e100, r8169). Is it possible to change them? Best wishes, Jia-Ju Bai ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Resource usages in Linux drivers 2015-04-23 10:08 ` Jia-Ju Bai @ 2015-04-23 10:37 ` Sergei Shtylyov 2015-04-23 23:19 ` Francois Romieu 0 siblings, 1 reply; 6+ messages in thread From: Sergei Shtylyov @ 2015-04-23 10:37 UTC (permalink / raw) To: Jia-Ju Bai; +Cc: Jeff Kirsher, netdev, David Miller, stephen, Neil Horman On 4/23/2015 1:08 PM, Jia-Ju Bai wrote: >>>> I am very sorry to trouble you. >>>> I find that resource management is error-prone when writing Linux drivers, >>>> and >>>> many problems may occur, such as resource leaks. >>>> Meanwhile, I find that many applied patches in the kernel mailing list focus >>>> on releasing allocated resources, especially in error-handling paths. >>>> Therefore, I have a question: is it possible to automatically release >>>> allocated resources in drivers before unloading and in error-handling paths? >>> Yes, there's managed device API, look for functions starting with devm_. >>> There's one limitation though: it can be used only in the driver's probe() >>> method, so can't be used when e.g. network device is being opened. >> I think many APIs, such as kmalloc, can also be managed like garbage >> collection in Java. >> Maybe the performance is a matter. >>>> I am looking forward to your reply, thanks! >>> Such questions should actually be asked on the mailing lists, not >>> personally. >> I am sorry for that, and I will cc to the mailing lists and other maintainers. > I find that some common APIs are not managed, such as napi_enable and > napi_start_queue. Is it possible to provide managed APIs for them? No, they're only called from ndo_open() method IIRC. The device managed APIs can only be called at the device probing time. > I also find many drivers do not use these managed APIs, especially in ethernet > card drivers (like e100, r8169). Is it possible to change them? Patches welcome. :-) > Best wishes, > Jia-Ju Bai WBR, Sergei ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Resource usages in Linux drivers 2015-04-23 10:37 ` Sergei Shtylyov @ 2015-04-23 23:19 ` Francois Romieu 2015-04-24 0:40 ` Florian Fainelli 0 siblings, 1 reply; 6+ messages in thread From: Francois Romieu @ 2015-04-23 23:19 UTC (permalink / raw) To: Sergei Shtylyov Cc: Jia-Ju Bai, Jeff Kirsher, netdev, David Miller, stephen, Neil Horman Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> : > On 4/23/2015 1:08 PM, Jia-Ju Bai wrote: [...] > >I also find many drivers do not use these managed APIs, especially in ethernet > >card drivers (like e100, r8169). Is it possible to change them? > > Patches welcome. :-) I respectfully disagree. If someone believes basic resouce management to be too hard or error-prone to handle, he should imvho seriously rise the bar and reconsider the way he wants to contribute to the kernel. I may hope he who reads e100.c to think about DMA api, bql or rx ring holes avoidance to quote a few ones. Managed API ? Mildly... -- Ueimor ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Resource usages in Linux drivers 2015-04-23 23:19 ` Francois Romieu @ 2015-04-24 0:40 ` Florian Fainelli 2015-04-24 0:49 ` David Miller 0 siblings, 1 reply; 6+ messages in thread From: Florian Fainelli @ 2015-04-24 0:40 UTC (permalink / raw) To: Francois Romieu, Sergei Shtylyov Cc: Jia-Ju Bai, Jeff Kirsher, netdev, David Miller, stephen, Neil Horman On 23/04/15 16:19, Francois Romieu wrote: > Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> : >> On 4/23/2015 1:08 PM, Jia-Ju Bai wrote: > [...] >>> I also find many drivers do not use these managed APIs, especially in ethernet >>> card drivers (like e100, r8169). Is it possible to change them? >> >> Patches welcome. :-) > > I respectfully disagree. Me too, most of the device managed conversions we have seen were bogus because they were done in a semi-automated way without understanding the peculiarities of the network devices, that is the separation between init/open/close that most other device drivers do not have. A typical example is this: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=6892b41d9701283085b655c6086fb57a5d63fa47 > > If someone believes basic resouce management to be too hard or error-prone > to handle, he should imvho seriously rise the bar and reconsider the way > he wants to contribute to the kernel. Well, for one, we could have a device managed register_netdev() which cleans up resources in case of failures and calls free_netdev() automatically, but is that adding much value? > > I may hope he who reads e100.c to think about DMA api, bql or rx ring > holes avoidance to quote a few ones. Managed API ? Mildly... > -- Florian ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Resource usages in Linux drivers 2015-04-24 0:40 ` Florian Fainelli @ 2015-04-24 0:49 ` David Miller 0 siblings, 0 replies; 6+ messages in thread From: David Miller @ 2015-04-24 0:49 UTC (permalink / raw) To: f.fainelli Cc: romieu, sergei.shtylyov, baijiaju1990, jeffrey.t.kirsher, netdev, stephen, nhorman From: Florian Fainelli <f.fainelli@gmail.com> Date: Thu, 23 Apr 2015 17:40:12 -0700 > Well, for one, we could have a device managed register_netdev() > which cleans up resources in case of failures and calls > free_netdev() automatically, but is that adding much value? I don't think it's worth it at all. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-04-24 0:49 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <5538950F.3040405@163.com>
[not found] ` <5538B938.9060607@cogentembedded.com>
2015-04-23 9:29 ` Resource usages in Linux drivers Jia-Ju Bai
2015-04-23 10:08 ` Jia-Ju Bai
2015-04-23 10:37 ` Sergei Shtylyov
2015-04-23 23:19 ` Francois Romieu
2015-04-24 0:40 ` Florian Fainelli
2015-04-24 0:49 ` David Miller
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).