From: David Gibson <david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org>
To: Anton Blanchard <anton-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org>
Cc: Jeremy Kerr <jk-mnsaURCQ41sdnm+yROfE0A@public.gmane.org>,
jdl-CYoMK+44s/E@public.gmane.org,
devicetree-compiler-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: Sort unit addresses by number
Date: Thu, 20 Aug 2015 14:09:46 -0700 [thread overview]
Message-ID: <20150820210946.GC13973@voom.event.rightround.com> (raw)
In-Reply-To: <20150812120004.5117c6b1@kryten>
[-- Attachment #1: Type: text/plain, Size: 2828 bytes --]
On Wed, Aug 12, 2015 at 12:00:04PM +1000, Anton Blanchard wrote:
> The sort option in dtc treats unit addresses as strings. This causes
> cpu nodes to end up out of order:
>
> # dtc -s -I fs -O dts /proc/proc/device-tree | grep PowerPC,POWER7
>
> PowerPC,POWER7@30 {
> PowerPC,POWER7@68 {
> PowerPC,POWER7@70 {
> PowerPC,POWER7@828 {
> PowerPC,POWER7@860 {
> PowerPC,POWER7@868 {
> PowerPC,POWER7@8a0 {
> PowerPC,POWER7@8b0 {
> PowerPC,POWER7@8f0 {
> PowerPC,POWER7@a0 {
> PowerPC,POWER7@a8 {
> PowerPC,POWER7@e0 {
>
> If we use this device tree for a kexec boot we end up with a confusing
> layout of logical CPUs:
>
> node 0 cpus: 0-23 72-95
> node 0 size: 32633 MB
>
> node 1 cpus: 24-71
> node 1 size: 32631 MB
>
> The reason for this is that we allocate logical CPU ids as we walk
> through the device tree.
>
> In cmp_subnode, if both nodes have a hex unit address and the
> basenames match, then compare by number.
>
> This fixes the issue:
>
> # dtc -s -I fs -O dts /proc/proc/device-tree | grep PowerPC,POWER7
> PowerPC,POWER7@30 {
> PowerPC,POWER7@68 {
> PowerPC,POWER7@70 {
> PowerPC,POWER7@a0 {
> PowerPC,POWER7@a8 {
> PowerPC,POWER7@e0 {
> PowerPC,POWER7@828 {
> PowerPC,POWER7@860 {
> PowerPC,POWER7@868 {
> PowerPC,POWER7@8a0 {
> PowerPC,POWER7@8b0 {
> PowerPC,POWER7@8f0 {
>
> And the CPU layout is as expected:
>
> node 0 cpus: 0-47
> node 0 size: 32633 MB
>
> node 1 cpus: 48-95
> node 1 size: 32631 MB
>
> Signed-off-by: Anton Blanchard <anton-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org>
So.. I agree the current ordering is rather nasty, but changing it
like this is problematic.
The idea of dtc -s is that it will produce the output in a "canonical"
form so that tools like dtdiff can examine without having to care
about order changes. So, first problem is that changing the -s
behaviour means that the "canonical" form from an old dtc won't be the
same as from a new dtc which kind of defeats the purpose.
Again, in principle, ordering by unit address makes more sense than
ordering by the whole unit name, but it adds further complications.
We could just strcmp() the unit address, but that would lead to the
same ordering oddities you've seen. We can order assuming it's hex,
but then we'll get strange behaviour on pci or other buses that can
have funny characters in their unit addresses.
So, yeah..
At the very least I'd like to see a change like this activated by a
new option. Longer term I'm not sure how to proceed sensibly with
improving the ordering.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: Type: application/pgp-signature, Size: 819 bytes --]
prev parent reply other threads:[~2015-08-20 21:09 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-12 2:00 Sort unit addresses by number Anton Blanchard
2015-08-20 21:09 ` David Gibson [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150820210946.GC13973@voom.event.rightround.com \
--to=david-xt8fgy+axnrb3ne2bgzf6laj5h9x9tb+@public.gmane.org \
--cc=anton-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org \
--cc=devicetree-compiler-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=jdl-CYoMK+44s/E@public.gmane.org \
--cc=jk-mnsaURCQ41sdnm+yROfE0A@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).