<feed xmlns='http://www.w3.org/2005/Atom'>
<title>talos-op-linux/drivers/clk, branch v4.4.4</title>
<subtitle>Talos™ II Linux sources for OpenPOWER</subtitle>
<id>https://git.raptorcs.com/git/talos-op-linux/atom?h=v4.4.4</id>
<link rel='self' href='https://git.raptorcs.com/git/talos-op-linux/atom?h=v4.4.4'/>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-op-linux/'/>
<updated>2016-03-03T23:07:17+00:00</updated>
<entry>
<title>clk: exynos: use irqsave version of spin_lock to avoid deadlock with irqs</title>
<updated>2016-03-03T23:07:17+00:00</updated>
<author>
<name>Marek Szyprowski</name>
<email>m.szyprowski@samsung.com</email>
</author>
<published>2015-12-11T14:38:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-op-linux/commit/?id=7ca59689c947bda700e07fdea4d9e4f582601c68'/>
<id>urn:sha1:7ca59689c947bda700e07fdea4d9e4f582601c68</id>
<content type='text'>
commit 6b4feaea251a97bf08c7d41eabdec07f63a11073 upstream.

It is allowed to enable/disable clocks from interrupts, so common Exynos
ARM clock management code for CPUfreq should use 'irqsave' version of
spin_lock calls to avoid potential deadlock caused by spin_lock recursion.
The same spin_lock is used by gate/mux clocks during enable/disable calls.

This deadlock, can be reproduced by enabling CPUfreq (ondemand or
userspace) and decoding video with s5p-mfc driver.

Relevant stack trace:
[ 5928.061534] BUG: spinlock recursion on CPU#0, bash/1252
[ 5928.061609]  lock: 0xee80454c, .magic: dead4ead, .owner: bash/1252, .owner_cpu: 0
[ 5928.068586] CPU: 0 PID: 1252 Comm: bash Tainted: G        W       4.4.0-rc4-00001-g447a7fd #678
[ 5928.077260] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
[ 5928.083359] [&lt;c00153dc&gt;] (unwind_backtrace) from [&lt;c00121b4&gt;] (show_stack+0x10/0x14)
[ 5928.091072] [&lt;c00121b4&gt;] (show_stack) from [&lt;c0213e28&gt;] (dump_stack+0x68/0xb8)
[ 5928.098275] [&lt;c0213e28&gt;] (dump_stack) from [&lt;c005c1ec&gt;] (do_raw_spin_lock+0x184/0x1ac)
[ 5928.106177] [&lt;c005c1ec&gt;] (do_raw_spin_lock) from [&lt;c05cfa98&gt;] (_raw_spin_lock_irqsave+0x20/0x28)
[ 5928.114943] [&lt;c05cfa98&gt;] (_raw_spin_lock_irqsave) from [&lt;c0468698&gt;] (clk_gate_endisable+0x24/0x98)
[ 5928.123882] [&lt;c0468698&gt;] (clk_gate_endisable) from [&lt;c0464d40&gt;] (clk_core_disable+0x60/0x84)
[ 5928.132299] [&lt;c0464d40&gt;] (clk_core_disable) from [&lt;c0465e00&gt;] (clk_disable+0x24/0x30)
[ 5928.140117] [&lt;c0465e00&gt;] (clk_disable) from [&lt;c03f3b80&gt;] (s5p_mfc_handle_frame+0x254/0x860)
[ 5928.148445] [&lt;c03f3b80&gt;] (s5p_mfc_handle_frame) from [&lt;c03f4b34&gt;] (s5p_mfc_irq+0x890/0xa24)
[ 5928.156778] [&lt;c03f4b34&gt;] (s5p_mfc_irq) from [&lt;c00627bc&gt;] (handle_irq_event_percpu+0x50/0x14c)
[ 5928.165283] [&lt;c00627bc&gt;] (handle_irq_event_percpu) from [&lt;c00628f0&gt;] (handle_irq_event+0x38/0x5c)
[ 5928.174143] [&lt;c00628f0&gt;] (handle_irq_event) from [&lt;c0065864&gt;] (handle_fasteoi_irq+0xdc/0x1a4)
[ 5928.182645] [&lt;c0065864&gt;] (handle_fasteoi_irq) from [&lt;c0062090&gt;] (generic_handle_irq+0x18/0x28)
[ 5928.191236] [&lt;c0062090&gt;] (generic_handle_irq) from [&lt;c00621a4&gt;] (__handle_domain_irq+0x6c/0xdc)
[ 5928.199917] [&lt;c00621a4&gt;] (__handle_domain_irq) from [&lt;c0009470&gt;] (gic_handle_irq+0x4c/0x98)
[ 5928.208249] [&lt;c0009470&gt;] (gic_handle_irq) from [&lt;c0012c54&gt;] (__irq_svc+0x54/0x90)
[ 5928.215709] Exception stack(0xeddb5cb8 to 0xeddb5d00)
[ 5928.220745] 5ca0:                                                       ee80454c faddfadc
[ 5928.228906] 5cc0: 00000000 01000001 ee831ce0 f8114200 ee807c00 01130520 00000403 eddb5d84
[ 5928.237063] 5ce0: ee807c48 2faf0800 ee807c0c eddb5d08 c046b618 c046b634 20000053 ffffffff
[ 5928.245225] [&lt;c0012c54&gt;] (__irq_svc) from [&lt;c046b634&gt;] (exynos_cpuclk_notifier_cb+0x170/0x270)
[ 5928.253823] [&lt;c046b634&gt;] (exynos_cpuclk_notifier_cb) from [&lt;c003cb58&gt;] (notifier_call_chain+0x44/0x84)
[ 5928.263106] [&lt;c003cb58&gt;] (notifier_call_chain) from [&lt;c003ccd4&gt;] (__srcu_notifier_call_chain+0x6c/0x9c)
[ 5928.272480] [&lt;c003ccd4&gt;] (__srcu_notifier_call_chain) from [&lt;c003cd1c&gt;] (srcu_notifier_call_chain+0x18/0x20)
[ 5928.282288] [&lt;c003cd1c&gt;] (srcu_notifier_call_chain) from [&lt;c0464ed0&gt;] (__clk_notify+0x6c/0x74)
[ 5928.290881] [&lt;c0464ed0&gt;] (__clk_notify) from [&lt;c0465388&gt;] (clk_propagate_rate_change+0xa0/0xac)
[ 5928.299561] [&lt;c0465388&gt;] (clk_propagate_rate_change) from [&lt;c0465378&gt;] (clk_propagate_rate_change+0x90/0xac)
[ 5928.309370] [&lt;c0465378&gt;] (clk_propagate_rate_change) from [&lt;c04666fc&gt;] (clk_core_set_rate_nolock+0x64/0xa8)
[ 5928.319091] [&lt;c04666fc&gt;] (clk_core_set_rate_nolock) from [&lt;c0466760&gt;] (clk_set_rate+0x20/0x30)
[ 5928.327686] [&lt;c0466760&gt;] (clk_set_rate) from [&lt;c0428c70&gt;] (set_target+0xe8/0x23c)
[ 5928.335152] [&lt;c0428c70&gt;] (set_target) from [&lt;c04244d0&gt;] (__cpufreq_driver_target+0x184/0x29c)
[ 5928.343655] [&lt;c04244d0&gt;] (__cpufreq_driver_target) from [&lt;c0427128&gt;] (cpufreq_set+0x44/0x64)
[ 5928.352074] [&lt;c0427128&gt;] (cpufreq_set) from [&lt;c0423948&gt;] (store_scaling_setspeed+0x5c/0x74)
[ 5928.360407] [&lt;c0423948&gt;] (store_scaling_setspeed) from [&lt;c04238d0&gt;] (store+0x7c/0x98)
[ 5928.368221] [&lt;c04238d0&gt;] (store) from [&lt;c0132540&gt;] (sysfs_kf_write+0x44/0x48)
[ 5928.375338] [&lt;c0132540&gt;] (sysfs_kf_write) from [&lt;c0131b9c&gt;] (kernfs_fop_write+0xb8/0x1bc)
[ 5928.383496] [&lt;c0131b9c&gt;] (kernfs_fop_write) from [&lt;c00d71f8&gt;] (__vfs_write+0x2c/0xd4)
[ 5928.391308] [&lt;c00d71f8&gt;] (__vfs_write) from [&lt;c00d7de8&gt;] (vfs_write+0xa0/0x144)
[ 5928.398598] [&lt;c00d7de8&gt;] (vfs_write) from [&lt;c00d8048&gt;] (SyS_write+0x44/0x84)
[ 5928.405631] [&lt;c00d8048&gt;] (SyS_write) from [&lt;c000f540&gt;] (ret_fast_syscall+0x0/0x3c)

Signed-off-by: Marek Szyprowski &lt;m.szyprowski@samsung.com&gt;
Signed-off-by: Sylwester Nawrocki &lt;s.nawrocki@samsung.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc</title>
<updated>2015-12-13T00:43:44+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2015-12-13T00:43:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-op-linux/commit/?id=097b285d32c7cb22dd4af2286ba61668a6c367ef'/>
<id>urn:sha1:097b285d32c7cb22dd4af2286ba61668a6c367ef</id>
<content type='text'>
Pull ARM SoC fixes from Arnd Bergmann:
 "Here are a bunch of small bug fixes for various ARM platforms, nothing
  really sticks out this week, most of either fixes bugs in code that
  was just added in 4.4, or that has been broken for many years without
  anyone noticing.

  at91/sama5d2:
   - fix sama5de hardware setup of sd/mmc interface
   - proper selection of pinctrl drivers.  PIO4 is necessary for sama5d2

  berlin:
   - fix incorrect clock input for SDIO

  exynos:
   - Fix potential NULL pointer dereference in Exynos PMU driver.

  imx:
   - Fix vf610 SAI clock configuration bug which is discovered by the
     newly added master mode support in SAI audio driver.
   - Fix buggy L2 cache latency values in vf610 device trees, which may
     cause system hang when cpu runs at a higher frequency.

  ixp4xx:
   - fix prototypes for readl/writel functions

  ls2080a:
   - use little-endian register access for GPIO and SDHCI

  omap:
   - Fix clock source for ARM TWD and global timers on am437x
   - Always select REGULATOR_FIXED_VOLTAGE for omap2+ instead of when
     MACH_OMAP3_PANDORA is selected
   - Fix SPI DMA handles for dm816x as only some were mapped
   - Fix up mbox cells for dm816x to make mailbox usable

  pxa:
   - use PWM lookup table for all ezx machines

  s3c24xx:
   - Remove incorrect __init annotation from s3c24xx cpufreq driver
     structures.

  versatile:
   - fix PCI IRQ mapping on Versatile PB"

* tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
  ls2080a/dts: Add little endian property for GPIO IP block
  dt-bindings: define little-endian property for QorIQ GPIO
  ARM64: dts: ls2080a: fix eSDHC endianness
  ARM: dts: vf610: use reset values for L2 cache latencies
  ARM: pxa: use PWM lookup table for all machines
  ARM: dts: berlin: add 2nd clock for BG2Q sdhci0 and sdhci1
  ARM: dts: berlin: correct BG2Q's sdhci2 2nd clock
  ARM: dts: am4372: fix clock source for arm twd and global timers
  ARM: at91: fix pinctrl driver selection
  ARM: at91/dt: add always-on to 1.8V regulator
  ARM: dts: vf610: fix clock definition for SAI2
  ARM: imx: clk-vf610: fix SAI clock tree
  ARM: ixp4xx: fix read{b,w,l} return types
  irqchip/versatile-fpga: Fix PCI IRQ mapping on Versatile PB
  ARM: OMAP2+: enable REGULATOR_FIXED_VOLTAGE
  ARM: dts: add dm816x missing spi DT dma handles
  ARM: dts: add dm816x missing #mbox-cells
  cpufreq: s3c24xx: Do not mark s3c2410_plls_add as __init
  ARM: EXYNOS: Fix potential NULL pointer access in exynos_sys_powerdown_conf
</content>
</entry>
<entry>
<title>clk: sunxi: pll2: Fix clock running too fast</title>
<updated>2015-12-03T07:27:47+00:00</updated>
<author>
<name>Maxime Ripard</name>
<email>maxime.ripard@free-electrons.com</email>
</author>
<published>2015-12-01T11:14:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-op-linux/commit/?id=59f0ec231f397001801264063db3b6dcc3eef590'/>
<id>urn:sha1:59f0ec231f397001801264063db3b6dcc3eef590</id>
<content type='text'>
Contrary to what the datasheet says, the pre divider doesn't seem to be
incremented by one in the PLL2, but just uses the value from the register,
with 0 being a bypass.

This fixes the audio playing too fast.

Since we now have the same pre-divider flags, and the only difference with
the A10 is the post-divider offset, also remove the structure to just pass
the offset as an argument.

Signed-off-by: Maxime Ripard &lt;maxime.ripard@free-electrons.com&gt;
Fixes: eb662f854710 ("clk: sunxi: pll2: Add A13 support")
Signed-off-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
</content>
</entry>
<entry>
<title>ARM: imx: clk-vf610: fix SAI clock tree</title>
<updated>2015-12-02T01:46:26+00:00</updated>
<author>
<name>Stefan Agner</name>
<email>stefan@agner.ch</email>
</author>
<published>2015-10-18T04:05:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-op-linux/commit/?id=3b60a26fdc3b32c00d750458df33d414e8f924ce'/>
<id>urn:sha1:3b60a26fdc3b32c00d750458df33d414e8f924ce</id>
<content type='text'>
The Synchronous Audio Interface (SAI) instances are clocked by
independent clocks: The bus clock and the audio clock (as shown in
Figure 51-1 in the Vybrid Reference Manual). The clock gates in
CCGR0/CCGR1 for SAI0 through SAI3 are bus clock gates, as access
tests to the registers with/without gating those clocks have shown.
The audio clock is gated by the SAIx_EN gates in CCM_CSCDR1,
followed by a clock divider (SAIx_DIV). Currently, the parent of
the bus clock gates has been assigned to SAIx_DIV, which is not
involved in the bus clock path for the SAI instances (see chapter
9.10.12, SAI clocking in the Vybrid Reference Manual).

Fix this by define the parent clock of VF610_CLK_SAIx to be the bus
clock.

If the driver needs the audio clock (when used in master mode), a
fixed device tree is required which assign the audio clock properly
to VF610_CLK_SAIx_DIV.

Signed-off-by: Stefan Agner &lt;stefan@agner.ch&gt;
Acked-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Signed-off-by: Shawn Guo &lt;shawnguo@kernel.org&gt;
</content>
</entry>
<entry>
<title>clk: scpi: add missing of_node_put</title>
<updated>2015-12-01T00:29:15+00:00</updated>
<author>
<name>Julia Lawall</name>
<email>Julia.Lawall@lip6.fr</email>
</author>
<published>2015-10-21T20:41:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-op-linux/commit/?id=e80cf2e50bfabb14dd3667b2360a393dda3edc3f'/>
<id>urn:sha1:e80cf2e50bfabb14dd3667b2360a393dda3edc3f</id>
<content type='text'>
for_each_available_child_of_node performs an of_node_get on each iteration,
so a break out of the loop requires an of_node_put.

The semantic patch that fixes this problem is as follows
(http://coccinelle.lip6.fr):

// &lt;smpl&gt;
@@
expression root,e;
local idexpression child;
@@

 for_each_available_child_of_node(root, child) {
   ... when != of_node_put(child)
       when != e = child
(
   return child;
|
+  of_node_put(child);
?  return ...;
)
   ...
 }
// &lt;/smpl&gt;

Signed-off-by: Julia Lawall &lt;Julia.Lawall@lip6.fr&gt;
Acked-by: Sudeep Holla &lt;sudeep.holla@arm.com&gt;
Signed-off-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
</content>
</entry>
<entry>
<title>clk: qoriq: fix memory leak</title>
<updated>2015-11-30T21:00:54+00:00</updated>
<author>
<name>Sudip Mukherjee</name>
<email>sudipm.mukherjee@gmail.com</email>
</author>
<published>2015-11-23T10:06:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-op-linux/commit/?id=279104e3ade92b38198fdaead9e84bd80057693a'/>
<id>urn:sha1:279104e3ade92b38198fdaead9e84bd80057693a</id>
<content type='text'>
If get_pll_div() fails we exited by returning NULL but we missed
releasing hwc.

Signed-off-by: Sudip Mukherjee &lt;sudip@vectorindia.org&gt;
Fixes: 0dfc86b3173f ("clk: qoriq: Move chip-specific knowledge into driver")
Signed-off-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
</content>
</entry>
<entry>
<title>imx/clk-pllv2: fix wrong do_div() usage</title>
<updated>2015-11-30T20:58:38+00:00</updated>
<author>
<name>Nicolas Pitre</name>
<email>nicolas.pitre@linaro.org</email>
</author>
<published>2015-11-04T01:01:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-op-linux/commit/?id=0d2681e1f19162e5975b70edd0c2d1d256f38023'/>
<id>urn:sha1:0d2681e1f19162e5975b70edd0c2d1d256f38023</id>
<content type='text'>
do_div() is meant to be used with an unsigned dividend.

Signed-off-by: Nicolas Pitre &lt;nico@linaro.org&gt;
Acked-by: Shawn Guo &lt;shawnguo@kernel.org&gt;
Signed-off-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
</content>
</entry>
<entry>
<title>imx/clk-pllv1: fix wrong do_div() usage</title>
<updated>2015-11-30T20:58:35+00:00</updated>
<author>
<name>Nicolas Pitre</name>
<email>nicolas.pitre@linaro.org</email>
</author>
<published>2015-11-04T00:46:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-op-linux/commit/?id=741e96e8790cbd389d27e29bbf66de2c691fd775'/>
<id>urn:sha1:741e96e8790cbd389d27e29bbf66de2c691fd775</id>
<content type='text'>
do_div() is meant to be used with an unsigned dividend.

Signed-off-by: Nicolas Pitre &lt;nico@linaro.org&gt;
Acked-by: Shawn Guo &lt;shawnguo@kernel.org&gt;
Signed-off-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
</content>
</entry>
<entry>
<title>Merge branch 'for-4.4-rc/ti-clk-fixes' of https://github.com/t-kristo/linux-pm into clk-fixes</title>
<updated>2015-11-30T20:32:03+00:00</updated>
<author>
<name>Stephen Boyd</name>
<email>sboyd@codeaurora.org</email>
</author>
<published>2015-11-30T20:32:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-op-linux/commit/?id=c6bb9cece632f4cad804b3b574364bb68a4c363b'/>
<id>urn:sha1:c6bb9cece632f4cad804b3b574364bb68a4c363b</id>
<content type='text'>
Pull TI clock driver fixes from Tero Kristo:

* 'for-4.4-rc/ti-clk-fixes' of https://github.com/t-kristo/linux-pm:
  clk: ti: drop locking code from mux/divider drivers
  clk: ti816x: Add missing dmtimer clkdev entries
  clk: ti: fapll: fix wrong do_div() usage
  clk: ti: clkt_dpll: fix wrong do_div() usage
</content>
</entry>
<entry>
<title>clk: mmp: add linux/clk.h includes</title>
<updated>2015-11-25T22:06:16+00:00</updated>
<author>
<name>Arnd Bergmann</name>
<email>arnd@arndb.de</email>
</author>
<published>2015-11-25T22:03:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-op-linux/commit/?id=c21ac06648a7a9985fa81a53ba3a65569a1de388'/>
<id>urn:sha1:c21ac06648a7a9985fa81a53ba3a65569a1de388</id>
<content type='text'>
The common clk implementation for MMP broke without anyone noticing
when we stopped including linux/clk.h from the clk-provider header.

This did not show up in the defconfig builds because those use the
legacy MMP clk drivers, and it did not show up in my randconfig tests
either because I was testing with my mmp multiplatform series
applied, which at some point gained the fixup.

This fixes the three broken files.

Signed-off-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Fixes: 61ae76563ec3 ("clk: Remove clk.h from clk-provider.h")
Signed-off-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
</content>
</entry>
</feed>
