On 10/10/2014 02:48 PM, Tomasz Figa wrote:
Hi G. B.,

Let's see...

On 10.10.2014 18:32, G. B. wrote:

[snip]


------------[ cut here ]------------
WARNING: CPU: 0 PID: 1 at drivers/clk/clk.c:926 __clk_enable+0x28/0x98()

                          ^ Note this             ^

Forgive me!  A _severe_ lack of comprehension on my part.
(Although, it has been said 'ignorance can be fixed')

Modules linked in:
CPU: 0 PID: 1 Comm: swapper Not tainted 3.14.19-ptx-master #21
[<c00134c8>] (unwind_backtrace) from [<c0011084>] (show_stack+0x10/0x14)
[<c0011084>] (show_stack) from [<c001c37c>]
(warn_slowpath_common+0x60/0x80) [<c001c37c>] (warn_slowpath_common) from
[<c001c3b4>]
(warn_slowpath_null+0x18/0
x1c)
[<c001c3b4>] (warn_slowpath_null) from [<c02a2be8>]
(__clk_enable+0x28/0x98) [<c02a2be8>] (__clk_enable) from [<c02a3084>]
(clk_enable+0x18/0x2c) [<c02a3084>] (clk_enable) from [<c0018a28>]
(s3c_adc_probe+0x12c/0x1a4) [<c0018a28>] (s3c_adc_probe) from [<c020f9ac>]
(platform_drv_probe+0x1c/0x4c)

As you pointed out, the problem manifests when s3c_adc_probe() is
calling clk_enable(). Now if you look at the warning message, it tells
you the location of the call to WARN(_ON) macro. Looking at the code,
you can find that it's because clk->prepare_count == 0, which means that
nobody called clk_prepare() on the clock before.

Ugh, my old nemesis, ...

Which reminds me of a story about a 'retired guy' being called back to work ... the punch line being 'knowing where to put the chalk mark ...'.

Looking at the ADC driver, this seems to be apparently true, as only
operations called on ADC clock are enables and disables. Apparently
nobody has used this driver since a long time and the issue went unnoticed.

As a fix, I'd suggest:

s/clk_enable/clk_prepare_enable/
s/clk_disable/clk_disable_unprepare/

in arch/arm/plat-samsung/adc.c, which should be fine for this particular

Ah! A nice breeze!

driver. (You can read-up more on CCF semantics in Documentation/ and/or
kerneldoc of CCF source files.)

My penance. No doubt. In the vernacular 'RTFM'; although knowing which 'FM' to read is, more often than not, the major portion of the battle.

Thank you wise sage!  Thank you!  I am not worthy .. I am not worthy ..

Bow.

Scrape.

Happily Grinning,
GB

Best regards,
Tomasz


Reply via email to