<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/drivers/base, branch v4.8.11</title>
<subtitle>Clone of https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git</subtitle>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/'/>
<entry>
<title>PM / sleep: don't suspend parent when async child suspend_{noirq, late} fails</title>
<updated>2016-11-26T08:56:57+00:00</updated>
<author>
<name>Brian Norris</name>
<email>briannorris@chromium.org</email>
</author>
<published>2016-11-10T01:21:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=4cba876de64d448b458dd271f49c0e6a80a639ce'/>
<id>4cba876de64d448b458dd271f49c0e6a80a639ce</id>
<content type='text'>
commit 6f75c3fd56daf547d684127a7f83c283c3c160d1 upstream.

Consider two devices, A and B, where B is a child of A, and B utilizes
asynchronous suspend (it does not matter whether A is sync or async). If
B fails to suspend_noirq() or suspend_late(), or is interrupted by a
wakeup (pm_wakeup_pending()), then it aborts and sets the async_error
variable. However, device A does not (immediately) check the async_error
variable; it may continue to run its own suspend_noirq()/suspend_late()
callback. This is bad.

We can resolve this problem by doing our error and wakeup checking
(particularly, for the async_error flag) after waiting for children to
suspend, instead of before. This also helps align the logic for the noirq and
late suspend cases with the logic in __device_suspend().

It's easy to observe this erroneous behavior by, for example, forcing a
device to sleep a bit in its suspend_noirq() (to ensure the parent is
waiting for the child to complete), then return an error, and watch the
parent suspend_noirq() still get called. (Or similarly, fake a wakeup
event at the right (or is it wrong?) time.)

Fixes: de377b397272 (PM / sleep: Asynchronous threads for suspend_late)
Fixes: 28b6fd6e3779 (PM / sleep: Asynchronous threads for suspend_noirq)
Reported-by: Jeffy Chen &lt;jeffy.chen@rock-chips.com&gt;
Signed-off-by: Brian Norris &lt;briannorris@chromium.org&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.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 6f75c3fd56daf547d684127a7f83c283c3c160d1 upstream.

Consider two devices, A and B, where B is a child of A, and B utilizes
asynchronous suspend (it does not matter whether A is sync or async). If
B fails to suspend_noirq() or suspend_late(), or is interrupted by a
wakeup (pm_wakeup_pending()), then it aborts and sets the async_error
variable. However, device A does not (immediately) check the async_error
variable; it may continue to run its own suspend_noirq()/suspend_late()
callback. This is bad.

We can resolve this problem by doing our error and wakeup checking
(particularly, for the async_error flag) after waiting for children to
suspend, instead of before. This also helps align the logic for the noirq and
late suspend cases with the logic in __device_suspend().

It's easy to observe this erroneous behavior by, for example, forcing a
device to sleep a bit in its suspend_noirq() (to ensure the parent is
waiting for the child to complete), then return an error, and watch the
parent suspend_noirq() still get called. (Or similarly, fake a wakeup
event at the right (or is it wrong?) time.)

Fixes: de377b397272 (PM / sleep: Asynchronous threads for suspend_late)
Fixes: 28b6fd6e3779 (PM / sleep: Asynchronous threads for suspend_noirq)
Reported-by: Jeffy Chen &lt;jeffy.chen@rock-chips.com&gt;
Signed-off-by: Brian Norris &lt;briannorris@chromium.org&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>platform: don't return 0 from platform_get_irq[_byname]() on error</title>
<updated>2016-10-28T07:45:19+00:00</updated>
<author>
<name>Sergei Shtylyov</name>
<email>sergei.shtylyov@cogentembedded.com</email>
</author>
<published>2016-07-03T22:04:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=33fe037cdcac990dffabac804982c9f2e1551888'/>
<id>33fe037cdcac990dffabac804982c9f2e1551888</id>
<content type='text'>
commit e330b9a6bb35dc7097a4f02cb1ae7b6f96df92af upstream.

of_irq_get[_byname]() return 0 iff  irq_create_of_mapping() call fails.
Returning both  error code and 0 on failure is a sign of a misdesigned API,
it makes the failure check unnecessarily complex and error prone. We should
rely  on the platform IRQ resource in this case, not return 0,  especially
as 0 can be  a valid  IRQ resource too...

Fixes: aff008ad813c ("platform_get_irq: Revert to platform_get_resource if of_irq_get fails")
Signed-off-by: Sergei Shtylyov &lt;sergei.shtylyov@cogentembedded.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 e330b9a6bb35dc7097a4f02cb1ae7b6f96df92af upstream.

of_irq_get[_byname]() return 0 iff  irq_create_of_mapping() call fails.
Returning both  error code and 0 on failure is a sign of a misdesigned API,
it makes the failure check unnecessarily complex and error prone. We should
rely  on the platform IRQ resource in this case, not return 0,  especially
as 0 can be  a valid  IRQ resource too...

Fixes: aff008ad813c ("platform_get_irq: Revert to platform_get_resource if of_irq_get fails")
Signed-off-by: Sergei Shtylyov &lt;sergei.shtylyov@cogentembedded.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>drivers: base: dma-mapping: page align the size when unmap_kernel_range</title>
<updated>2016-10-22T10:40:22+00:00</updated>
<author>
<name>Peng Fan</name>
<email>van.freenix@gmail.com</email>
</author>
<published>2016-07-21T08:04:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=9ae3f9e11d894b7f3b55ea065e7223a9fa90d34d'/>
<id>9ae3f9e11d894b7f3b55ea065e7223a9fa90d34d</id>
<content type='text'>
commit 85714108e673cdebf1b96abfd50fb02a29e37577 upstream.

When dma_common_free_remap, the input parameter 'size' may not
be page aligned. And, met kernel warning when doing iommu dma
for usb on i.MX8 platform:
"
WARNING: CPU: 0 PID: 869 at mm/vmalloc.c:70 vunmap_page_range+0x1cc/0x1d0()
Modules linked in:
CPU: 0 PID: 869 Comm: kworker/u8:2 Not tainted 4.1.12-00444-gc5f9d1d-dirty #147
Hardware name: Freescale i.MX8DV Sabreauto (DT)
Workqueue: ci_otg ci_otg_work
Call trace:
[&lt;ffffffc000089920&gt;] dump_backtrace+0x0/0x124
[&lt;ffffffc000089a54&gt;] show_stack+0x10/0x1c
[&lt;ffffffc0006d1e6c&gt;] dump_stack+0x84/0xc8
[&lt;ffffffc0000b4568&gt;] warn_slowpath_common+0x98/0xd0
[&lt;ffffffc0000b4664&gt;] warn_slowpath_null+0x14/0x20
[&lt;ffffffc000170348&gt;] vunmap_page_range+0x1c8/0x1d0
[&lt;ffffffc000170388&gt;] unmap_kernel_range+0x20/0x88
[&lt;ffffffc000460ad0&gt;] dma_common_free_remap+0x74/0x84
[&lt;ffffffc0000940d8&gt;] __iommu_free_attrs+0x9c/0x178
[&lt;ffffffc0005032bc&gt;] ehci_mem_cleanup+0x140/0x194
[&lt;ffffffc000503548&gt;] ehci_stop+0x8c/0xdc
[&lt;ffffffc0004e8258&gt;] usb_remove_hcd+0xf0/0x1cc
[&lt;ffffffc000516bc0&gt;] host_stop+0x1c/0x58
[&lt;ffffffc000514240&gt;] ci_otg_work+0xdc/0x120
[&lt;ffffffc0000c9c34&gt;] process_one_work+0x134/0x33c
[&lt;ffffffc0000c9f78&gt;] worker_thread+0x13c/0x47c
[&lt;ffffffc0000cf43c&gt;] kthread+0xd8/0xf0
"

For dma_common_pages_remap:
dma_common_pages_remap
   |-&gt;get_vm_area_caller
        |-&gt;__get_vm_area_node
            |-&gt;size = PAGE_ALIGN(size);   Round up to page aligned

So, in dma_common_free_remap, we also need a page aligned size,
pass 'PAGE_ALIGN(size)' to unmap_kernel_range.

Signed-off-by: Peng Fan &lt;van.freenix@gmail.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 85714108e673cdebf1b96abfd50fb02a29e37577 upstream.

When dma_common_free_remap, the input parameter 'size' may not
be page aligned. And, met kernel warning when doing iommu dma
for usb on i.MX8 platform:
"
WARNING: CPU: 0 PID: 869 at mm/vmalloc.c:70 vunmap_page_range+0x1cc/0x1d0()
Modules linked in:
CPU: 0 PID: 869 Comm: kworker/u8:2 Not tainted 4.1.12-00444-gc5f9d1d-dirty #147
Hardware name: Freescale i.MX8DV Sabreauto (DT)
Workqueue: ci_otg ci_otg_work
Call trace:
[&lt;ffffffc000089920&gt;] dump_backtrace+0x0/0x124
[&lt;ffffffc000089a54&gt;] show_stack+0x10/0x1c
[&lt;ffffffc0006d1e6c&gt;] dump_stack+0x84/0xc8
[&lt;ffffffc0000b4568&gt;] warn_slowpath_common+0x98/0xd0
[&lt;ffffffc0000b4664&gt;] warn_slowpath_null+0x14/0x20
[&lt;ffffffc000170348&gt;] vunmap_page_range+0x1c8/0x1d0
[&lt;ffffffc000170388&gt;] unmap_kernel_range+0x20/0x88
[&lt;ffffffc000460ad0&gt;] dma_common_free_remap+0x74/0x84
[&lt;ffffffc0000940d8&gt;] __iommu_free_attrs+0x9c/0x178
[&lt;ffffffc0005032bc&gt;] ehci_mem_cleanup+0x140/0x194
[&lt;ffffffc000503548&gt;] ehci_stop+0x8c/0xdc
[&lt;ffffffc0004e8258&gt;] usb_remove_hcd+0xf0/0x1cc
[&lt;ffffffc000516bc0&gt;] host_stop+0x1c/0x58
[&lt;ffffffc000514240&gt;] ci_otg_work+0xdc/0x120
[&lt;ffffffc0000c9c34&gt;] process_one_work+0x134/0x33c
[&lt;ffffffc0000c9f78&gt;] worker_thread+0x13c/0x47c
[&lt;ffffffc0000cf43c&gt;] kthread+0xd8/0xf0
"

For dma_common_pages_remap:
dma_common_pages_remap
   |-&gt;get_vm_area_caller
        |-&gt;__get_vm_area_node
            |-&gt;size = PAGE_ALIGN(size);   Round up to page aligned

So, in dma_common_free_remap, we also need a page aligned size,
pass 'PAGE_ALIGN(size)' to unmap_kernel_range.

Signed-off-by: Peng Fan &lt;van.freenix@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'regmap-fix-v4.8-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap</title>
<updated>2016-09-23T18:50:49+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2016-09-23T18:50:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=78bbf153fa96e5e40234b7b05567602535645460'/>
<id>78bbf153fa96e5e40234b7b05567602535645460</id>
<content type='text'>
Pull regmap fix from Mark Brown:
 "A fix for an issue with double locking that was introduced earlier
  this release.  I'd missed in review that we were already in a locked
  region when trying to drop part of the cache"

* tag 'regmap-fix-v4.8-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap:
  regmap: fix deadlock on _regmap_raw_write() error path
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull regmap fix from Mark Brown:
 "A fix for an issue with double locking that was introduced earlier
  this release.  I'd missed in review that we were already in a locked
  region when trying to drop part of the cache"

* tag 'regmap-fix-v4.8-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap:
  regmap: fix deadlock on _regmap_raw_write() error path
</pre>
</div>
</content>
</entry>
<entry>
<title>regmap: fix deadlock on _regmap_raw_write() error path</title>
<updated>2016-09-22T10:24:22+00:00</updated>
<author>
<name>Nikita Yushchenko</name>
<email>nikita.yoush@cogentembedded.com</email>
</author>
<published>2016-09-22T09:02:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=f0aa1ce6259eb65f53f969b3250c1d0aac84f30b'/>
<id>f0aa1ce6259eb65f53f969b3250c1d0aac84f30b</id>
<content type='text'>
Commit 815806e39bf6 ("regmap: drop cache if the bus transfer error")
added a call to regcache_drop_region() to error path in
_regmap_raw_write(). However that path runs with regmap lock taken,
and regcache_drop_region() tries to re-take it, causing a deadlock.
Fix that by calling map-&gt;cache_ops-&gt;drop() directly.

Signed-off-by: Nikita Yushchenko &lt;nikita.yoush@cogentembedded.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Commit 815806e39bf6 ("regmap: drop cache if the bus transfer error")
added a call to regcache_drop_region() to error path in
_regmap_raw_write(). However that path runs with regmap lock taken,
and regcache_drop_region() tries to re-take it, causing a deadlock.
Fix that by calling map-&gt;cache_ops-&gt;drop() directly.

Signed-off-by: Nikita Yushchenko &lt;nikita.yoush@cogentembedded.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>PM / runtime: Use _rcuidle for runtime suspend tracepoints</title>
<updated>2016-09-16T00:59:58+00:00</updated>
<author>
<name>Paul E. McKenney</name>
<email>paulmck@linux.vnet.ibm.com</email>
</author>
<published>2016-04-26T17:42:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=778935778c3b88e5152a88765850009006ef2e32'/>
<id>778935778c3b88e5152a88765850009006ef2e32</id>
<content type='text'>
Further testing with false negatives suppressed by commit 293e2421fe25
("rcu: Remove superfluous versions of rcu_read_lock_sched_held()")
identified a few more unprotected uses of RCU from the idle loop.
Because RCU actively ignores idle-loop code (for energy-efficiency
reasons, among other things), using RCU from the idle loop can result
in too-short grace periods, in turn resulting in arbitrary misbehavior.

The affected function is rpm_suspend().

The resulting lockdep-RCU splat is as follows:

------------------------------------------------------------------------

Warning from omap3

===============================
[ INFO: suspicious RCU usage. ]
4.6.0-rc5-next-20160426+ #1112 Not tainted
-------------------------------
include/trace/events/rpm.h:63 suspicious rcu_dereference_check() usage!

other info that might help us debug this:

RCU used illegally from idle CPU!
rcu_scheduler_active = 1, debug_locks = 0
RCU used illegally from extended quiescent state!
1 lock held by swapper/0/0:
 #0:  (&amp;(&amp;dev-&gt;power.lock)-&gt;rlock){-.-...}, at: [&lt;c052ee24&gt;] __pm_runtime_suspend+0x54/0x84

stack backtrace:
CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.6.0-rc5-next-20160426+ #1112
Hardware name: Generic OMAP36xx (Flattened Device Tree)
[&lt;c0110308&gt;] (unwind_backtrace) from [&lt;c010c3a8&gt;] (show_stack+0x10/0x14)
[&lt;c010c3a8&gt;] (show_stack) from [&lt;c047fec8&gt;] (dump_stack+0xb0/0xe4)
[&lt;c047fec8&gt;] (dump_stack) from [&lt;c052d7b4&gt;] (rpm_suspend+0x604/0x7e4)
[&lt;c052d7b4&gt;] (rpm_suspend) from [&lt;c052ee34&gt;] (__pm_runtime_suspend+0x64/0x84)
[&lt;c052ee34&gt;] (__pm_runtime_suspend) from [&lt;c04bf3bc&gt;] (omap2_gpio_prepare_for_idle+0x5c/0x70)
[&lt;c04bf3bc&gt;] (omap2_gpio_prepare_for_idle) from [&lt;c01255e8&gt;] (omap_sram_idle+0x140/0x244)
[&lt;c01255e8&gt;] (omap_sram_idle) from [&lt;c0126b48&gt;] (omap3_enter_idle_bm+0xfc/0x1ec)
[&lt;c0126b48&gt;] (omap3_enter_idle_bm) from [&lt;c0601db8&gt;] (cpuidle_enter_state+0x80/0x3d4)
[&lt;c0601db8&gt;] (cpuidle_enter_state) from [&lt;c0183c74&gt;] (cpu_startup_entry+0x198/0x3a0)
[&lt;c0183c74&gt;] (cpu_startup_entry) from [&lt;c0b00c0c&gt;] (start_kernel+0x354/0x3c8)
[&lt;c0b00c0c&gt;] (start_kernel) from [&lt;8000807c&gt;] (0x8000807c)

------------------------------------------------------------------------

Reported-by: Tony Lindgren &lt;tony@atomide.com&gt;
Signed-off-by: Paul E. McKenney &lt;paulmck@linux.vnet.ibm.com&gt;
Tested-by: Tony Lindgren &lt;tony@atomide.com&gt;
Tested-by: Guenter Roeck &lt;linux@roeck-us.net&gt;
[ rjw: Subject ]
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Further testing with false negatives suppressed by commit 293e2421fe25
("rcu: Remove superfluous versions of rcu_read_lock_sched_held()")
identified a few more unprotected uses of RCU from the idle loop.
Because RCU actively ignores idle-loop code (for energy-efficiency
reasons, among other things), using RCU from the idle loop can result
in too-short grace periods, in turn resulting in arbitrary misbehavior.

The affected function is rpm_suspend().

The resulting lockdep-RCU splat is as follows:

------------------------------------------------------------------------

Warning from omap3

===============================
[ INFO: suspicious RCU usage. ]
4.6.0-rc5-next-20160426+ #1112 Not tainted
-------------------------------
include/trace/events/rpm.h:63 suspicious rcu_dereference_check() usage!

other info that might help us debug this:

RCU used illegally from idle CPU!
rcu_scheduler_active = 1, debug_locks = 0
RCU used illegally from extended quiescent state!
1 lock held by swapper/0/0:
 #0:  (&amp;(&amp;dev-&gt;power.lock)-&gt;rlock){-.-...}, at: [&lt;c052ee24&gt;] __pm_runtime_suspend+0x54/0x84

stack backtrace:
CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.6.0-rc5-next-20160426+ #1112
Hardware name: Generic OMAP36xx (Flattened Device Tree)
[&lt;c0110308&gt;] (unwind_backtrace) from [&lt;c010c3a8&gt;] (show_stack+0x10/0x14)
[&lt;c010c3a8&gt;] (show_stack) from [&lt;c047fec8&gt;] (dump_stack+0xb0/0xe4)
[&lt;c047fec8&gt;] (dump_stack) from [&lt;c052d7b4&gt;] (rpm_suspend+0x604/0x7e4)
[&lt;c052d7b4&gt;] (rpm_suspend) from [&lt;c052ee34&gt;] (__pm_runtime_suspend+0x64/0x84)
[&lt;c052ee34&gt;] (__pm_runtime_suspend) from [&lt;c04bf3bc&gt;] (omap2_gpio_prepare_for_idle+0x5c/0x70)
[&lt;c04bf3bc&gt;] (omap2_gpio_prepare_for_idle) from [&lt;c01255e8&gt;] (omap_sram_idle+0x140/0x244)
[&lt;c01255e8&gt;] (omap_sram_idle) from [&lt;c0126b48&gt;] (omap3_enter_idle_bm+0xfc/0x1ec)
[&lt;c0126b48&gt;] (omap3_enter_idle_bm) from [&lt;c0601db8&gt;] (cpuidle_enter_state+0x80/0x3d4)
[&lt;c0601db8&gt;] (cpuidle_enter_state) from [&lt;c0183c74&gt;] (cpu_startup_entry+0x198/0x3a0)
[&lt;c0183c74&gt;] (cpu_startup_entry) from [&lt;c0b00c0c&gt;] (start_kernel+0x354/0x3c8)
[&lt;c0b00c0c&gt;] (start_kernel) from [&lt;8000807c&gt;] (0x8000807c)

------------------------------------------------------------------------

Reported-by: Tony Lindgren &lt;tony@atomide.com&gt;
Signed-off-by: Paul E. McKenney &lt;paulmck@linux.vnet.ibm.com&gt;
Tested-by: Tony Lindgren &lt;tony@atomide.com&gt;
Tested-by: Guenter Roeck &lt;linux@roeck-us.net&gt;
[ rjw: Subject ]
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'regmap-fix-v4.8-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap</title>
<updated>2016-09-06T18:02:36+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2016-09-06T18:02:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=ec9a03d47ed71364501c54ce3845af0bd81ff2f6'/>
<id>ec9a03d47ed71364501c54ce3845af0bd81ff2f6</id>
<content type='text'>
Pull regmap fixes from Mark Brown:
 "Several fixes here, the main one being the change from Lars-Peter
  which I'd been letting soak in -next since the merge window in case it
  uncovered further issues as it's a minimal fix rather than a change
  addressing the root cause of the problems (which would've been too
  invasive for -rc):

   - The biggest change is a fix from Lars-Peter to ensure that we don't
     create overlapping rbtree nodes which in turn avoids returning
     corrupt cache values to users, fixing some issues that were exposed
     by some recent optimisations with certain access patterns but had
     been present for a long time.

   - A fix from Elaine Zhang to stop us updating the cache if we get an
     I/O error when writing to the hardware.

   - A fix fromm Maarten ter Huurne to avoid uninitialized defaults in
     cases where we have non-readable registers but are initializing the
     cache by reading from the device"

* tag 'regmap-fix-v4.8-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap:
  regmap: drop cache if the bus transfer error
  regmap: rbtree: Avoid overlapping nodes
  regmap: cache: Fix num_reg_defaults computation from reg_defaults_raw
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull regmap fixes from Mark Brown:
 "Several fixes here, the main one being the change from Lars-Peter
  which I'd been letting soak in -next since the merge window in case it
  uncovered further issues as it's a minimal fix rather than a change
  addressing the root cause of the problems (which would've been too
  invasive for -rc):

   - The biggest change is a fix from Lars-Peter to ensure that we don't
     create overlapping rbtree nodes which in turn avoids returning
     corrupt cache values to users, fixing some issues that were exposed
     by some recent optimisations with certain access patterns but had
     been present for a long time.

   - A fix from Elaine Zhang to stop us updating the cache if we get an
     I/O error when writing to the hardware.

   - A fix fromm Maarten ter Huurne to avoid uninitialized defaults in
     cases where we have non-readable registers but are initializing the
     cache by reading from the device"

* tag 'regmap-fix-v4.8-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap:
  regmap: drop cache if the bus transfer error
  regmap: rbtree: Avoid overlapping nodes
  regmap: cache: Fix num_reg_defaults computation from reg_defaults_raw
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'regmap/fix/rbtree' into regmap-linus</title>
<updated>2016-09-03T11:10:09+00:00</updated>
<author>
<name>Mark Brown</name>
<email>broonie@kernel.org</email>
</author>
<published>2016-09-03T11:10:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=787ad90332b3573d502a6c1aff52f708ca141976'/>
<id>787ad90332b3573d502a6c1aff52f708ca141976</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'regmap/fix/cache' into regmap-linus</title>
<updated>2016-09-03T11:10:08+00:00</updated>
<author>
<name>Mark Brown</name>
<email>broonie@kernel.org</email>
</author>
<published>2016-09-03T11:10:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=f735aa279021149ef600febe07333ad218783d79'/>
<id>f735aa279021149ef600febe07333ad218783d79</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>PM / runtime: Add _rcuidle suffix to allow rpm_idle() use from idle</title>
<updated>2016-08-31T01:00:59+00:00</updated>
<author>
<name>Paul E. McKenney</name>
<email>paulmck@linux.vnet.ibm.com</email>
</author>
<published>2016-04-26T20:03:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=d7737ce964d944dd07e25b0f569edcd550ede18c'/>
<id>d7737ce964d944dd07e25b0f569edcd550ede18c</id>
<content type='text'>
This commit appends a few _rcuidle suffixes to fix the following
RCU-used-from-idle bug:

&gt; ===============================
&gt; [ INFO: suspicious RCU usage. ]
&gt; 4.6.0-rc5-next-20160426+ #1116 Not tainted
&gt; -------------------------------
&gt; include/trace/events/rpm.h:95 suspicious rcu_dereference_check() usage!
&gt;
&gt; other info that might help us debug this:
&gt;
&gt;
&gt; RCU used illegally from idle CPU!
&gt; rcu_scheduler_active = 1, debug_locks = 0
&gt; RCU used illegally from extended quiescent state!
&gt; 1 lock held by swapper/0/0:
&gt;  #0:  (&amp;(&amp;dev-&gt;power.lock)-&gt;rlock){-.-...}, at: [&lt;c052cc2c&gt;] __rpm_callback+0x58/0x60
&gt;
&gt; stack backtrace:
&gt; CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.6.0-rc5-next-20160426+ #1116
&gt; Hardware name: Generic OMAP36xx (Flattened Device Tree)
&gt; [&lt;c0110290&gt;] (unwind_backtrace) from [&lt;c010c3a8&gt;] (show_stack+0x10/0x14)
&gt; [&lt;c010c3a8&gt;] (show_stack) from [&lt;c047fd68&gt;] (dump_stack+0xb0/0xe4)
&gt; [&lt;c047fd68&gt;] (dump_stack) from [&lt;c052d5d0&gt;] (rpm_suspend+0x580/0x768)
&gt; [&lt;c052d5d0&gt;] (rpm_suspend) from [&lt;c052ec58&gt;] (__pm_runtime_suspend+0x64/0x84)
&gt; [&lt;c052ec58&gt;] (__pm_runtime_suspend) from [&lt;c04bf25c&gt;] (omap2_gpio_prepare_for_idle+0x5c/0x70)
&gt; [&lt;c04bf25c&gt;] (omap2_gpio_prepare_for_idle) from [&lt;c0125568&gt;] (omap_sram_idle+0x140/0x244)
&gt; [&lt;c0125568&gt;] (omap_sram_idle) from [&lt;c01269dc&gt;] (omap3_enter_idle_bm+0xfc/0x1ec)
&gt; [&lt;c01269dc&gt;] (omap3_enter_idle_bm) from [&lt;c0601bdc&gt;] (cpuidle_enter_state+0x80/0x3d4)
&gt; [&lt;c0601bdc&gt;] (cpuidle_enter_state) from [&lt;c0183b08&gt;] (cpu_startup_entry+0x198/0x3a0)
&gt; [&lt;c0183b08&gt;] (cpu_startup_entry) from [&lt;c0b00c0c&gt;] (start_kernel+0x354/0x3c8)
&gt; [&lt;c0b00c0c&gt;] (start_kernel) from [&lt;8000807c&gt;] (0x8000807c)

In the immortal words of Steven Rostedt, "*Whack* *Whack* *Whack*!!!"

Reported-by: Tony Lindgren &lt;tony@atomide.com&gt;
Signed-off-by: Paul E. McKenney &lt;paulmck@linux.vnet.ibm.com&gt;
Tested-by: Tony Lindgren &lt;tony@atomide.com&gt;
Tested-by: Guenter Roeck &lt;linux@roeck-us.net&gt;
WhACKED-by: Steven Rostedt &lt;rostedt@goodmis.org&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This commit appends a few _rcuidle suffixes to fix the following
RCU-used-from-idle bug:

&gt; ===============================
&gt; [ INFO: suspicious RCU usage. ]
&gt; 4.6.0-rc5-next-20160426+ #1116 Not tainted
&gt; -------------------------------
&gt; include/trace/events/rpm.h:95 suspicious rcu_dereference_check() usage!
&gt;
&gt; other info that might help us debug this:
&gt;
&gt;
&gt; RCU used illegally from idle CPU!
&gt; rcu_scheduler_active = 1, debug_locks = 0
&gt; RCU used illegally from extended quiescent state!
&gt; 1 lock held by swapper/0/0:
&gt;  #0:  (&amp;(&amp;dev-&gt;power.lock)-&gt;rlock){-.-...}, at: [&lt;c052cc2c&gt;] __rpm_callback+0x58/0x60
&gt;
&gt; stack backtrace:
&gt; CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.6.0-rc5-next-20160426+ #1116
&gt; Hardware name: Generic OMAP36xx (Flattened Device Tree)
&gt; [&lt;c0110290&gt;] (unwind_backtrace) from [&lt;c010c3a8&gt;] (show_stack+0x10/0x14)
&gt; [&lt;c010c3a8&gt;] (show_stack) from [&lt;c047fd68&gt;] (dump_stack+0xb0/0xe4)
&gt; [&lt;c047fd68&gt;] (dump_stack) from [&lt;c052d5d0&gt;] (rpm_suspend+0x580/0x768)
&gt; [&lt;c052d5d0&gt;] (rpm_suspend) from [&lt;c052ec58&gt;] (__pm_runtime_suspend+0x64/0x84)
&gt; [&lt;c052ec58&gt;] (__pm_runtime_suspend) from [&lt;c04bf25c&gt;] (omap2_gpio_prepare_for_idle+0x5c/0x70)
&gt; [&lt;c04bf25c&gt;] (omap2_gpio_prepare_for_idle) from [&lt;c0125568&gt;] (omap_sram_idle+0x140/0x244)
&gt; [&lt;c0125568&gt;] (omap_sram_idle) from [&lt;c01269dc&gt;] (omap3_enter_idle_bm+0xfc/0x1ec)
&gt; [&lt;c01269dc&gt;] (omap3_enter_idle_bm) from [&lt;c0601bdc&gt;] (cpuidle_enter_state+0x80/0x3d4)
&gt; [&lt;c0601bdc&gt;] (cpuidle_enter_state) from [&lt;c0183b08&gt;] (cpu_startup_entry+0x198/0x3a0)
&gt; [&lt;c0183b08&gt;] (cpu_startup_entry) from [&lt;c0b00c0c&gt;] (start_kernel+0x354/0x3c8)
&gt; [&lt;c0b00c0c&gt;] (start_kernel) from [&lt;8000807c&gt;] (0x8000807c)

In the immortal words of Steven Rostedt, "*Whack* *Whack* *Whack*!!!"

Reported-by: Tony Lindgren &lt;tony@atomide.com&gt;
Signed-off-by: Paul E. McKenney &lt;paulmck@linux.vnet.ibm.com&gt;
Tested-by: Tony Lindgren &lt;tony@atomide.com&gt;
Tested-by: Guenter Roeck &lt;linux@roeck-us.net&gt;
WhACKED-by: Steven Rostedt &lt;rostedt@goodmis.org&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
