On Tue, Feb 11, 2014 at 09:27:36PM +0100, Tomasz Figa wrote:
On 11.02.2014 21:19, Josh Cartwright wrote:
On Tue, Feb 11, 2014 at 09:04:21PM +0100, Tomasz Figa wrote:
On 11.02.2014 21:02, Benjamin Herrenschmidt wrote:
On Tue, 2014-02-11 at 19:01 +0000, Grant Likely wrote:
except that the former IMHO better suits the definition of memory region, which I see as a single contiguous range of memory and can be simplified to have a single reg entry per region.
My point is rather if multiple reg tuples are found in a reserved memory node, the kernel must respect them and reserve the memory. I'm not arguing about whether or not that makes for a good binding.
agreed.
My point is why, if the binding defines that just a single tuple should be provided.
FWIW, the usecase I had mentioned in reply to Grant in the patch 5/5 thread [1] could make use of this. The shared memory region is split into a main chunk and several "auxiliary" chunk, but collectively these regions all share the same heap state.
Josh
1: http://lkml.kernel.org/r/20140205192502.GO20228@joshc.qualcomm.com
The use case seems fine, but I believe it could be properly represented in device tree using multiple single-reg regions as well, unless the consumer can request a block of memory that crosses boundary of two sub-regions specified by reg entries of single region.
I could probably make a only-one-reg-entry policy work for me, but it makes things a bit more awkward. I'd lose the ability to describe "this set of regions need to be logically handled together" directly in the reserved memory node, and would need to push it up a layer.
reserved-memory { smem: smem { reg = <...>; }; aux1: auxiliary1 { reg = <...>; }; aux2: auxiliary2 { reg = <...>; }; ... };
heap : heap { compatible = "qcom,shared-memory"; memory-region = <&smem &aux1 &aux2>; #smem-cells = <2>; };
actual_consumer1 { compatible = "..."; smem = <&heap IDENTIFIER1 0x1000>; };
actual_consumer2 { compatible = "..."; smem = <&heap IDENTIFIER2 0x1000>; };
Maybe that's better off, I don't know. This would also eliminate my need for a #memory-region-cells property.
Thanks, Josh