From: Geert Uytterhoeven <geert@linux-m68k.org>
To: "Rob Herring (Arm)" <robh@kernel.org>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>,
Len Brown <lenb@kernel.org>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Daniel Scally <djrscally@gmail.com>,
Heikki Krogerus <heikki.krogerus@linux.intel.com>,
Sakari Ailus <sakari.ailus@linux.intel.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Danilo Krummrich <dakr@kernel.org>,
Saravana Kannan <saravanak@google.com>,
linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org,
devicetree@vger.kernel.org,
Linux-Renesas <linux-renesas-soc@vger.kernel.org>
Subject: Re: [PATCH 2/2] of: Warn when of_property_read_bool() is used on non-boolean properties
Date: Tue, 14 Jan 2025 19:35:22 +0100 [thread overview]
Message-ID: <CAMuHMdU=QR-JLgEHKWpsr6SbaZRc-Hz9r91JfpP8c3n2G-OjqA@mail.gmail.com> (raw)
In-Reply-To: <20250109-dt-type-warnings-v1-2-0150e32e716c@kernel.org>
Hi Rob,
On Thu, Jan 9, 2025 at 8:42 PM Rob Herring (Arm) <robh@kernel.org> wrote:
> The use of of_property_read_bool() for non-boolean properties is
> deprecated. The primary use of it was to test property presence, but
> that has been replaced in favor of of_property_present(). With those
> uses now fixed, add a warning to discourage new ones.
>
> Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Thanks for your patch, which is now commit c141ecc3cecd7647 ("of:
Warn when of_property_read_bool() is used on non-boolean properties")
in dt-rh/for-next.
I have bisected a failure in secondary CPU bring-up on R-Car H1 (quad
Cortex-A9 MPCore) to this commit:
Detected Renesas R-Car Gen1 r8a7779 ES1.0
smp: Bringing up secondary CPUs ...
-CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
-CPU1: Spectre v2: using BPIALL workaround
-CPU2: thread -1, cpu 2, socket 0, mpidr 80000002
-CPU2: Spectre v2: using BPIALL workaround
-CPU3: thread -1, cpu 3, socket 0, mpidr 80000003
-CPU3: Spectre v2: using BPIALL workaround
-smp: Brought up 1 node, 4 CPUs
-SMP: Total of 4 processors activated (2000.00 BogoMIPS).
+CPU1: failed to come online
+CPU2: failed to come online
+CPU3: failed to come online
+smp: Brought up 1 node, 1 CPU
+SMP: Total of 1 processors activated (500.00 BogoMIPS).
CPU: All CPU(s) started in SVC mode.
Reverting this commit on top of my work tree fixes the issue, too.
However, I do not see how this commit could impact CPU bring-up?
I added debug code to of_property_read_bool(), to print all look-ups.
I only saw a few before CPU bring-up, nothing relevant:
NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
+OF: of_property_read_bool(interrupt-controller): 1
rcu: srcu_init: Setting srcu_struct sizes based on contention.
+OF: of_property_read_bool(interrupt-controller): 1
sched_clock: 64 bits at 250MHz, resolution 4ns, wraps every 4398046511102ns
clocksource: arm_global_timer: mask: 0xffffffffffffffff
max_cycles: 0x7350b89c29, max_idle_ns: 881590431910 ns
Switching to timer-based delay loop, resolution 4ns
+OF: of_property_read_bool(interrupt-controller): 1
+OF: of_property_read_bool(always-on): 0
Console: colour dummy device 80x30
printk: legacy console [tty0] enabled
Perhaps something shifted in the code layout? The obvious suspects
(shmobile_boot_* and shmobile_smp_* asm code, secondary_startup(),
addresses in arch/arm/mach-shmobile/platsmp-scu.c) are still at the
same addresses as before...
Anyone with a clue?
Thanks!
> --- a/drivers/of/property.c
> +++ b/drivers/of/property.c
> @@ -31,6 +31,32 @@
>
> #include "of_private.h"
>
> +/**
> + * of_property_read_bool - Find a property
> + * @np: device node from which the property value is to be read.
> + * @propname: name of the property to be searched.
> + *
> + * Search for a boolean property in a device node. Usage on non-boolean
> + * property types is deprecated.
> + *
> + * Return: true if the property exists false otherwise.
> + */
> +bool of_property_read_bool(const struct device_node *np, const char *propname)
> +{
> + struct property *prop = of_find_property(np, propname, NULL);
> +
> + /*
> + * Boolean properties should not have a value. Testing for property
> + * presence should either use of_property_present() or just read the
> + * property value and check the returned error code.
> + */
> + if (prop && prop->length)
> + pr_warn("%pOF: Read of boolean property '%s' with a value.\n", np, propname);
> +
> + return prop ? true : false;
> +}
> +EXPORT_SYMBOL(of_property_read_bool);
> +
> /**
> * of_graph_is_present() - check graph's presence
> * @node: pointer to device_node containing graph port
> diff --git a/include/linux/of.h b/include/linux/of.h
> index 1cb4eb7fc2eded2246c697c3bcaf1b85d43108ab..0cdd58ff0a4190724309ba1eddbac51b188b6136 100644
> --- a/include/linux/of.h
> +++ b/include/linux/of.h
> @@ -311,6 +311,7 @@ extern struct device_node *of_find_node_with_property(
> extern struct property *of_find_property(const struct device_node *np,
> const char *name,
> int *lenp);
> +extern bool of_property_read_bool(const struct device_node *np, const char *propname);
> extern int of_property_count_elems_of_size(const struct device_node *np,
> const char *propname, int elem_size);
> extern int of_property_read_u32_index(const struct device_node *np,
> @@ -615,6 +616,12 @@ static inline struct device_node *of_find_compatible_node(
> return NULL;
> }
>
> +static inline bool of_property_read_bool(const struct device_node *np,
> + const char *propname)
> +{
> + return false;
> +}
> +
> static inline int of_property_count_elems_of_size(const struct device_node *np,
> const char *propname, int elem_size)
> {
> @@ -1242,24 +1249,6 @@ static inline int of_property_read_string_index(const struct device_node *np,
> return rc < 0 ? rc : 0;
> }
>
> -/**
> - * of_property_read_bool - Find a property
> - * @np: device node from which the property value is to be read.
> - * @propname: name of the property to be searched.
> - *
> - * Search for a boolean property in a device node. Usage on non-boolean
> - * property types is deprecated.
> - *
> - * Return: true if the property exists false otherwise.
> - */
> -static inline bool of_property_read_bool(const struct device_node *np,
> - const char *propname)
> -{
> - const struct property *prop = of_find_property(np, propname, NULL);
> -
> - return prop ? true : false;
> -}
> -
> /**
> * of_property_present - Test if a property is present in a node
> * @np: device node to search for the property.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
next prev parent reply other threads:[~2025-01-14 18:35 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-09 19:42 [PATCH 0/2] device property: Warn on (of|fwnode|device)_property_read_bool() for non-boolean properties Rob Herring (Arm)
2025-01-09 19:42 ` [PATCH 1/2] device property: Split property reading bool and presence test ops Rob Herring (Arm)
2025-01-10 15:05 ` Greg Kroah-Hartman
2025-01-11 10:14 ` Krzysztof Kozlowski
2025-01-13 19:06 ` Rafael J. Wysocki
2025-01-15 7:23 ` Sakari Ailus
2025-01-09 19:42 ` [PATCH 2/2] of: Warn when of_property_read_bool() is used on non-boolean properties Rob Herring (Arm)
2025-01-11 10:12 ` Krzysztof Kozlowski
2025-01-14 18:35 ` Geert Uytterhoeven [this message]
2025-01-14 19:10 ` Andy Shevchenko
2025-01-14 19:19 ` Rob Herring
2025-01-15 11:20 ` Geert Uytterhoeven
2025-03-10 13:15 ` Geert Uytterhoeven
2025-01-13 8:58 ` [PATCH 0/2] device property: Warn on (of|fwnode|device)_property_read_bool() for " Andy Shevchenko
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='CAMuHMdU=QR-JLgEHKWpsr6SbaZRc-Hz9r91JfpP8c3n2G-OjqA@mail.gmail.com' \
--to=geert@linux-m68k.org \
--cc=andriy.shevchenko@linux.intel.com \
--cc=dakr@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=djrscally@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=heikki.krogerus@linux.intel.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=rafael@kernel.org \
--cc=robh@kernel.org \
--cc=sakari.ailus@linux.intel.com \
--cc=saravanak@google.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).