[meta-ti] [PATCH 1/2] linux/cmem.inc: Support reserving memory for CMEM.

Jacob Stiffler j-stiffler at ti.com
Tue May 19 11:10:36 PDT 2015



On 5/19/2015 2:06 PM, Denys Dmytriyenko wrote:
> On Tue, May 19, 2015 at 02:02:52PM -0400, Jacob Stiffler wrote:
>>
>> On 5/19/2015 1:58 PM, Denys Dmytriyenko wrote:
>>> On Tue, May 19, 2015 at 01:52:43PM -0400, Jacob Stiffler wrote:
>>>> On 5/19/2015 1:47 PM, Denys Dmytriyenko wrote:
>>>>> On Tue, May 19, 2015 at 01:39:58PM -0400, Jacob Stiffler wrote:
>>>>>> On 5/19/2015 1:32 PM, Denys Dmytriyenko wrote:
>>>>>>> On Tue, May 19, 2015 at 01:26:05PM -0400, Jacob Stiffler wrote:
>>>>>>>> On 5/19/2015 1:25 PM, Denys Dmytriyenko wrote:
>>>>>>>>> On Tue, May 19, 2015 at 01:23:06PM -0400, Jacob Stiffler wrote:
>>>>>>>>>> On 5/18/2015 3:13 PM, Denys Dmytriyenko wrote:
>>>>>>>>>>> On Mon, May 18, 2015 at 03:03:18PM -0400, Jacob Stiffler wrote:
>>>>>>>>>>>> On 5/18/2015 2:11 PM, Denys Dmytriyenko wrote:
>>>>>>>>>>>>> On Mon, May 18, 2015 at 08:20:58AM -0400, Jacob Stiffler wrote:
>>>>>>>>>>>>>> To reserve contiguous memory for CMEM:
>>>>>>>>>>>>>> * include the "recipes-kernel/linux/cmem.inc"
>>>>>>>>>>>>>> * Set CMEM_BASE and CMEM_SIZE to the physical memory address and size,
>>>>>>>>>>>>>>    respectively, to reserve for CMEM.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Currently limited to reserving a single memory region used to create
>>>>>>>>>>>>>> a single buffer pool of a single buffer.
>>>>>>>>>>>>> Looks good. 2 comments below.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Signed-off-by: Jacob Stiffler <j-stiffler at ti.com>
>>>>>>>>>>>>>> ---
>>>>>>>>>>>>>>   recipes-kernel/linux/cmem.inc        |   22 ++++++++++++++++++++++
>>>>>>>>>>>>>>   recipes-kernel/linux/linux/cmem.dtsi |   24 ++++++++++++++++++++++++
>>>>>>>>>>>>>>   2 files changed, 46 insertions(+)
>>>>>>>>>>>>>>   create mode 100644 recipes-kernel/linux/cmem.inc
>>>>>>>>>>>>>>   create mode 100644 recipes-kernel/linux/linux/cmem.dtsi
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> diff --git a/recipes-kernel/linux/cmem.inc b/recipes-kernel/linux/cmem.inc
>>>>>>>>>>>>>> new file mode 100644
>>>>>>>>>>>>>> index 0000000..207bdc6
>>>>>>>>>>>>>> --- /dev/null
>>>>>>>>>>>>>> +++ b/recipes-kernel/linux/cmem.inc
>>>>>>>>>>>>>> @@ -0,0 +1,22 @@
>>>>>>>>>>>>>> +FILESEXTRAPATHS_append := ":${THISDIR}/linux"
>>>>>>>>>>>>> Move the file into standard "files" directory and drop above line.
>>>>>>>>>>>>>
>>>>>>>>>>>> Ok.
>>>>>>>>>>>>
>>>>>>>>>>>>>> +SRC_URI += "file://cmem.dtsi"
>>>>>>>>>>>>>> +
>>>>>>>>>>>>>> +CMEM_BASE ?= ""
>>>>>>>>>>>>>> +CMEM_SIZE ?= ""
>>>>>>>>>>>>>> +
>>>>>>>>>>>>>> +do_compileconfigs_prepend() {
>>>>>>>>>>>>> Should this be do_configure_append() instead? It would probably be safer, as
>>>>>>>>>>>>> do_compileconfigs() is specific to multi-kernel.inc and some kernel recipes
>>>>>>>>>>>>> may not include it...
>>>>>>>>>>>>>
>>>>>>>>>>>> I had noticed that do_configure() gets invoked multiple times.
>>>>>>>>>>>>
>>>>>>>>>>>> I'll try it as a do_configure_append() and make sure it will work.
>>>>>>>>>>> Ah, you are right. Then you'd need to call this function uniquely like
>>>>>>>>>>> do_setup_cmem() and then addtask it after do_patch before do_configure. It
>>>>>>>>>>> looks like it should be safe to do it even before do_configure. It would be
>>>>>>>>>>> nice to do it after do_configure, but it needs to be before do_compile and
>>>>>>>>>>> also do_compileconfigs, while the latter one is only defined by multi-kernel
>>>>>>>>>>>
>>>>>>>>>> This should be called before do_create_srcipk(). But I suppose it
>>>>>>>>>> should not be assumed that do_create_srcipk() will be run for a
>>>>>>>>>> general kernel recipe.
>>>>>>>>>>
>>>>>>>>>> Should do_setup_cmem() be a postfunc of do_configure()? For example:
>>>>>>>>>>
>>>>>>>>>> do_configure[postfuncs] += "do_setup_cmem"
>>>>>>>>> Will it be called multiple times after each do_configure?
>>>>>>>>>
>>>>>>>> Sorry, I had meant do_patch().
>>>>>>> BTW, are you sure you want it before create_srcipk? It won't package the
>>>>>>> changes then...
>>>>>>>
>>>>>> I thought it would have to be done before create_srcipk, since
>>>>>> create_srcipk pulls the ${S} directory into the sourceipk. If this
>>>>>> is done after create_srcipk, then there will not be any way for
>>>>>> these changes to be packaged, correct?
>>>>> Oops, you are correct. I was thinking backwards...
>>>>> So, do_create_srcipk is also being re-called in do_compile_prepend, so it
>>>>> would pick up those changes.
>>>>>
>>>> But that is only for the case with the meta-arago bbappend, through
>>>> copy-defconfig.inc.
>>> And srcipk is specific to meta-arago as well...
>>>
>>>
>>>> Any reason it would be better to make this change after do_configure()?
>>> Nope, nothing specifically depending on do_configure here, AFAICS.
>>>
>> Then it seems that having as a do_patch() postfunc would be safest.
> Or addtask between do_patch and do_configure should be fine also.
>
Then how can you be sure create_srcipk() will not run before before 
setup_cmem()?

>>>>>>>>>>>>>> +    if [ ! -z "${CMEM_BASE}" ]
>>>>>>>>>>>>>> +    then
>>>>>>>>>>>>>> +        cp ${WORKDIR}/cmem.dtsi ${S}/arch/arm/boot/dts/${MACHINE}-cmem.dtsi
>>>>>>>>>>>>>> +
>>>>>>>>>>>>>> +        sed -i -e "s|__CMEM_BASE__|${CMEM_BASE}|g" \
>>>>>>>>>>>>>> +               -e "s|__CMEM_SIZE__|${CMEM_SIZE}|g" \
>>>>>>>>>>>>>> +               ${S}/arch/arm/boot/dts/${MACHINE}-cmem.dtsi
>>>>>>>>>>>>>> +
>>>>>>>>>>>>>> +        for dts in ${KERNEL_DEVICETREE}
>>>>>>>>>>>>>> +        do
>>>>>>>>>>>>>> +            echo "#include \"${MACHINE}-cmem.dtsi\"" >> ${S}/arch/arm/boot/dts/${dts%.dtb}.dts
>>> BTW, is that bashism at the end of the line ^^^^^^^^^^^
>>>
>> The "${dts%.dtb}"? Yes. I am doing this to remove the .dtb extension
>> and then append the .dts extension, since KERNEL_DEVICE tree
>> contains the dtb extended filenames.
>>
>> Is this an issue?
> Yes, I understand what's it's doing, but using bashisms is not safe - we've
> been trying to eliminate bashisms in upstream and our layers for some time.
> Shouldn't be adding more... :)
>
Would you suggest an dts=`echo $dtb | sed ...` form of command to change 
the extension?

>>>>>>>>>>>>>> +        done
>>>>>>>>>>>>>> +    fi
>>>>>>>>>>>>>> +}
>>>>>>>>>>>>>> diff --git a/recipes-kernel/linux/linux/cmem.dtsi b/recipes-kernel/linux/linux/cmem.dtsi
>>>>>>>>>>>>>> new file mode 100644
>>>>>>>>>>>>>> index 0000000..6b1da99
>>>>>>>>>>>>>> --- /dev/null
>>>>>>>>>>>>>> +++ b/recipes-kernel/linux/linux/cmem.dtsi
>>>>>>>>>>>>>> @@ -0,0 +1,24 @@
>>>>>>>>>>>>>> +/ {
>>>>>>>>>>>>>> +        reserved-memory {
>>>>>>>>>>>>>> +                cmem_block_mem_0: cmem_block_mem at __CMEM_BASE__ {
>>>>>>>>>>>>>> +                        reg = <0x__CMEM_BASE__ 0x__CMEM_SIZE__>;
>>>>>>>>>>>>>> +                        no-map;
>>>>>>>>>>>>>> +                        status = "okay";
>>>>>>>>>>>>>> +                };
>>>>>>>>>>>>>> +        };
>>>>>>>>>>>>>> +
>>>>>>>>>>>>>> +        cmem {
>>>>>>>>>>>>>> +                compatible = "ti,cmem";
>>>>>>>>>>>>>> +                #address-cells = <1>;
>>>>>>>>>>>>>> +                #size-cells = <0>;
>>>>>>>>>>>>>> +
>>>>>>>>>>>>>> +                status = "okay";
>>>>>>>>>>>>>> +
>>>>>>>>>>>>>> +                cmem_block_0: cmem_block at 0 {
>>>>>>>>>>>>>> +                        reg = <0>;
>>>>>>>>>>>>>> +                        memory-region = <&cmem_block_mem_0>;
>>>>>>>>>>>>>> +                        cmem-buf-pools = <1 0x__CMEM_SIZE__>;
>>>>>>>>>>>>>> +                };
>>>>>>>>>>>>>> +        };
>>>>>>>>>>>>>> +
>>>>>>>>>>>>>> +};
>>>>>>>>>>>>>> -- 
>>>>>>>>>>>>>> 1.7.9.5
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> -- 
>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>> meta-ti mailing list
>>>>>>>>>>>>>> meta-ti at yoctoproject.org
>>>>>>>>>>>>>> https://lists.yoctoproject.org/listinfo/meta-ti



More information about the meta-ti mailing list