<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/clk, branch v3.14.35</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>clk: Don't try to use a struct clk* after it could have been freed</title>
<updated>2015-01-27T16:18:55+00:00</updated>
<author>
<name>Tomeu Vizoso</name>
<email>tomeu.vizoso@collabora.com</email>
</author>
<published>2014-12-02T07:54:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=d3bc0f5b485af25d9d314ec072ca0297cf58f6c0'/>
<id>d3bc0f5b485af25d9d314ec072ca0297cf58f6c0</id>
<content type='text'>
commit 10cdfe54dab034311c8e2fad9ba2dffbe616caa9 upstream.

As __clk_release could call kfree on clk and then we wouldn't have a safe way
of getting the module that owns the clock.

Signed-off-by: Tomeu Vizoso &lt;tomeu.vizoso@collabora.com&gt;
Fixes: fcb0ee6a3d33 ("clk: Implement clk_unregister")
Reviewed-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Signed-off-by: Michael Turquette &lt;mturquette@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 10cdfe54dab034311c8e2fad9ba2dffbe616caa9 upstream.

As __clk_release could call kfree on clk and then we wouldn't have a safe way
of getting the module that owns the clock.

Signed-off-by: Tomeu Vizoso &lt;tomeu.vizoso@collabora.com&gt;
Fixes: fcb0ee6a3d33 ("clk: Implement clk_unregister")
Reviewed-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Signed-off-by: Michael Turquette &lt;mturquette@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>clk: samsung: Fix double add of syscore ops after driver rebind</title>
<updated>2015-01-27T16:18:55+00:00</updated>
<author>
<name>Krzysztof Kozlowski</name>
<email>k.kozlowski@samsung.com</email>
</author>
<published>2014-11-26T14:24:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=f35509c3a16001ba8425c341ce3b0e8d0909c822'/>
<id>f35509c3a16001ba8425c341ce3b0e8d0909c822</id>
<content type='text'>
commit c31844ffdbd4e73a16c66e9d7df8ec290ab4b159 upstream.

During driver unbind the syscore ops were not unregistered which lead to
double add on syscore list:

$ echo "3810000.audss-clock-controller" &gt; /sys/bus/platform/drivers/exynos-audss-clk/unbind
$ echo "3810000.audss-clock-controller" &gt; /sys/bus/platform/drivers/exynos-audss-clk/bind
[ 1463.044061] ------------[ cut here ]------------
[ 1463.047255] WARNING: CPU: 0 PID: 1 at lib/list_debug.c:36 __list_add+0x8c/0xc0()
[ 1463.054613] list_add double add: new=c06e52c0, prev=c06e52c0, next=c06d5f84.
[ 1463.061625] Modules linked in:
[ 1463.064623] CPU: 0 PID: 1 Comm: bash Tainted: G        W      3.18.0-rc5-next-20141121-00005-ga8fab06eab42-dirty #1022
[ 1463.075338] [&lt;c0014e2c&gt;] (unwind_backtrace) from [&lt;c0011d80&gt;] (show_stack+0x10/0x14)
[ 1463.083046] [&lt;c0011d80&gt;] (show_stack) from [&lt;c048bb70&gt;] (dump_stack+0x70/0xbc)
[ 1463.090236] [&lt;c048bb70&gt;] (dump_stack) from [&lt;c00233d4&gt;] (warn_slowpath_common+0x74/0xb0)
[ 1463.098295] [&lt;c00233d4&gt;] (warn_slowpath_common) from [&lt;c00234a4&gt;] (warn_slowpath_fmt+0x30/0x40)
[ 1463.106962] [&lt;c00234a4&gt;] (warn_slowpath_fmt) from [&lt;c020fe80&gt;] (__list_add+0x8c/0xc0)
[ 1463.114760] [&lt;c020fe80&gt;] (__list_add) from [&lt;c0282094&gt;] (register_syscore_ops+0x30/0x3c)
[ 1463.122819] [&lt;c0282094&gt;] (register_syscore_ops) from [&lt;c0392f20&gt;] (exynos_audss_clk_probe+0x36c/0x460)
[ 1463.132091] [&lt;c0392f20&gt;] (exynos_audss_clk_probe) from [&lt;c0283084&gt;] (platform_drv_probe+0x48/0xa4)
[ 1463.141013] [&lt;c0283084&gt;] (platform_drv_probe) from [&lt;c0281a14&gt;] (driver_probe_device+0x13c/0x37c)
[ 1463.149852] [&lt;c0281a14&gt;] (driver_probe_device) from [&lt;c0280560&gt;] (bind_store+0x90/0xe0)
[ 1463.157822] [&lt;c0280560&gt;] (bind_store) from [&lt;c027fd10&gt;] (drv_attr_store+0x20/0x2c)
[ 1463.165363] [&lt;c027fd10&gt;] (drv_attr_store) from [&lt;c0143898&gt;] (sysfs_kf_write+0x4c/0x50)
[ 1463.173252] [&lt;c0143898&gt;] (sysfs_kf_write) from [&lt;c0142c80&gt;] (kernfs_fop_write+0xbc/0x198)
[ 1463.181395] [&lt;c0142c80&gt;] (kernfs_fop_write) from [&lt;c00e2be0&gt;] (vfs_write+0xa0/0x1a8)
[ 1463.189104] [&lt;c00e2be0&gt;] (vfs_write) from [&lt;c00e2f00&gt;] (SyS_write+0x40/0x8c)
[ 1463.196122] [&lt;c00e2f00&gt;] (SyS_write) from [&lt;c000f2a0&gt;] (ret_fast_syscall+0x0/0x48)
[ 1463.203655] ---[ end trace 08f6710c9bc8d8f3 ]---
[ 1463.208244] exynos-audss-clk 3810000.audss-clock-controller: setup completed

Signed-off-by: Krzysztof Kozlowski &lt;k.kozlowski@samsung.com&gt;
Fixes: 1241ef94ccc3 ("clk: samsung: register audio subsystem clocks using common clock framework")
Signed-off-by: Sylwester Nawrocki &lt;s.nawrocki@samsung.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit c31844ffdbd4e73a16c66e9d7df8ec290ab4b159 upstream.

During driver unbind the syscore ops were not unregistered which lead to
double add on syscore list:

$ echo "3810000.audss-clock-controller" &gt; /sys/bus/platform/drivers/exynos-audss-clk/unbind
$ echo "3810000.audss-clock-controller" &gt; /sys/bus/platform/drivers/exynos-audss-clk/bind
[ 1463.044061] ------------[ cut here ]------------
[ 1463.047255] WARNING: CPU: 0 PID: 1 at lib/list_debug.c:36 __list_add+0x8c/0xc0()
[ 1463.054613] list_add double add: new=c06e52c0, prev=c06e52c0, next=c06d5f84.
[ 1463.061625] Modules linked in:
[ 1463.064623] CPU: 0 PID: 1 Comm: bash Tainted: G        W      3.18.0-rc5-next-20141121-00005-ga8fab06eab42-dirty #1022
[ 1463.075338] [&lt;c0014e2c&gt;] (unwind_backtrace) from [&lt;c0011d80&gt;] (show_stack+0x10/0x14)
[ 1463.083046] [&lt;c0011d80&gt;] (show_stack) from [&lt;c048bb70&gt;] (dump_stack+0x70/0xbc)
[ 1463.090236] [&lt;c048bb70&gt;] (dump_stack) from [&lt;c00233d4&gt;] (warn_slowpath_common+0x74/0xb0)
[ 1463.098295] [&lt;c00233d4&gt;] (warn_slowpath_common) from [&lt;c00234a4&gt;] (warn_slowpath_fmt+0x30/0x40)
[ 1463.106962] [&lt;c00234a4&gt;] (warn_slowpath_fmt) from [&lt;c020fe80&gt;] (__list_add+0x8c/0xc0)
[ 1463.114760] [&lt;c020fe80&gt;] (__list_add) from [&lt;c0282094&gt;] (register_syscore_ops+0x30/0x3c)
[ 1463.122819] [&lt;c0282094&gt;] (register_syscore_ops) from [&lt;c0392f20&gt;] (exynos_audss_clk_probe+0x36c/0x460)
[ 1463.132091] [&lt;c0392f20&gt;] (exynos_audss_clk_probe) from [&lt;c0283084&gt;] (platform_drv_probe+0x48/0xa4)
[ 1463.141013] [&lt;c0283084&gt;] (platform_drv_probe) from [&lt;c0281a14&gt;] (driver_probe_device+0x13c/0x37c)
[ 1463.149852] [&lt;c0281a14&gt;] (driver_probe_device) from [&lt;c0280560&gt;] (bind_store+0x90/0xe0)
[ 1463.157822] [&lt;c0280560&gt;] (bind_store) from [&lt;c027fd10&gt;] (drv_attr_store+0x20/0x2c)
[ 1463.165363] [&lt;c027fd10&gt;] (drv_attr_store) from [&lt;c0143898&gt;] (sysfs_kf_write+0x4c/0x50)
[ 1463.173252] [&lt;c0143898&gt;] (sysfs_kf_write) from [&lt;c0142c80&gt;] (kernfs_fop_write+0xbc/0x198)
[ 1463.181395] [&lt;c0142c80&gt;] (kernfs_fop_write) from [&lt;c00e2be0&gt;] (vfs_write+0xa0/0x1a8)
[ 1463.189104] [&lt;c00e2be0&gt;] (vfs_write) from [&lt;c00e2f00&gt;] (SyS_write+0x40/0x8c)
[ 1463.196122] [&lt;c00e2f00&gt;] (SyS_write) from [&lt;c000f2a0&gt;] (ret_fast_syscall+0x0/0x48)
[ 1463.203655] ---[ end trace 08f6710c9bc8d8f3 ]---
[ 1463.208244] exynos-audss-clk 3810000.audss-clock-controller: setup completed

Signed-off-by: Krzysztof Kozlowski &lt;k.kozlowski@samsung.com&gt;
Fixes: 1241ef94ccc3 ("clk: samsung: register audio subsystem clocks using common clock framework")
Signed-off-by: Sylwester Nawrocki &lt;s.nawrocki@samsung.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>clk: qcom: mdp_lut_clk is a child of mdp_src</title>
<updated>2014-10-05T21:52:24+00:00</updated>
<author>
<name>Stephen Boyd</name>
<email>sboyd@codeaurora.org</email>
</author>
<published>2014-07-09T01:36:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=62336a52a98bd23ecf781331ee96c0c9dca79ce9'/>
<id>62336a52a98bd23ecf781331ee96c0c9dca79ce9</id>
<content type='text'>
commit f87dfcabc6f173cc811d185d33327f50a8c88399 upstream.

The mdp_lut_clk isn't a child of the mdp_clk. Instead it's the
child of the mdp_src clock. Fix it.

Fixes: 6d00b56fe "clk: qcom: Add support for MSM8960's multimedia clock controller (MMCC)"
Signed-off-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit f87dfcabc6f173cc811d185d33327f50a8c88399 upstream.

The mdp_lut_clk isn't a child of the mdp_clk. Instead it's the
child of the mdp_src clock. Fix it.

Fixes: 6d00b56fe "clk: qcom: Add support for MSM8960's multimedia clock controller (MMCC)"
Signed-off-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>clk: qcom: Fix MN frequency tables, parent map, and jpegd</title>
<updated>2014-10-05T21:52:24+00:00</updated>
<author>
<name>Stephen Boyd</name>
<email>sboyd@codeaurora.org</email>
</author>
<published>2014-07-09T01:36:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=4a6c0a1ad62f6005889558bb33c29da77ee95b7a'/>
<id>4a6c0a1ad62f6005889558bb33c29da77ee95b7a</id>
<content type='text'>
commit ff20783f7b9f35b29e768d8ecc7076c1ca1a60ca upstream.

Clocks that don't have a pre-divider don't list any pre-divider
in their frequency tables, but their tables are initialized using
aggregate initializers. Use tagged initializers so we properly
assign the m and n values for each frequency. Furthermore, the
mmcc_pxo_pll8_pll2_pll3 array improperly mapped the second
element to pll2 instead of pll8, causing the clock driver to
recalculate the wrong rate for any clocks using this array along
with a rate that uses pll2. Plus the .num_parents field is 3
instead of 4 so you can't even switch the parent to pll3. Finally
I noticed that the jpegd clock improperly indicates that the
pre-divider width is only 2, when it's actually 4 bits wide.

Fixes: 6d00b56fe "clk: qcom: Add support for MSM8960's multimedia clock controller (MMCC)"
Tested-by: Rob Clark &lt;robdclark@gmail.com&gt;
Signed-off-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit ff20783f7b9f35b29e768d8ecc7076c1ca1a60ca upstream.

Clocks that don't have a pre-divider don't list any pre-divider
in their frequency tables, but their tables are initialized using
aggregate initializers. Use tagged initializers so we properly
assign the m and n values for each frequency. Furthermore, the
mmcc_pxo_pll8_pll2_pll3 array improperly mapped the second
element to pll2 instead of pll8, causing the clock driver to
recalculate the wrong rate for any clocks using this array along
with a rate that uses pll2. Plus the .num_parents field is 3
instead of 4 so you can't even switch the parent to pll3. Finally
I noticed that the jpegd clock improperly indicates that the
pre-divider width is only 2, when it's actually 4 bits wide.

Fixes: 6d00b56fe "clk: qcom: Add support for MSM8960's multimedia clock controller (MMCC)"
Tested-by: Rob Clark &lt;robdclark@gmail.com&gt;
Signed-off-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>clk: prevent erronous parsing of children during rate change</title>
<updated>2014-10-05T21:52:24+00:00</updated>
<author>
<name>Tero Kristo</name>
<email>t-kristo@ti.com</email>
</author>
<published>2014-08-21T13:47:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ed7150a026415687de272a8c58e13af0dd269b35'/>
<id>ed7150a026415687de272a8c58e13af0dd269b35</id>
<content type='text'>
commit 067bb1741c27c8d3b74ac98c0b8fc12b31e67005 upstream.

In some cases, clocks can switch their parent with clk_set_rate, for
example clk_mux can do this in some cases. Current implementation of
clk_change_rate uses un-safe list iteration on the clock children, which
will cause wrong clocks to be parsed in case any of the clock children
change their parents during the change rate operation. Fixed by using
the safe list iterator instead.

The problem was detected due to some divide by zero errors generated
by clock init on dra7-evm board, see discussion under
http://article.gmane.org/gmane.linux.ports.arm.kernel/349180 for details.

Fixes: 71472c0c06cf ("clk: add support for clock reparent on set_rate")
Signed-off-by: Tero Kristo &lt;t-kristo@ti.com&gt;
Reported-by: Nishanth Menon &lt;nm@ti.com&gt;
Signed-off-by: Mike Turquette &lt;mturquette@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 067bb1741c27c8d3b74ac98c0b8fc12b31e67005 upstream.

In some cases, clocks can switch their parent with clk_set_rate, for
example clk_mux can do this in some cases. Current implementation of
clk_change_rate uses un-safe list iteration on the clock children, which
will cause wrong clocks to be parsed in case any of the clock children
change their parents during the change rate operation. Fixed by using
the safe list iterator instead.

The problem was detected due to some divide by zero errors generated
by clock init on dra7-evm board, see discussion under
http://article.gmane.org/gmane.linux.ports.arm.kernel/349180 for details.

Fixes: 71472c0c06cf ("clk: add support for clock reparent on set_rate")
Signed-off-by: Tero Kristo &lt;t-kristo@ti.com&gt;
Reported-by: Nishanth Menon &lt;nm@ti.com&gt;
Signed-off-by: Mike Turquette &lt;mturquette@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>clk: qcom: HDMI source sel is 3 not 2</title>
<updated>2014-07-17T23:21:05+00:00</updated>
<author>
<name>Stephen Boyd</name>
<email>sboyd@codeaurora.org</email>
</author>
<published>2014-06-25T21:44:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=041acf4fc62c98a0b345666542682be6944c9c89'/>
<id>041acf4fc62c98a0b345666542682be6944c9c89</id>
<content type='text'>
commit c556bcddc78096caeb46dbe3ad0314dd951f1665 upstream.

The HDMI PLL input to the tv mux is supposed to be 3, not 2. Fix
the code so that we can properly select the HDMI PLL.

Fixes: 6d00b56fe "clk: qcom: Add support for MSM8960's multimedia clock controller (MMCC)"
Reported-by: Rob Clark &lt;robdclark@gmail.com&gt;
Signed-off-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Signed-off-by: Mike Turquette &lt;mturquette@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit c556bcddc78096caeb46dbe3ad0314dd951f1665 upstream.

The HDMI PLL input to the tv mux is supposed to be 3, not 2. Fix
the code so that we can properly select the HDMI PLL.

Fixes: 6d00b56fe "clk: qcom: Add support for MSM8960's multimedia clock controller (MMCC)"
Reported-by: Rob Clark &lt;robdclark@gmail.com&gt;
Signed-off-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Signed-off-by: Mike Turquette &lt;mturquette@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>clk: s2mps11: Fix double free corruption during driver unbind</title>
<updated>2014-07-17T23:21:04+00:00</updated>
<author>
<name>Krzysztof Kozlowski</name>
<email>k.kozlowski@samsung.com</email>
</author>
<published>2014-06-27T12:21:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=22c9e299cc763c56608112a2d6659d27a9a760bb'/>
<id>22c9e299cc763c56608112a2d6659d27a9a760bb</id>
<content type='text'>
commit 2a96dfa49c83a2a7cbdb11382976aaa6b2636764 upstream.

After unbinding the driver memory was corrupted by double free of
clk_lookup structure. This lead to OOPS when re-binding the driver
again.

The driver allocated memory for 'clk_lookup' with devm_kzalloc. During
driver removal this memory was freed twice: once by clkdev_drop() and
second by devm code.

Kernel panic log:
[   30.839284] Unable to handle kernel paging request at virtual address 5f343173
[   30.846476] pgd = dee14000
[   30.849165] [5f343173] *pgd=00000000
[   30.852703] Internal error: Oops: 805 [#1] PREEMPT SMP ARM
[   30.858166] Modules linked in:
[   30.861208] CPU: 0 PID: 1 Comm: bash Not tainted 3.16.0-rc2-00239-g94bdf617b07e-dirty #40
[   30.869364] task: df478000 ti: df480000 task.ti: df480000
[   30.874752] PC is at clkdev_add+0x2c/0x38
[   30.878738] LR is at clkdev_add+0x18/0x38
[   30.882732] pc : [&lt;c0350908&gt;]    lr : [&lt;c03508f4&gt;]    psr: 60000013
[   30.882732] sp : df481e78  ip : 00000001  fp : c0700ed8
[   30.894187] r10: 0000000c  r9 : 00000000  r8 : c07b0e3c
[   30.899396] r7 : 00000002  r6 : df45f9d0  r5 : df421390  r4 : c0700d6c
[   30.905906] r3 : 5f343173  r2 : c0700d84  r1 : 60000013  r0 : c0700d6c
[   30.912417] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
[   30.919534] Control: 10c53c7d  Table: 5ee1406a  DAC: 00000015
[   30.925262] Process bash (pid: 1, stack limit = 0xdf480240)
[   30.930817] Stack: (0xdf481e78 to 0xdf482000)
[   30.935159] 1e60:                                                       00001000 df6de610
[   30.943321] 1e80: df7f4558 c0355650 c05ec6ec c0700eb0 df6de600 df7f4510 dec9d69c 00000014
[   30.951480] 1ea0: 00167b48 df6de610 c0700e30 c0713518 00000000 c0700e30 dec9d69c 00000006
[   30.959639] 1ec0: 00167b48 c02c1b7c c02c1b64 df6de610 c07aff48 c02c0420 c06fb150 c047cc20
[   30.967798] 1ee0: df6de610 df6de610 c0700e30 df6de644 c06fb150 0000000c dec9d690 c02bef90
[   30.975957] 1f00: dec9c6c0 dece4c00 df481f80 dece4c00 0000000c c02be73c 0000000c c016ca8c
[   30.984116] 1f20: c016ca48 00000000 00000000 c016c1f4 00000000 00000000 b6f18000 df481f80
[   30.992276] 1f40: df7f66c0 0000000c df480000 df480000 b6f18000 c011094c df47839c 60000013
[   31.000435] 1f60: 00000000 00000000 df7f66c0 df7f66c0 0000000c df480000 b6f18000 c0110dd4
[   31.008594] 1f80: 00000000 00000000 0000000c b6ec05d8 0000000c b6f18000 00000004 c000f2a8
[   31.016753] 1fa0: 00001000 c000f0e0 b6ec05d8 0000000c 00000001 b6f18000 0000000c 00000000
[   31.024912] 1fc0: b6ec05d8 0000000c b6f18000 00000004 0000000c 00000001 00000000 00167b48
[   31.033071] 1fe0: 00000000 bed83a80 b6e004f0 b6e5122c 60000010 00000001 ffffffff ffffffff
[   31.041248] [&lt;c0350908&gt;] (clkdev_add) from [&lt;c0355650&gt;] (s2mps11_clk_probe+0x2b4/0x3b4)
[   31.049223] [&lt;c0355650&gt;] (s2mps11_clk_probe) from [&lt;c02c1b7c&gt;] (platform_drv_probe+0x18/0x48)
[   31.057728] [&lt;c02c1b7c&gt;] (platform_drv_probe) from [&lt;c02c0420&gt;] (driver_probe_device+0x13c/0x384)
[   31.066579] [&lt;c02c0420&gt;] (driver_probe_device) from [&lt;c02bef90&gt;] (bind_store+0x88/0xd8)
[   31.074564] [&lt;c02bef90&gt;] (bind_store) from [&lt;c02be73c&gt;] (drv_attr_store+0x20/0x2c)
[   31.082118] [&lt;c02be73c&gt;] (drv_attr_store) from [&lt;c016ca8c&gt;] (sysfs_kf_write+0x44/0x48)
[   31.090016] [&lt;c016ca8c&gt;] (sysfs_kf_write) from [&lt;c016c1f4&gt;] (kernfs_fop_write+0xc0/0x17c)
[   31.098176] [&lt;c016c1f4&gt;] (kernfs_fop_write) from [&lt;c011094c&gt;] (vfs_write+0xa0/0x1c4)
[   31.105899] [&lt;c011094c&gt;] (vfs_write) from [&lt;c0110dd4&gt;] (SyS_write+0x40/0x8c)
[   31.112931] [&lt;c0110dd4&gt;] (SyS_write) from [&lt;c000f0e0&gt;] (ret_fast_syscall+0x0/0x3c)
[   31.120481] Code: e2842018 e584501c e1a00004 e885000c (e5835000)
[   31.126596] ---[ end trace efad45bfa3a61b05 ]---
[   31.131181] Kernel panic - not syncing: Fatal exception
[   31.136368] CPU1: stopping
[   31.139054] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G      D       3.16.0-rc2-00239-g94bdf617b07e-dirty #40
[   31.148697] [&lt;c0016480&gt;] (unwind_backtrace) from [&lt;c0012950&gt;] (show_stack+0x10/0x14)
[   31.156419] [&lt;c0012950&gt;] (show_stack) from [&lt;c0480db8&gt;] (dump_stack+0x80/0xcc)
[   31.163622] [&lt;c0480db8&gt;] (dump_stack) from [&lt;c001499c&gt;] (handle_IPI+0x130/0x15c)
[   31.170998] [&lt;c001499c&gt;] (handle_IPI) from [&lt;c000862c&gt;] (gic_handle_irq+0x60/0x68)
[   31.178549] [&lt;c000862c&gt;] (gic_handle_irq) from [&lt;c0013480&gt;] (__irq_svc+0x40/0x70)
[   31.186009] Exception stack(0xdf4bdf88 to 0xdf4bdfd0)
[   31.191046] df80:                   ffffffed 00000000 00000000 00000000 df4bc000 c06d042c
[   31.199207] dfa0: 00000000 ffffffed c06d03c0 00000000 c070c288 00000000 00000000 df4bdfd0
[   31.207363] dfc0: c0010324 c0010328 60000013 ffffffff
[   31.212402] [&lt;c0013480&gt;] (__irq_svc) from [&lt;c0010328&gt;] (arch_cpu_idle+0x28/0x30)
[   31.219783] [&lt;c0010328&gt;] (arch_cpu_idle) from [&lt;c005f150&gt;] (cpu_startup_entry+0x2c4/0x3f0)
[   31.228027] [&lt;c005f150&gt;] (cpu_startup_entry) from [&lt;400086c4&gt;] (0x400086c4)
[   31.234968] ---[ end Kernel panic - not syncing: Fatal exception

Fixes: 7cc560dea415 ("clk: s2mps11: Add support for s2mps11")
Signed-off-by: Krzysztof Kozlowski &lt;k.kozlowski@samsung.com&gt;
Reviewed-by: Yadwinder Singh Brar &lt;yadi.brar@samsung.com&gt;
Signed-off-by: Mike Turquette &lt;mturquette@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 2a96dfa49c83a2a7cbdb11382976aaa6b2636764 upstream.

After unbinding the driver memory was corrupted by double free of
clk_lookup structure. This lead to OOPS when re-binding the driver
again.

The driver allocated memory for 'clk_lookup' with devm_kzalloc. During
driver removal this memory was freed twice: once by clkdev_drop() and
second by devm code.

Kernel panic log:
[   30.839284] Unable to handle kernel paging request at virtual address 5f343173
[   30.846476] pgd = dee14000
[   30.849165] [5f343173] *pgd=00000000
[   30.852703] Internal error: Oops: 805 [#1] PREEMPT SMP ARM
[   30.858166] Modules linked in:
[   30.861208] CPU: 0 PID: 1 Comm: bash Not tainted 3.16.0-rc2-00239-g94bdf617b07e-dirty #40
[   30.869364] task: df478000 ti: df480000 task.ti: df480000
[   30.874752] PC is at clkdev_add+0x2c/0x38
[   30.878738] LR is at clkdev_add+0x18/0x38
[   30.882732] pc : [&lt;c0350908&gt;]    lr : [&lt;c03508f4&gt;]    psr: 60000013
[   30.882732] sp : df481e78  ip : 00000001  fp : c0700ed8
[   30.894187] r10: 0000000c  r9 : 00000000  r8 : c07b0e3c
[   30.899396] r7 : 00000002  r6 : df45f9d0  r5 : df421390  r4 : c0700d6c
[   30.905906] r3 : 5f343173  r2 : c0700d84  r1 : 60000013  r0 : c0700d6c
[   30.912417] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
[   30.919534] Control: 10c53c7d  Table: 5ee1406a  DAC: 00000015
[   30.925262] Process bash (pid: 1, stack limit = 0xdf480240)
[   30.930817] Stack: (0xdf481e78 to 0xdf482000)
[   30.935159] 1e60:                                                       00001000 df6de610
[   30.943321] 1e80: df7f4558 c0355650 c05ec6ec c0700eb0 df6de600 df7f4510 dec9d69c 00000014
[   30.951480] 1ea0: 00167b48 df6de610 c0700e30 c0713518 00000000 c0700e30 dec9d69c 00000006
[   30.959639] 1ec0: 00167b48 c02c1b7c c02c1b64 df6de610 c07aff48 c02c0420 c06fb150 c047cc20
[   30.967798] 1ee0: df6de610 df6de610 c0700e30 df6de644 c06fb150 0000000c dec9d690 c02bef90
[   30.975957] 1f00: dec9c6c0 dece4c00 df481f80 dece4c00 0000000c c02be73c 0000000c c016ca8c
[   30.984116] 1f20: c016ca48 00000000 00000000 c016c1f4 00000000 00000000 b6f18000 df481f80
[   30.992276] 1f40: df7f66c0 0000000c df480000 df480000 b6f18000 c011094c df47839c 60000013
[   31.000435] 1f60: 00000000 00000000 df7f66c0 df7f66c0 0000000c df480000 b6f18000 c0110dd4
[   31.008594] 1f80: 00000000 00000000 0000000c b6ec05d8 0000000c b6f18000 00000004 c000f2a8
[   31.016753] 1fa0: 00001000 c000f0e0 b6ec05d8 0000000c 00000001 b6f18000 0000000c 00000000
[   31.024912] 1fc0: b6ec05d8 0000000c b6f18000 00000004 0000000c 00000001 00000000 00167b48
[   31.033071] 1fe0: 00000000 bed83a80 b6e004f0 b6e5122c 60000010 00000001 ffffffff ffffffff
[   31.041248] [&lt;c0350908&gt;] (clkdev_add) from [&lt;c0355650&gt;] (s2mps11_clk_probe+0x2b4/0x3b4)
[   31.049223] [&lt;c0355650&gt;] (s2mps11_clk_probe) from [&lt;c02c1b7c&gt;] (platform_drv_probe+0x18/0x48)
[   31.057728] [&lt;c02c1b7c&gt;] (platform_drv_probe) from [&lt;c02c0420&gt;] (driver_probe_device+0x13c/0x384)
[   31.066579] [&lt;c02c0420&gt;] (driver_probe_device) from [&lt;c02bef90&gt;] (bind_store+0x88/0xd8)
[   31.074564] [&lt;c02bef90&gt;] (bind_store) from [&lt;c02be73c&gt;] (drv_attr_store+0x20/0x2c)
[   31.082118] [&lt;c02be73c&gt;] (drv_attr_store) from [&lt;c016ca8c&gt;] (sysfs_kf_write+0x44/0x48)
[   31.090016] [&lt;c016ca8c&gt;] (sysfs_kf_write) from [&lt;c016c1f4&gt;] (kernfs_fop_write+0xc0/0x17c)
[   31.098176] [&lt;c016c1f4&gt;] (kernfs_fop_write) from [&lt;c011094c&gt;] (vfs_write+0xa0/0x1c4)
[   31.105899] [&lt;c011094c&gt;] (vfs_write) from [&lt;c0110dd4&gt;] (SyS_write+0x40/0x8c)
[   31.112931] [&lt;c0110dd4&gt;] (SyS_write) from [&lt;c000f0e0&gt;] (ret_fast_syscall+0x0/0x3c)
[   31.120481] Code: e2842018 e584501c e1a00004 e885000c (e5835000)
[   31.126596] ---[ end trace efad45bfa3a61b05 ]---
[   31.131181] Kernel panic - not syncing: Fatal exception
[   31.136368] CPU1: stopping
[   31.139054] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G      D       3.16.0-rc2-00239-g94bdf617b07e-dirty #40
[   31.148697] [&lt;c0016480&gt;] (unwind_backtrace) from [&lt;c0012950&gt;] (show_stack+0x10/0x14)
[   31.156419] [&lt;c0012950&gt;] (show_stack) from [&lt;c0480db8&gt;] (dump_stack+0x80/0xcc)
[   31.163622] [&lt;c0480db8&gt;] (dump_stack) from [&lt;c001499c&gt;] (handle_IPI+0x130/0x15c)
[   31.170998] [&lt;c001499c&gt;] (handle_IPI) from [&lt;c000862c&gt;] (gic_handle_irq+0x60/0x68)
[   31.178549] [&lt;c000862c&gt;] (gic_handle_irq) from [&lt;c0013480&gt;] (__irq_svc+0x40/0x70)
[   31.186009] Exception stack(0xdf4bdf88 to 0xdf4bdfd0)
[   31.191046] df80:                   ffffffed 00000000 00000000 00000000 df4bc000 c06d042c
[   31.199207] dfa0: 00000000 ffffffed c06d03c0 00000000 c070c288 00000000 00000000 df4bdfd0
[   31.207363] dfc0: c0010324 c0010328 60000013 ffffffff
[   31.212402] [&lt;c0013480&gt;] (__irq_svc) from [&lt;c0010328&gt;] (arch_cpu_idle+0x28/0x30)
[   31.219783] [&lt;c0010328&gt;] (arch_cpu_idle) from [&lt;c005f150&gt;] (cpu_startup_entry+0x2c4/0x3f0)
[   31.228027] [&lt;c005f150&gt;] (cpu_startup_entry) from [&lt;400086c4&gt;] (0x400086c4)
[   31.234968] ---[ end Kernel panic - not syncing: Fatal exception

Fixes: 7cc560dea415 ("clk: s2mps11: Add support for s2mps11")
Signed-off-by: Krzysztof Kozlowski &lt;k.kozlowski@samsung.com&gt;
Reviewed-by: Yadwinder Singh Brar &lt;yadi.brar@samsung.com&gt;
Signed-off-by: Mike Turquette &lt;mturquette@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>clk: spear3xx: Use proper control register offset</title>
<updated>2014-07-17T23:21:04+00:00</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2014-06-19T21:52:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=8e3b505f6ccb1f45deb0b24a279d8e5bb6010ae5'/>
<id>8e3b505f6ccb1f45deb0b24a279d8e5bb6010ae5</id>
<content type='text'>
commit 15ebb05248d025534773c9ef64915bd888f04e4b upstream.

The control register is at offset 0x10, not 0x0. This is wreckaged
since commit 5df33a62c (SPEAr: Switch to common clock framework).

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Acked-by: Viresh Kumar &lt;viresh.kumar@linaro.org&gt;
Signed-off-by: Mike Turquette &lt;mturquette@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 15ebb05248d025534773c9ef64915bd888f04e4b upstream.

The control register is at offset 0x10, not 0x0. This is wreckaged
since commit 5df33a62c (SPEAr: Switch to common clock framework).

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Acked-by: Viresh Kumar &lt;viresh.kumar@linaro.org&gt;
Signed-off-by: Mike Turquette &lt;mturquette@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>clk: qcom: Fix mmcc-8974's PLL configurations</title>
<updated>2014-07-09T18:18:28+00:00</updated>
<author>
<name>Stephen Boyd</name>
<email>sboyd@codeaurora.org</email>
</author>
<published>2014-05-16T23:07:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=9e0126ef80c2c33f6ce8aeca9035e8baa6e7d3d0'/>
<id>9e0126ef80c2c33f6ce8aeca9035e8baa6e7d3d0</id>
<content type='text'>
commit 437ae6a1b8f2eedebfbf0f6572e19ca5c58a3f71 upstream.

We forgot to add the status bit for the PLLs and we were using
the wrong register and masks for configuration, leading to
unexpected PLL configurations. Fix this.

Fixes: d8b212014e69 (clk: qcom: Add support for MSM8974's multimedia clock controller (MMCC))
Signed-off-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Signed-off-by: Mike Turquette &lt;mturquette@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 437ae6a1b8f2eedebfbf0f6572e19ca5c58a3f71 upstream.

We forgot to add the status bit for the PLLs and we were using
the wrong register and masks for configuration, leading to
unexpected PLL configurations. Fix this.

Fixes: d8b212014e69 (clk: qcom: Add support for MSM8974's multimedia clock controller (MMCC))
Signed-off-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Signed-off-by: Mike Turquette &lt;mturquette@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>clk: qcom: Fix clk_rcg2_is_enabled() check</title>
<updated>2014-07-09T18:18:28+00:00</updated>
<author>
<name>Stephen Boyd</name>
<email>sboyd@codeaurora.org</email>
</author>
<published>2014-05-16T23:07:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ad40aceaec1b7ba8bd2716544db4bb55214177b7'/>
<id>ad40aceaec1b7ba8bd2716544db4bb55214177b7</id>
<content type='text'>
commit aa014149ba002155a084ec1e9328e95b70167cbb upstream.

If the bit is set the clock is off so we should be checking for
a clear bit, not a set bit. Invert the logic.

Fixes: bcd61c0f535a (clk: qcom: Add support for root clock generators (RCGs))
Signed-off-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Signed-off-by: Mike Turquette &lt;mturquette@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit aa014149ba002155a084ec1e9328e95b70167cbb upstream.

If the bit is set the clock is off so we should be checking for
a clear bit, not a set bit. Invert the logic.

Fixes: bcd61c0f535a (clk: qcom: Add support for root clock generators (RCGs))
Signed-off-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Signed-off-by: Mike Turquette &lt;mturquette@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
</feed>
