Re: [PATCH] of: introduce event tracepoints for dynamic device_node lifecyle
From: "Oliver O'Halloran" <oohall@gmail.com>
Date: 2017-04-19 02:30:55
Also in:
linux-devicetree, lkml
On Wed, Apr 19, 2017 at 2:46 AM, Rob Herring [off-list ref] wrote:
On Mon, Apr 17, 2017 at 7:32 PM, Tyrel Datwyler [off-list ref] wrote:quoted
This patch introduces event tracepoints for tracking a device_nodes reference cycle as well as reconfig notifications generated in response to node/property manipulations. With the recent upstreaming of the refcount API several device_node underflows and leaks have come to my attention in the pseries (DLPAR) dynamic logical partitioning code (ie. POWER speak for hotplugging virtual and physcial resources at runtime such as cpus or IOAs). These tracepoints provide a easy and quick mechanism for validating the reference counting of device_nodes during their lifetime.Not really relevant for this patch, but since you are looking at pseries and refcounting, the refcounting largely exists for pseries. It's also hard to get right as this type of fix is fairly common. It's now used for overlays, but we really probably only need to refcount the overlays or changesets as a whole, not at a node level. If you have any thoughts on how a different model of refcounting could work for pseries, I'd like to discuss it.
One idea I've been kicking around is differentiating short and long term references to a node. I figure most leaks are due to a missing of_node_put() within a stack frame so it might be possible to use the ftrace infrastructure to detect and emit warnings if a short term reference is leaked. Long term references are slightly harder to deal with, but they're less common so we can add more detailed reference tracking there (devm_of_get_node?). Oliver