From: sboyd@codeaurora.org (Stephen Boyd)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/2] tick: broadcast: Deny per-cpu clockevents from being broadcast sources
Date: Thu, 22 Aug 2013 10:06:40 -0700 [thread overview]
Message-ID: <1377191201-14696-1-git-send-email-sboyd@codeaurora.org> (raw)
In-Reply-To: <52138784.7050703@linaro.org>
On most ARM systems the per-cpu clockevents are truly per-cpu in
the sense that they can't be controlled on any other CPU besides
the CPU that they interrupt. If one of these clockevents were to
become a broadcast source we will run into a lot of trouble
because the broadcast source is enabled on the first CPU to go
into deep idle (if that CPU suffers from FEAT_C3_STOP) and that
could be a different CPU than what the clockevent is interrupting
(or even worse the CPU that the clockevent interrupts could be
offline).
Theoretically it's possible to support per-cpu clockevents as the
broadcast source but so far we haven't needed this and supporting
it is rather complicated. Let's just deny the possibility for now
until this becomes a reality (let's hope it never does!).
Reported-by: S?ren Brinkmann <soren.brinkmann@xilinx.com>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
---
kernel/time/tick-broadcast.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
index 218bcb5..d3539e5 100644
--- a/kernel/time/tick-broadcast.c
+++ b/kernel/time/tick-broadcast.c
@@ -77,6 +77,9 @@ static bool tick_check_broadcast_device(struct clock_event_device *curdev,
!(newdev->features & CLOCK_EVT_FEAT_ONESHOT))
return false;
+ if (cpumask_equal(newdev->cpumask, cpumask_of(smp_processor_id())))
+ return false;
+
return !curdev || newdev->rating > curdev->rating;
}
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
WARNING: multiple messages have this Message-ID (diff)
From: Stephen Boyd <sboyd@codeaurora.org>
To: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: "Michal Simek" <michal.simek@xilinx.com>,
"Russell King" <linux@arm.linux.org.uk>,
linux-kernel@vger.kernel.org,
"Stuart Menefy" <stuart.menefy@st.com>,
"John Stultz" <john.stultz@linaro.org>,
"Thomas Gleixner" <tglx@linutronix.de>,
linux-arm-kernel@lists.infradead.org, srinivas.kandagatla@st.com,
"Sören Brinkmann" <soren.brinkmann@xilinx.com>
Subject: [PATCH 1/2] tick: broadcast: Deny per-cpu clockevents from being broadcast sources
Date: Thu, 22 Aug 2013 10:06:40 -0700 [thread overview]
Message-ID: <1377191201-14696-1-git-send-email-sboyd@codeaurora.org> (raw)
In-Reply-To: <52138784.7050703@linaro.org>
On most ARM systems the per-cpu clockevents are truly per-cpu in
the sense that they can't be controlled on any other CPU besides
the CPU that they interrupt. If one of these clockevents were to
become a broadcast source we will run into a lot of trouble
because the broadcast source is enabled on the first CPU to go
into deep idle (if that CPU suffers from FEAT_C3_STOP) and that
could be a different CPU than what the clockevent is interrupting
(or even worse the CPU that the clockevent interrupts could be
offline).
Theoretically it's possible to support per-cpu clockevents as the
broadcast source but so far we haven't needed this and supporting
it is rather complicated. Let's just deny the possibility for now
until this becomes a reality (let's hope it never does!).
Reported-by: Sören Brinkmann <soren.brinkmann@xilinx.com>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
---
kernel/time/tick-broadcast.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
index 218bcb5..d3539e5 100644
--- a/kernel/time/tick-broadcast.c
+++ b/kernel/time/tick-broadcast.c
@@ -77,6 +77,9 @@ static bool tick_check_broadcast_device(struct clock_event_device *curdev,
!(newdev->features & CLOCK_EVT_FEAT_ONESHOT))
return false;
+ if (cpumask_equal(newdev->cpumask, cpumask_of(smp_processor_id())))
+ return false;
+
return !curdev || newdev->rating > curdev->rating;
}
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
next prev parent reply other threads:[~2013-08-22 17:06 UTC|newest]
Thread overview: 167+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20130717210417.GP13667@xsjandreislx>
[not found] ` <51E72DCA.9070500@codeaurora.org>
[not found] ` <f5b76049-7e5b-4dd0-9863-19cfd1d599b9@TX2EHSMHS006.ehs.local>
[not found] ` <51E7435B.3060605@codeaurora.org>
[not found] ` <ff4d40be-7177-4a55-ab2f-dff11fa18642@DB9EHSMHS009.ehs.local>
[not found] ` <51ED8DF2.60600@codeaurora.org>
[not found] ` <20130722201348.GI453@xsjandreislx>
2013-07-22 22:41 ` Enable arm_global_timer for Zynq brakes boot Sören Brinkmann
2013-07-22 22:41 ` Sören Brinkmann
2013-07-29 12:51 ` Daniel Lezcano
2013-07-29 12:51 ` Daniel Lezcano
2013-07-29 15:58 ` Sören Brinkmann
2013-07-29 15:58 ` Sören Brinkmann
2013-07-30 0:03 ` Sören Brinkmann
2013-07-30 0:03 ` Sören Brinkmann
2013-07-30 8:47 ` Daniel Lezcano
2013-07-30 8:47 ` Daniel Lezcano
2013-07-30 22:14 ` Sören Brinkmann
2013-07-30 22:14 ` Sören Brinkmann
2013-07-30 22:23 ` Sören Brinkmann
2013-07-30 22:23 ` Sören Brinkmann
2013-07-30 22:34 ` Sören Brinkmann
2013-07-30 22:34 ` Sören Brinkmann
2013-07-31 7:27 ` Daniel Lezcano
2013-07-31 7:27 ` Daniel Lezcano
2013-07-31 16:26 ` Sören Brinkmann
2013-07-31 16:26 ` Sören Brinkmann
2013-07-31 9:34 ` Daniel Lezcano
2013-07-31 9:34 ` Daniel Lezcano
2013-07-31 16:43 ` Sören Brinkmann
2013-07-31 16:43 ` Sören Brinkmann
2013-07-31 20:49 ` Daniel Lezcano
2013-07-31 20:49 ` Daniel Lezcano
2013-07-31 20:58 ` Sören Brinkmann
2013-07-31 20:58 ` Sören Brinkmann
2013-07-31 21:08 ` Daniel Lezcano
2013-07-31 21:08 ` Daniel Lezcano
2013-07-31 22:18 ` Sören Brinkmann
2013-07-31 22:18 ` Sören Brinkmann
2013-07-31 23:01 ` Daniel Lezcano
2013-07-31 23:01 ` Daniel Lezcano
2013-07-31 23:38 ` Sören Brinkmann
2013-07-31 23:38 ` Sören Brinkmann
2013-08-01 17:29 ` Daniel Lezcano
2013-08-01 17:29 ` Daniel Lezcano
2013-08-01 17:43 ` Sören Brinkmann
2013-08-01 17:43 ` Sören Brinkmann
2013-08-01 17:48 ` Daniel Lezcano
2013-08-01 17:48 ` Daniel Lezcano
2013-08-06 1:28 ` Sören Brinkmann
2013-08-06 1:28 ` Sören Brinkmann
2013-08-06 8:46 ` Daniel Lezcano
2013-08-06 8:46 ` Daniel Lezcano
2013-08-06 9:18 ` Michal Simek
2013-08-06 9:18 ` Michal Simek
2013-08-06 12:30 ` Daniel Lezcano
2013-08-06 12:30 ` Daniel Lezcano
2013-08-06 12:41 ` Michal Simek
2013-08-06 12:41 ` Michal Simek
2013-08-06 13:08 ` Daniel Lezcano
2013-08-06 13:08 ` Daniel Lezcano
2013-08-06 13:18 ` Michal Simek
2013-08-06 13:18 ` Michal Simek
2013-08-06 16:09 ` Daniel Lezcano
2013-08-06 16:09 ` Daniel Lezcano
2013-08-06 16:13 ` Sören Brinkmann
2013-08-06 16:13 ` Sören Brinkmann
2013-08-06 16:25 ` Sören Brinkmann
2013-08-06 16:25 ` Sören Brinkmann
2013-08-06 16:18 ` Sören Brinkmann
2013-08-06 16:18 ` Sören Brinkmann
2013-08-08 17:11 ` Sören Brinkmann
2013-08-08 17:11 ` Sören Brinkmann
2013-08-08 17:16 ` Mark Rutland
2013-08-08 17:16 ` Mark Rutland
2013-08-08 17:22 ` Stephen Boyd
2013-08-08 17:22 ` Stephen Boyd
2013-08-09 10:58 ` Mark Rutland
2013-08-09 10:58 ` Mark Rutland
2013-08-08 17:22 ` Sören Brinkmann
2013-08-08 17:22 ` Sören Brinkmann
2013-08-09 10:32 ` Srinivas KANDAGATLA
2013-08-09 10:32 ` Srinivas KANDAGATLA
2013-08-09 14:19 ` Daniel Lezcano
2013-08-09 14:19 ` Daniel Lezcano
2013-08-09 17:27 ` Stephen Boyd
2013-08-09 17:27 ` Stephen Boyd
2013-08-09 17:48 ` Sören Brinkmann
2013-08-09 17:48 ` Sören Brinkmann
2013-08-09 18:45 ` Stephen Boyd
2013-08-09 18:45 ` Stephen Boyd
2013-08-12 10:53 ` Daniel Lezcano
2013-08-12 10:53 ` Daniel Lezcano
2013-08-12 16:23 ` Stephen Boyd
2013-08-12 16:23 ` Stephen Boyd
2013-08-12 16:53 ` Daniel Lezcano
2013-08-12 16:53 ` Daniel Lezcano
2013-08-12 16:03 ` Sören Brinkmann
2013-08-12 16:03 ` Sören Brinkmann
2013-08-12 16:08 ` Daniel Lezcano
2013-08-12 16:08 ` Daniel Lezcano
2013-08-12 16:17 ` Sören Brinkmann
2013-08-12 16:17 ` Sören Brinkmann
2013-08-12 16:20 ` Stephen Boyd
2013-08-12 16:20 ` Stephen Boyd
2013-08-12 16:24 ` Sören Brinkmann
2013-08-12 16:24 ` Sören Brinkmann
2013-08-12 16:40 ` Stephen Boyd
2013-08-12 16:40 ` Stephen Boyd
2013-08-12 16:43 ` Sören Brinkmann
2013-08-12 16:43 ` Sören Brinkmann
2013-08-12 16:32 ` Sören Brinkmann
2013-08-12 16:32 ` Sören Brinkmann
2013-08-12 16:49 ` Daniel Lezcano
2013-08-12 16:49 ` Daniel Lezcano
2013-08-12 16:53 ` Sören Brinkmann
2013-08-12 16:53 ` Sören Brinkmann
2013-08-12 17:02 ` Daniel Lezcano
2013-08-12 17:02 ` Daniel Lezcano
2013-08-16 17:28 ` Sören Brinkmann
2013-08-16 17:28 ` Sören Brinkmann
2013-08-19 23:00 ` Stephen Boyd
2013-08-19 23:00 ` Stephen Boyd
2013-08-19 23:30 ` Sören Brinkmann
2013-08-19 23:30 ` Sören Brinkmann
2013-08-20 0:57 ` Stephen Boyd
2013-08-20 0:57 ` Stephen Boyd
2013-08-20 15:13 ` Daniel Lezcano
2013-08-20 15:13 ` Daniel Lezcano
2013-08-22 17:06 ` Stephen Boyd [this message]
2013-08-22 17:06 ` [PATCH 1/2] tick: broadcast: Deny per-cpu clockevents from being broadcast sources Stephen Boyd
2013-08-22 17:06 ` [PATCH 2/2] clockevents: Prefer clockevents that don't suffer from FEAT_C3_STOP Stephen Boyd
2013-08-22 17:06 ` Stephen Boyd
2013-08-22 17:33 ` Santosh Shilimkar
2013-08-22 17:33 ` Santosh Shilimkar
2013-08-22 17:40 ` Stephen Boyd
2013-08-22 17:40 ` Stephen Boyd
2013-08-22 17:48 ` Santosh Shilimkar
2013-08-22 17:48 ` Santosh Shilimkar
2013-08-22 18:31 ` Stephen Boyd
2013-08-22 18:31 ` Stephen Boyd
2013-08-22 21:06 ` Santosh Shilimkar
2013-08-22 21:06 ` Santosh Shilimkar
2013-08-22 23:38 ` [PATCH 1/2] tick: broadcast: Deny per-cpu clockevents from being broadcast sources Sören Brinkmann
2013-08-22 23:38 ` Sören Brinkmann
2013-09-05 16:53 ` Sören Brinkmann
2013-09-05 16:53 ` Sören Brinkmann
2013-08-09 16:03 ` Enable arm_global_timer for Zynq brakes boot Sören Brinkmann
2013-08-09 16:03 ` Sören Brinkmann
2013-09-12 16:50 [PATCH 0/2] arm: zynq: Enable global timer Soren Brinkmann
2013-09-12 16:50 ` [PATCH 1/2] tick: broadcast: Deny per-cpu clockevents from being broadcast sources Soren Brinkmann
2013-09-12 16:50 ` Soren Brinkmann
2013-09-12 20:30 ` Thomas Gleixner
2013-09-12 20:30 ` Thomas Gleixner
2013-09-12 23:48 ` Sören Brinkmann
2013-09-12 23:48 ` Sören Brinkmann
2013-09-12 23:48 ` Sören Brinkmann
2013-09-13 14:45 ` Thomas Gleixner
2013-09-13 14:45 ` Thomas Gleixner
2013-09-13 14:45 ` Thomas Gleixner
2013-09-13 15:25 ` Sören Brinkmann
2013-09-13 15:25 ` Sören Brinkmann
2013-09-13 15:25 ` Sören Brinkmann
2013-09-13 8:25 ` Daniel Lezcano
2013-09-13 8:25 ` Daniel Lezcano
2013-09-13 8:25 ` Daniel Lezcano
[not found] ` <CAM4v1pPQwBfQ3V6M2VGsc-Fh+VhLkQE2JZeoVc=_3kniODNEhA@mail.gmail.com>
2013-09-13 10:39 ` Preeti U Murthy
2013-09-13 10:39 ` Preeti U Murthy
2013-09-13 10:39 ` Preeti U Murthy
2013-09-13 16:23 ` Sören Brinkmann
2013-09-13 16:23 ` Sören Brinkmann
2013-09-13 16:23 ` Sören Brinkmann
2013-09-14 0:23 ` Preeti U Murthy
2013-09-14 0:23 ` Preeti U Murthy
2013-09-14 0:23 ` Preeti U Murthy
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=1377191201-14696-1-git-send-email-sboyd@codeaurora.org \
--to=sboyd@codeaurora.org \
--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.