diff options
author | Stanley.Miao <stanley.miao@windriver.com> | 2009-01-29 08:57:12 -0800 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2009-01-29 08:57:12 -0800 |
commit | 06151158f2da4764479b4ec01688dc4bade6ce9d (patch) | |
tree | b78b3f2ccde6e3d49e9f35bad3352fbfd9a3eca2 /arch/arm/mach-shark | |
parent | 18e352e4a73465349711a9324767e1b2453383e2 (diff) | |
download | linux-06151158f2da4764479b4ec01688dc4bade6ce9d.tar.gz linux-06151158f2da4764479b4ec01688dc4bade6ce9d.tar.bz2 linux-06151158f2da4764479b4ec01688dc4bade6ce9d.zip |
ARM: OMAP: Fix McBSP spin_lock deadlock
A spin_lock deadlock will occur when omap_mcbsp_request() is invoked.
omap_mcbsp_request()
\- clk_enable(mcbsp->clk) [takes and holds clockfw_lock]
\- omap2_clk_enable()
\- _omap2_clk_enable()
\- omap_mcbsp_clk_enable()
\- clk_enable(child clock) [tries for clockfw_lock again]
mcbsp_clk is a virtual clock and it comprises several child clocks. when
enable mcbsp_clk in omap_mcbsp_request(), the enable function of mcbsp_clk
will enable its child clocks, then the deadlock occurs.
The solution is to remove the virtual clock and enable these child clocks in
omap_mcbsp_request() directly.
Signed-off-by: Stanley.Miao <stanley.miao@windriver.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-shark')
0 files changed, 0 insertions, 0 deletions