[PATCH 2/7] ARM: dts: skeleton: add unit name to memory node
Joachim Eastwood
manabian at gmail.com
Thu Mar 31 09:34:04 PDT 2016
On 31 March 2016 at 17:21, Joachim Eastwood <manabian at gmail.com> wrote:
> On 31 March 2016 at 12:38, Mark Rutland <mark.rutland at arm.com> wrote:
>> On Wed, Mar 30, 2016 at 10:45:06PM +0200, Joachim Eastwood wrote:
>>> On 30 March 2016 at 19:06, Mark Rutland <mark.rutland at arm.com> wrote:
>>> > On Wed, Mar 30, 2016 at 06:15:35PM +0200, Joachim Eastwood wrote:
>>> >> I used the following script to check for the memory node in all built dtb's.
>>> >> make ARCH=arm CONFIG_OF_ALL_DTBS=y dtbs
>>> >> for i in $(ls arch/arm/boot/dts/*.dtb); do
>>> >> m=$(scripts/dtc/dtc -I dtb -O dts $i | grep -m1 'memory.*{')
>>> >> if [ -z "$m" ]; then
>>> >> echo "Missing memory node in $i"
>>> >> fi
>>> >> done
>>> >>
>>> >> So it should be pretty safe to just remove the memory node entry in
>>> >> the skeleton files. Unless I have missed something with the script
>>> >> above.
>>> >
>>> > The above might match reserved-memory nodes; it might be better to check
>>> > for 'device_type\s*=\s*"memory"'.
>>>
>>> I did check the output of the grep and it looks good. But there are
>>> indeed DTs that are missing the 'device_type = "memory"' parameter.
>>> Actually; _a lot_ or 438 of 741 to be exact. ugh...
>>>
>>> I guess all those should be fixed up before we can remove the memory
>>> node from skeleton. :/
>>
>> Ouch, yes. :(
>>
>> That said, the cahnges don't need to be an atomic operation. We could
>> start adding device_type = "memory" to dts immediately (in as whatever
>> size batches maintainers are happy with), as a duplicate device_type
>> shouldn't be problematic.
>
> Yes, that is true.
>
>
>> When we hit critical mass, we could then remove the skeleton memory
>> nodes, fixing up any remaining fallout.
>>
>> As for the mechanical changes, it sounds like we need coccinelle for DT.
>>
>> That, or a laptop, a long flight, and a gin and tonic.
>
> :-)
>
> I'll see if I can cook up something with awk.
Something like this should do it:
#!/usr/bin/gawk -f
# find arch/arm/boot/dts/ -type f -name *.dts* | xargs
./mem_node_add_dev_type.awk -i inplace
BEGIN { go = 0 }
/[^-]memory ?{/ { go = 1; idx = 0; device_type = 0 }
go == 1 {
buf[idx++] = $0
if ($0 ~ /device_type/)
device_type = 1
if ($0 ~ /};/) {
print buf[0]
if (!device_type) {
buf[0] = buf[1]
gsub(/[^\t]*/, "", buf[0])
buf[0] = buf[0] "device_type = \"memory\";"
} else {
delete buf[0]
}
for (i in buf)
print buf[i]
delete buf
go = 0
device_type = 0
}
next
}
{ print }
Gives me: 249 files changed, 249 insertions(+), 1 deletion(-) on v4.6-rc1.
Running the my check script after this reveals that 83 DTs lack the
device_type parameter, but these seem to also lack the memory node as
well. Wonder why my script didn't pick up the missing memory node in
those... I also doubt that the memory node is set by the boot loader
in some of these boards.
regards,
Joachim Eastwood
More information about the linux-arm-kernel
mailing list