From: sudeep.holla@arm.com (Sudeep Holla)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2] clocksource: arm_arch_timer: discard unavailable timers correctly
Date: Wed, 24 Sep 2014 16:16:47 +0100 [thread overview]
Message-ID: <5422E05F.4070405@arm.com> (raw)
In-Reply-To: <1410982774-4724-1-git-send-email-sudeep.holla@arm.com>
Hi Mark,
On 17/09/14 20:39, Sudeep Holla wrote:
> Currently we wait until both cp15 and mem timers are probed if we
> have both timer device nodes present in the device tree without
> checking if the device is actually available. If one of the timer
> device node present is disabled, the system locks up on the boot
> as no timer gets registered.
>
> This patch adds the check for the availablity of the timer device
> so that we unavailable timers are discarded correctly. It also adds
> the missing of_node_put.
>
> Cc: Stephen Boyd <sboyd@codeaurora.org>
> Cc: Mark Rutland <mark.rutland@arm.com>
If your are fine with this, can I ask Daniel you pick this up ?
Regards,
Sudeep
> Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
> ---
> drivers/clocksource/arm_arch_timer.c | 20 ++++++++++++++++----
> 1 file changed, 16 insertions(+), 4 deletions(-)
>
> Changes v1->v2:
> - Added missing of_node_put in the original code
> - Updated the commit log as suggested
>
> diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c
> index 5163ec13429d..7e267e3990ab 100644
> --- a/drivers/clocksource/arm_arch_timer.c
> +++ b/drivers/clocksource/arm_arch_timer.c
> @@ -616,17 +616,29 @@ static const struct of_device_id arch_timer_mem_of_match[] __initconst = {
> {},
> };
>
> +static bool __init
> +arch_timer_probed(int type, const struct of_device_id *matches)
> +{
> + struct device_node *dn;
> + bool probed = false;
> +
> + dn = of_find_matching_node(NULL, matches);
> + if (dn && of_device_is_available(dn) && (arch_timers_present & type))
> + probed = true;
> + of_node_put(dn);
> +
> + return probed;
> +}
> +
> static void __init arch_timer_common_init(void)
> {
> unsigned mask = ARCH_CP15_TIMER | ARCH_MEM_TIMER;
>
> /* Wait until both nodes are probed if we have two timers */
> if ((arch_timers_present & mask) != mask) {
> - if (of_find_matching_node(NULL, arch_timer_mem_of_match) &&
> - !(arch_timers_present & ARCH_MEM_TIMER))
> + if (!arch_timer_probed(ARCH_MEM_TIMER, arch_timer_mem_of_match))
> return;
> - if (of_find_matching_node(NULL, arch_timer_of_match) &&
> - !(arch_timers_present & ARCH_CP15_TIMER))
> + if (!arch_timer_probed(ARCH_CP15_TIMER, arch_timer_of_match))
> return;
> }
>
>
WARNING: multiple messages have this Message-ID (diff)
From: Sudeep Holla <sudeep.holla@arm.com>
To: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
Mark Rutland <Mark.Rutland@arm.com>
Cc: Daniel Lezcano <daniel.lezcano@linaro.org>,
Thomas Gleixner <tglx@linutronix.de>,
Sudeep Holla <Sudeep.Holla@arm.com>,
Stephen Boyd <sboyd@codeaurora.org>
Subject: Re: [PATCH v2] clocksource: arm_arch_timer: discard unavailable timers correctly
Date: Wed, 24 Sep 2014 16:16:47 +0100 [thread overview]
Message-ID: <5422E05F.4070405@arm.com> (raw)
In-Reply-To: <1410982774-4724-1-git-send-email-sudeep.holla@arm.com>
Hi Mark,
On 17/09/14 20:39, Sudeep Holla wrote:
> Currently we wait until both cp15 and mem timers are probed if we
> have both timer device nodes present in the device tree without
> checking if the device is actually available. If one of the timer
> device node present is disabled, the system locks up on the boot
> as no timer gets registered.
>
> This patch adds the check for the availablity of the timer device
> so that we unavailable timers are discarded correctly. It also adds
> the missing of_node_put.
>
> Cc: Stephen Boyd <sboyd@codeaurora.org>
> Cc: Mark Rutland <mark.rutland@arm.com>
If your are fine with this, can I ask Daniel you pick this up ?
Regards,
Sudeep
> Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
> ---
> drivers/clocksource/arm_arch_timer.c | 20 ++++++++++++++++----
> 1 file changed, 16 insertions(+), 4 deletions(-)
>
> Changes v1->v2:
> - Added missing of_node_put in the original code
> - Updated the commit log as suggested
>
> diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c
> index 5163ec13429d..7e267e3990ab 100644
> --- a/drivers/clocksource/arm_arch_timer.c
> +++ b/drivers/clocksource/arm_arch_timer.c
> @@ -616,17 +616,29 @@ static const struct of_device_id arch_timer_mem_of_match[] __initconst = {
> {},
> };
>
> +static bool __init
> +arch_timer_probed(int type, const struct of_device_id *matches)
> +{
> + struct device_node *dn;
> + bool probed = false;
> +
> + dn = of_find_matching_node(NULL, matches);
> + if (dn && of_device_is_available(dn) && (arch_timers_present & type))
> + probed = true;
> + of_node_put(dn);
> +
> + return probed;
> +}
> +
> static void __init arch_timer_common_init(void)
> {
> unsigned mask = ARCH_CP15_TIMER | ARCH_MEM_TIMER;
>
> /* Wait until both nodes are probed if we have two timers */
> if ((arch_timers_present & mask) != mask) {
> - if (of_find_matching_node(NULL, arch_timer_mem_of_match) &&
> - !(arch_timers_present & ARCH_MEM_TIMER))
> + if (!arch_timer_probed(ARCH_MEM_TIMER, arch_timer_mem_of_match))
> return;
> - if (of_find_matching_node(NULL, arch_timer_of_match) &&
> - !(arch_timers_present & ARCH_CP15_TIMER))
> + if (!arch_timer_probed(ARCH_CP15_TIMER, arch_timer_of_match))
> return;
> }
>
>
next prev parent reply other threads:[~2014-09-24 15:16 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-16 23:50 [PATCH] clocksource: arm_arch_timer: discard unavailable timers correctly Sudeep Holla
2014-09-16 23:50 ` Sudeep Holla
2014-09-17 0:01 ` Stephen Boyd
2014-09-17 0:01 ` Stephen Boyd
2014-09-17 19:39 ` [PATCH v2] " Sudeep Holla
2014-09-17 19:39 ` Sudeep Holla
2014-09-17 19:51 ` Stephen Boyd
2014-09-17 19:51 ` Stephen Boyd
2014-09-24 15:16 ` Sudeep Holla [this message]
2014-09-24 15:16 ` Sudeep Holla
2014-09-24 15:48 ` Mark Rutland
2014-09-24 15:48 ` Mark Rutland
2014-09-24 15:55 ` Sudeep Holla
2014-09-24 15:55 ` Sudeep Holla
2014-09-24 16:23 ` [PATCH v3] " Sudeep Holla
2014-09-24 16:23 ` Sudeep Holla
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=5422E05F.4070405@arm.com \
--to=sudeep.holla@arm.com \
--cc=linux-arm-kernel@lists.infradead.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.