From: Paul Walmsley <paul@pwsan.com>
To: linux-omap@vger.kernel.org
Cc: Paul Walmsley <paul@pwsan.com>
Subject: [PATCH v2 22/23] OMAP2/3 clock: don't tinker with hardirqs when they are supposed to be disabled
Date: Sun, 04 Jan 2009 19:35:02 -0700 [thread overview]
Message-ID: <20090105023501.12661.21648.stgit@localhost.localdomain> (raw)
In-Reply-To: <20090105022953.12661.57701.stgit@localhost.localdomain>
Clock rate change code executes inside a spinlock with hardirqs
disabled. The only code that should be messing around with the
hardirq state should be the plat-omap/clock.c code. In the
omap2_reprogram_dpllcore() case, this probably just wastes cycles, but
in the omap3_core_dpll_m2_set_rate() case, this is a nasty bug.
Signed-off-by: Paul Walmsley <paul@pwsan.com>
---
arch/arm/mach-omap2/clock24xx.c | 12 +++---------
arch/arm/mach-omap2/clock34xx.c | 2 --
2 files changed, 3 insertions(+), 11 deletions(-)
diff --git a/arch/arm/mach-omap2/clock24xx.c b/arch/arm/mach-omap2/clock24xx.c
index 9e311aa..53864c0 100644
--- a/arch/arm/mach-omap2/clock24xx.c
+++ b/arch/arm/mach-omap2/clock24xx.c
@@ -220,10 +220,7 @@ static int omap2_reprogram_dpllcore(struct clk *clk, unsigned long rate)
u32 bypass = 0;
struct prcm_config tmpset;
const struct dpll_data *dd;
- unsigned long flags;
- int ret = -EINVAL;
- local_irq_save(flags);
cur_rate = omap2xxx_clk_get_core_rate(&dpll_ck, dpll_ck.parent->rate);
mult = cm_read_mod_reg(PLL_MOD, CM_CLKSEL2);
mult &= OMAP24XX_CORE_CLK_SRC_MASK;
@@ -235,7 +232,7 @@ static int omap2_reprogram_dpllcore(struct clk *clk, unsigned long rate)
} else if (rate != cur_rate) {
valid_rate = omap2_dpllcore_round_rate(rate);
if (valid_rate != rate)
- goto dpll_exit;
+ return -EINVAL;
if (mult == 1)
low = curr_prcm_set->dpll_speed;
@@ -244,7 +241,7 @@ static int omap2_reprogram_dpllcore(struct clk *clk, unsigned long rate)
dd = clk->dpll_data;
if (!dd)
- goto dpll_exit;
+ return -EINVAL;
tmpset.cm_clksel1_pll = cm_read_mod_reg(clk->prcm_mod,
dd->mult_div1_reg);
@@ -282,11 +279,8 @@ static int omap2_reprogram_dpllcore(struct clk *clk, unsigned long rate)
omap2xxx_sdrc_init_params(omap2xxx_sdrc_dll_is_unlocked());
omap2xxx_sdrc_reprogram(done_rate, 0);
}
- ret = 0;
-dpll_exit:
- local_irq_restore(flags);
- return(ret);
+ return 0;
}
/**
diff --git a/arch/arm/mach-omap2/clock34xx.c b/arch/arm/mach-omap2/clock34xx.c
index 824144e..f7ac5c1 100644
--- a/arch/arm/mach-omap2/clock34xx.c
+++ b/arch/arm/mach-omap2/clock34xx.c
@@ -491,10 +491,8 @@ static int omap3_core_dpll_m2_set_rate(struct clk *clk, unsigned long rate)
WARN_ON(new_div != 1 && new_div != 2);
/* REVISIT: Add SDRC_MR changing to this code also */
- local_irq_disable();
omap3_configure_core_dpll(sp->rfr_ctrl, sp->actim_ctrla,
sp->actim_ctrlb, new_div);
- local_irq_enable();
return 0;
}
next prev parent reply other threads:[~2009-01-05 3:23 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-05 2:34 [PATCH v2 00/23] OMAP clock: bug fixes, cleanup, optimization Paul Walmsley
2009-01-05 2:34 ` [PATCH v2 01/23] OMAP2/3 clock: use standard set_rate fn in omap2_clk_arch_init() Paul Walmsley
2009-01-05 2:34 ` [PATCH v2 02/23] OMAP clock: move rate recalc, propagation code up to plat-omap/clock.c Paul Walmsley
2009-01-05 2:34 ` [PATCH v2 03/23] OMAP2/3 clock: drop recalc function pointers from fixed rate clocks Paul Walmsley
2009-01-05 2:34 ` [PATCH v2 04/23] OMAP clock: support "dry run" rate and parent changes Paul Walmsley
2009-01-05 2:34 ` [PATCH v2 05/23] OMAP clock: track child clocks Paul Walmsley
2009-01-05 2:34 ` [PATCH v2 06/23] OMAP clock: drop the RATE_PROPAGATES flag Paul Walmsley
2009-01-05 2:34 ` [PATCH v2 07/23] OMAP clock: drop RATE_FIXED Paul Walmsley
2009-01-05 2:34 ` [PATCH v2 08/23] OMAP clock: remove VIRTUAL_CLOCK Paul Walmsley
2009-01-06 2:03 ` Kevin Hilman
2009-01-06 2:34 ` Paul Walmsley
2009-01-05 2:34 ` [PATCH v2 09/23] OMAP2 clock: drop CONFIG_PARTICIPANT clock flag Paul Walmsley
2009-01-05 2:34 ` [PATCH v2 10/23] OMAP2/3 clock: remove clk->owner Paul Walmsley
2009-01-05 2:34 ` [PATCH v2 12/23] OMAP2/3 clock: don't use a barrier after clk_disable() Paul Walmsley
2009-01-05 2:34 ` [PATCH v2 11/23] OMAP clock: rearrange clock.h structure order Paul Walmsley
2009-01-05 2:34 ` [PATCH v2 13/23] OMAP2xxx clock: consolidate DELAYED_APP clock commits; fix barrier Paul Walmsley
2009-01-05 2:34 ` [PATCH v2 14/23] OMAP2/3 clock: convert remaining MPU barriers into OCP barriers Paul Walmsley
2009-01-05 2:34 ` [PATCH v2 16/23] OMAP clock: add OMAP chip family-specific clk_register() option Paul Walmsley
2009-01-05 2:34 ` [PATCH v2 15/23] OMAP clock: drop clk_get_usecount() Paul Walmsley
2009-01-05 2:34 ` [PATCH v2 17/23] OMAP2/3 clock: every clock must have a clkdm Paul Walmsley
2009-01-05 2:34 ` [PATCH v2 18/23] OMAP2/3 clock: omap2_clk_enable(): refactor usecount check Paul Walmsley
2009-01-05 2:34 ` [PATCH v2 19/23] OMAP2/3 clock: omap2_clk_enable(): fix bugs in clockdomain handling Paul Walmsley
2009-01-05 2:35 ` [PATCH v2 20/23] OMAP2/3 clock: omap2_clk_enable(): fix usecount decrement bug Paul Walmsley
[not found] ` <2ee9e08d0901060342q36a5ebd2i448d87ba55bb034d@mail.gmail.com>
2009-01-06 11:43 ` Fwd: " Anuj Aggarwal
2009-01-05 2:35 ` [PATCH v2 21/23] OMAP2/3 clock: omap2_clk_enable(): fix logic Paul Walmsley
2009-01-05 2:35 ` Paul Walmsley [this message]
2009-01-05 2:35 ` [PATCH v2 23/23] OMAP3 SmartReflex: get rid of custom clocks Paul Walmsley
2009-01-07 15:46 ` [PATCH v2 00/23] OMAP clock: bug fixes, cleanup, optimization Tony Lindgren
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=20090105023501.12661.21648.stgit@localhost.localdomain \
--to=paul@pwsan.com \
--cc=linux-omap@vger.kernel.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.