From: David Vrabel <david.vrabel@citrix.com>
To: xen-devel@lists.xensource.com
Cc: Ian Campbell <ian.campbell@citrix.com>,
David Vrabel <david.vrabel@citrix.com>
Subject: [PATCH 04/11] device tree: correctly ignore unit-address when matching nodes by name
Date: Mon, 19 Mar 2012 17:52:02 +0000 [thread overview]
Message-ID: <1332179529-1828-5-git-send-email-david.vrabel@citrix.com> (raw)
In-Reply-To: <1332179529-1828-1-git-send-email-david.vrabel@citrix.com>
From: David Vrabel <david.vrabel@citrix.com>
When matching node by their name, correctly ignore the unit address
(@...) part of the name. Previously, a "memory-controller" node would
be incorrectly matched as a "memory" node.
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
---
xen/common/device_tree.c | 22 ++++++++++++++++------
1 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/xen/common/device_tree.c b/xen/common/device_tree.c
index 4a7166d..5329956 100644
--- a/xen/common/device_tree.c
+++ b/xen/common/device_tree.c
@@ -23,6 +23,20 @@
struct dt_early_info __initdata early_info;
void *device_tree_flattened;
+static bool_t __init node_matches(const void *fdt, int node, const char *match)
+{
+ const char *name;
+ size_t match_len;
+
+ name = fdt_get_name(fdt, node, NULL);
+ match_len = strlen(match);
+
+ /* Match both "match" and "match@..." patterns but not
+ "match-foo". */
+ return strncmp(name, match, match_len) == 0
+ && (name[match_len] == '@' || name[match_len] == '\0');
+}
+
static void __init get_val(const u32 **cell, u32 cells, u64 *val)
{
*val = 0;
@@ -98,14 +112,11 @@ static void __init early_scan(const void *fdt)
{
int node;
int depth;
- const char *name;
u32 address_cells[MAX_DEPTH];
u32 size_cells[MAX_DEPTH];
for ( node = 0; depth >= 0; node = fdt_next_node(fdt, node, &depth) )
{
- name = fdt_get_name(fdt, node, NULL);
-
if ( depth >= MAX_DEPTH )
{
early_printk("fdt: node '%s': nested too deep\n",
@@ -116,9 +127,8 @@ static void __init early_scan(const void *fdt)
address_cells[depth] = prop_by_name_u32(fdt, node, "#address-cells");
size_cells[depth] = prop_by_name_u32(fdt, node, "#size-cells");
- if ( strncmp(name, "memory", 6) == 0 )
- process_memory_node(fdt, node,
- address_cells[depth-1], size_cells[depth-1]);
+ if ( node_matches(fdt, node, "memory") )
+ process_memory_node(fdt, node, address_cells[depth-1], size_cells[depth-1]);
}
}
--
1.7.2.5
next prev parent reply other threads:[~2012-03-19 17:52 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-19 17:51 [PATCHv2 00/11] arm: pass a device tree to dom0 David Vrabel
2012-03-19 17:51 ` [PATCH 01/11] libfdt: move headers to xen/include/xen/libfdt/ David Vrabel
2012-03-19 17:58 ` David Vrabel
2012-03-19 17:52 ` [PATCH 02/11] MAINTAINERS: add device tree maintainer David Vrabel
2012-03-19 17:54 ` Keir Fraser
2012-03-19 17:52 ` [PATCH 03/11] device tree: follow coding style David Vrabel
2012-03-19 17:52 ` David Vrabel [this message]
2012-03-19 17:52 ` [PATCH 05/11] device tree: add device_tree_for_each_node() David Vrabel
2012-03-22 11:12 ` Ian Campbell
2012-03-22 12:47 ` David Vrabel
2012-03-19 17:52 ` [PATCH 06/11] device tree: add device_tree_dump() to print a flat device tree David Vrabel
2012-03-19 17:52 ` [PATCH 07/11] arm: remove the hack for loading vmlinux images David Vrabel
2012-03-19 17:52 ` [PATCH 08/11] device tree, arm: supply a flat device tree to dom0 David Vrabel
2012-03-20 10:43 ` David Vrabel
2012-03-20 10:52 ` Ian Campbell
2012-03-22 14:06 ` Ian Campbell
2012-03-22 14:27 ` David Vrabel
2012-03-22 17:12 ` David Vrabel
2012-03-19 17:52 ` [PATCH 09/11] Allow cmdline_parse() to be used with const strings David Vrabel
2012-03-19 17:54 ` Keir Fraser
2012-03-19 17:52 ` [PATCH 10/11] arm: use bootargs for the command line David Vrabel
2012-03-22 14:22 ` Ian Campbell
2012-03-22 14:30 ` Ian Campbell
2012-03-22 15:03 ` David Vrabel
2012-03-19 17:52 ` [PATCH 11/11] arm: add dom0_mem command line argument David Vrabel
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=1332179529-1828-5-git-send-email-david.vrabel@citrix.com \
--to=david.vrabel@citrix.com \
--cc=ian.campbell@citrix.com \
--cc=xen-devel@lists.xensource.com \
/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).