From: David Gibson <david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org>
To: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
devicetree-compiler-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH v2 3/4] checks: Warn on node name unit-addresses with '0x' or leading 0s
Date: Mon, 13 Feb 2017 15:52:41 +1100 [thread overview]
Message-ID: <20170213045241.GY25381@umbus> (raw)
In-Reply-To: <20170210164717.1234-4-robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 4357 bytes --]
On Fri, Feb 10, 2017 at 10:47:16AM -0600, Rob Herring wrote:
> Node name unit-addresses should never begin with 0x or leading 0s
> regardless of whether they have a bus specific address (i.e. one with
> commas) or not. Add warnings to check for these cases.
>
> Signed-off-by: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
> ---
> v2:
> - Split into separate check from unit_address_vs_reg
I'm still not thrilled with applying this test unconditionally -
especially when 4/4 introduces pretty much exactly the infrastructure
to do this better. If you add a unit name formatter function to the
bus_type structure you really can then extend unit_address_vs_reg to
verify them against each other, which will cover this as well more
subtle mismatches.
Obviously it would only do it for known bus types - but adding a
"simple-bus" type would cover a lot of the cases, and a few for i2c
and spi would cover most of the rest.
>
> checks.c | 21 +++++++++++++++++++++
> tests/run_tests.sh | 2 ++
> tests/unit-addr-leading-0s.dts | 10 ++++++++++
> tests/unit-addr-leading-0x.dts | 10 ++++++++++
> 4 files changed, 43 insertions(+)
> create mode 100644 tests/unit-addr-leading-0s.dts
> create mode 100644 tests/unit-addr-leading-0x.dts
>
> diff --git a/checks.c b/checks.c
> index 67237ffe594e..16d17d20caec 100644
> --- a/checks.c
> +++ b/checks.c
> @@ -296,6 +296,26 @@ static void check_unit_address_vs_reg(struct check *c, struct dt_info *dti,
> }
> WARNING(unit_address_vs_reg, check_unit_address_vs_reg, NULL);
>
> +static void check_unit_address_format(struct check *c, struct dt_info *dti,
> + struct node *node)
> +{
> + const char *unitname = get_unitname(node);
> +
> + if (!unitname[0])
> + return;
> +
> + if (!strncmp(unitname, "0x", 2)) {
> + FAIL(c, "Node %s unit name should not have leading \"0x\"",
> + node->fullpath);
> + /* skip over 0x for next test */
> + unitname += 2;
> + }
> + if (unitname[0] == '0' && isxdigit(unitname[1]))
> + FAIL(c, "Node %s unit name should not have leading 0s",
> + node->fullpath);
> +}
> +WARNING(unit_address_format, check_unit_address_format, NULL, &node_name_format);
> +
> static void check_property_name_chars(struct check *c, struct dt_info *dti,
> struct node *node)
> {
> @@ -753,6 +773,7 @@ static struct check *check_table[] = {
> &addr_size_cells, ®_format, &ranges_format,
>
> &unit_address_vs_reg,
> + &unit_address_format,
>
> &avoid_default_addr_size,
> &obsolete_chosen_interrupt_controller,
> diff --git a/tests/run_tests.sh b/tests/run_tests.sh
> index ed489dbdd269..0f5c3db79b80 100755
> --- a/tests/run_tests.sh
> +++ b/tests/run_tests.sh
> @@ -540,6 +540,8 @@ dtc_tests () {
> check_tests obsolete-chosen-interrupt-controller.dts obsolete_chosen_interrupt_controller
> check_tests reg-without-unit-addr.dts unit_address_vs_reg
> check_tests unit-addr-without-reg.dts unit_address_vs_reg
> + check_tests unit-addr-leading-0x.dts unit_address_format
> + check_tests unit-addr-leading-0s.dts unit_address_format
> run_sh_test dtc-checkfails.sh node_name_chars -- -I dtb -O dtb bad_node_char.dtb
> run_sh_test dtc-checkfails.sh node_name_format -- -I dtb -O dtb bad_node_format.dtb
> run_sh_test dtc-checkfails.sh prop_name_chars -- -I dtb -O dtb bad_prop_char.dtb
> diff --git a/tests/unit-addr-leading-0s.dts b/tests/unit-addr-leading-0s.dts
> new file mode 100644
> index 000000000000..7c8e2cebbc84
> --- /dev/null
> +++ b/tests/unit-addr-leading-0s.dts
> @@ -0,0 +1,10 @@
> +/dts-v1/;
> +
> +/ {
> + #address-cells = <1>;
> + #size-cells = <1>;
> +
> + node@001 {
> + reg = <1 0>;
> + };
> +};
> diff --git a/tests/unit-addr-leading-0x.dts b/tests/unit-addr-leading-0x.dts
> new file mode 100644
> index 000000000000..7ed7254e8dc2
> --- /dev/null
> +++ b/tests/unit-addr-leading-0x.dts
> @@ -0,0 +1,10 @@
> +/dts-v1/;
> +
> +/ {
> + #address-cells = <1>;
> + #size-cells = <1>;
> +
> + node@0x1 {
> + reg = <1 0>;
> + };
> +};
--
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: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
next prev parent reply other threads:[~2017-02-13 4:52 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-10 16:47 [PATCH v2 0/4] dtc unit-address and character set checks Rob Herring
[not found] ` <20170210164717.1234-1-robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-02-10 16:47 ` [PATCH v2 1/4] checks: Add Warning for stricter property name character checking Rob Herring
2017-02-10 16:47 ` [PATCH v2 2/4] checks: Add Warning for stricter node " Rob Herring
2017-02-10 16:47 ` [PATCH v2 3/4] checks: Warn on node name unit-addresses with '0x' or leading 0s Rob Herring
[not found] ` <20170210164717.1234-4-robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-02-13 4:52 ` David Gibson [this message]
2017-02-13 20:11 ` Rob Herring
[not found] ` <CAL_JsqL772=td67SVxVmXCHq-vEiX3EsSo4x2EcUxRNkfUK83A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-02-14 2:07 ` David Gibson
2017-02-10 16:47 ` [PATCH v2 4/4] checks: Add bus checks for PCI buses Rob Herring
[not found] ` <20170210164717.1234-5-robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-02-13 5:03 ` David Gibson
2017-02-13 20:49 ` Rob Herring
[not found] ` <CAL_JsqLkfbFhL34y=xyKB0ooSWDUKON2may50MH6zfFG_YVEaQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-02-14 2:12 ` David Gibson
2017-02-13 5:04 ` [PATCH v2 0/4] dtc unit-address and character set checks David Gibson
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=20170213045241.GY25381@umbus \
--to=david-xt8fgy+axnrb3ne2bgzf6laj5h9x9tb+@public.gmane.org \
--cc=devicetree-compiler-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=robh-DgEjT+Ai2ygdnm+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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.