<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/drivers/base, branch v4.8-rc6</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<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.tavy.me/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.tavy.me/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.tavy.me/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.tavy.me/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>
<entry>
<title>PM / runtime: Add _rcuidle suffix to allow rpm_resume() to be called from idle</title>
<updated>2016-08-31T00:59:20+00:00</updated>
<author>
<name>Paul E. McKenney</name>
<email>paulmck@linux.vnet.ibm.com</email>
</author>
<published>2016-04-26T20:38:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=d44c950e9398e639e124014e5872480a37b67259'/>
<id>d44c950e9398e639e124014e5872480a37b67259</id>
<content type='text'>
This commit applies another _rcuidle suffix to fix an RCU use from
idle.

&gt; ===============================
&gt; [ INFO: suspicious RCU usage. ]
&gt; 4.6.0-rc5-next-20160426+ #1122 Not tainted
&gt; -------------------------------
&gt; include/trace/events/rpm.h:69 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;c052e3dc&gt;] __pm_runtime_resume+0x3c/0x64
&gt;
&gt; stack backtrace:
&gt; CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.6.0-rc5-next-20160426+ #1122
&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;c052e178&gt;] (rpm_resume+0x5cc/0x7f4)
&gt; [&lt;c052e178&gt;] (rpm_resume) from [&lt;c052e3ec&gt;] (__pm_runtime_resume+0x4c/0x64)
&gt; [&lt;c052e3ec&gt;] (__pm_runtime_resume) from [&lt;c04bf2c4&gt;] (omap2_gpio_resume_after_idle+0x54/0x68)
&gt; [&lt;c04bf2c4&gt;] (omap2_gpio_resume_after_idle) from [&lt;c01269dc&gt;] (omap3_enter_idle_bm+0xfc/0x1ec)
&gt; [&lt;c01269dc&gt;] (omap3_enter_idle_bm) from [&lt;c060198c&gt;] (cpuidle_enter_state+0x80/0x3d4)
&gt; [&lt;c060198c&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)

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;
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 applies another _rcuidle suffix to fix an RCU use from
idle.

&gt; ===============================
&gt; [ INFO: suspicious RCU usage. ]
&gt; 4.6.0-rc5-next-20160426+ #1122 Not tainted
&gt; -------------------------------
&gt; include/trace/events/rpm.h:69 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;c052e3dc&gt;] __pm_runtime_resume+0x3c/0x64
&gt;
&gt; stack backtrace:
&gt; CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.6.0-rc5-next-20160426+ #1122
&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;c052e178&gt;] (rpm_resume+0x5cc/0x7f4)
&gt; [&lt;c052e178&gt;] (rpm_resume) from [&lt;c052e3ec&gt;] (__pm_runtime_resume+0x4c/0x64)
&gt; [&lt;c052e3ec&gt;] (__pm_runtime_resume) from [&lt;c04bf2c4&gt;] (omap2_gpio_resume_after_idle+0x54/0x68)
&gt; [&lt;c04bf2c4&gt;] (omap2_gpio_resume_after_idle) from [&lt;c01269dc&gt;] (omap3_enter_idle_bm+0xfc/0x1ec)
&gt; [&lt;c01269dc&gt;] (omap3_enter_idle_bm) from [&lt;c060198c&gt;] (cpuidle_enter_state+0x80/0x3d4)
&gt; [&lt;c060198c&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)

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;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>regmap: drop cache if the bus transfer error</title>
<updated>2016-08-18T10:09:12+00:00</updated>
<author>
<name>Elaine Zhang</name>
<email>zhangqing@rock-chips.com</email>
</author>
<published>2016-08-18T09:01:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=815806e39bf6f7e7b34875d4a9609dbe76661782'/>
<id>815806e39bf6f7e7b34875d4a9609dbe76661782</id>
<content type='text'>
regmap_write
-&gt;_regmap_raw_write
--&gt;regcache_write first and than use map-&gt;bus-&gt;write to wirte i2c or spi
But if the i2c or spi transfer failed, But the cache is updated, So if I use
regmap_read will get the cache data which is not the real register value.

Signed-off-by: Elaine Zhang &lt;zhangqing@rock-chips.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>
regmap_write
-&gt;_regmap_raw_write
--&gt;regcache_write first and than use map-&gt;bus-&gt;write to wirte i2c or spi
But if the i2c or spi transfer failed, But the cache is updated, So if I use
regmap_read will get the cache data which is not the real register value.

Signed-off-by: Elaine Zhang &lt;zhangqing@rock-chips.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'pm-extra-4.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm</title>
<updated>2016-08-06T03:26:16+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2016-08-06T03:26:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=11d8ec408d0aa2dae7ca89f95e497b8f22427b20'/>
<id>11d8ec408d0aa2dae7ca89f95e497b8f22427b20</id>
<content type='text'>
Pull more power management updates from Rafael Wysocki:
 "A few more fixes and cleanups in the x86-64 low-level hibernation
  code, PM core, cpufreq (Kconfig and intel_pstate), and the operating
  points framework.

  Specifics:

   - Prevent the low-level assembly hibernate code on x86-64 from
     referring to __PAGE_OFFSET directly as a symbol which doesn't work
     when the kernel identity mapping base is randomized, in which case
     __PAGE_OFFSET is a variable (Rafael Wysocki).

   - Avoid selecting CPU_FREQ_STAT by default as the statistics are not
     required for proper cpufreq operation (Borislav Petkov).

   - Add Skylake-X and Broadwell-X IDs to the intel_pstate's list of
     processors where out-of-band (OBB) control of P-states is possible
     and if that is in use, intel_pstate should not attempt to manage
     P-states (Srinivas Pandruvada).

   - Drop some unnecessary checks from the wakeup IRQ handling code in
     the PM core (Markus Elfring).

   - Reduce the number operating performance point (OPP) lookups in one
     of the OPP framework's helper functions (Jisheng Zhang)"

* tag 'pm-extra-4.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  x86/power/64: Do not refer to __PAGE_OFFSET from assembly code
  cpufreq: Do not default-yes CPU_FREQ_STAT
  cpufreq: intel_pstate: Add more out-of-band IDs
  PM / OPP: optimize dev_pm_opp_set_rate() performance a bit
  PM-wakeup: Delete unnecessary checks before three function calls
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull more power management updates from Rafael Wysocki:
 "A few more fixes and cleanups in the x86-64 low-level hibernation
  code, PM core, cpufreq (Kconfig and intel_pstate), and the operating
  points framework.

  Specifics:

   - Prevent the low-level assembly hibernate code on x86-64 from
     referring to __PAGE_OFFSET directly as a symbol which doesn't work
     when the kernel identity mapping base is randomized, in which case
     __PAGE_OFFSET is a variable (Rafael Wysocki).

   - Avoid selecting CPU_FREQ_STAT by default as the statistics are not
     required for proper cpufreq operation (Borislav Petkov).

   - Add Skylake-X and Broadwell-X IDs to the intel_pstate's list of
     processors where out-of-band (OBB) control of P-states is possible
     and if that is in use, intel_pstate should not attempt to manage
     P-states (Srinivas Pandruvada).

   - Drop some unnecessary checks from the wakeup IRQ handling code in
     the PM core (Markus Elfring).

   - Reduce the number operating performance point (OPP) lookups in one
     of the OPP framework's helper functions (Jisheng Zhang)"

* tag 'pm-extra-4.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  x86/power/64: Do not refer to __PAGE_OFFSET from assembly code
  cpufreq: Do not default-yes CPU_FREQ_STAT
  cpufreq: intel_pstate: Add more out-of-band IDs
  PM / OPP: optimize dev_pm_opp_set_rate() performance a bit
  PM-wakeup: Delete unnecessary checks before three function calls
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'rtc-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux</title>
<updated>2016-08-05T13:48:22+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2016-08-05T13:48:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=6c84239d595dc6ffe39f0f03dae2f64ed200db95'/>
<id>6c84239d595dc6ffe39f0f03dae2f64ed200db95</id>
<content type='text'>
Pull RTC updates from Alexandre Belloni:
 "RTC for 4.8

  Cleanups:
   - huge cleanup of rtc-generic and char/genrtc this allowed to cleanup
     rtc-cmos, rtc-sh, rtc-m68k, rtc-powerpc and rtc-parisc
   - move mn10300 to rtc-cmos

  Subsystem:
   - fix wakealarms after hibernate
   - multiples fixes for rctest
   - simplify implementations of .read_alarm

  New drivers:
   - Maxim MAX6916

  Drivers:
   - ds1307: fix weekday
   - m41t80: add wakeup support
   - pcf85063: add support for PCF85063A variant
   - rv8803: extend i2c fix and other fixes
   - s35390a: fix alarm reading, this fixes instant reboot after
     shutdown for QNAP TS-41x
   - s3c: clock fixes"

* tag 'rtc-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux: (65 commits)
  rtc: rv8803: Clear V1F when setting the time
  rtc: rv8803: Stop the clock while setting the time
  rtc: rv8803: Always apply the I²C workaround
  rtc: rv8803: Fix read day of week
  rtc: rv8803: Remove the check for valid time
  rtc: rv8803: Kconfig: Indicate rx8900 support
  rtc: asm9260: remove .owner field for driver
  rtc: at91sam9: Fix missing spin_lock_init()
  rtc: m41t80: add suspend handlers for alarm IRQ
  rtc: m41t80: make it a real error message
  rtc: pcf85063: Add support for the PCF85063A device
  rtc: pcf85063: fix year range
  rtc: hym8563: in .read_alarm set .tm_sec to 0 to signal minute accuracy
  rtc: explicitly set tm_sec = 0 for drivers with minute accurancy
  rtc: s3c: Add s3c_rtc_{enable/disable}_clk in s3c_rtc_setfreq()
  rtc: s3c: Remove unnecessary call to disable already disabled clock
  rtc: abx80x: use devm_add_action_or_reset()
  rtc: m41t80: use devm_add_action_or_reset()
  rtc: fix a typo and reduce three empty lines to one
  rtc: s35390a: improve two comments in .set_alarm
  ...
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull RTC updates from Alexandre Belloni:
 "RTC for 4.8

  Cleanups:
   - huge cleanup of rtc-generic and char/genrtc this allowed to cleanup
     rtc-cmos, rtc-sh, rtc-m68k, rtc-powerpc and rtc-parisc
   - move mn10300 to rtc-cmos

  Subsystem:
   - fix wakealarms after hibernate
   - multiples fixes for rctest
   - simplify implementations of .read_alarm

  New drivers:
   - Maxim MAX6916

  Drivers:
   - ds1307: fix weekday
   - m41t80: add wakeup support
   - pcf85063: add support for PCF85063A variant
   - rv8803: extend i2c fix and other fixes
   - s35390a: fix alarm reading, this fixes instant reboot after
     shutdown for QNAP TS-41x
   - s3c: clock fixes"

* tag 'rtc-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux: (65 commits)
  rtc: rv8803: Clear V1F when setting the time
  rtc: rv8803: Stop the clock while setting the time
  rtc: rv8803: Always apply the I²C workaround
  rtc: rv8803: Fix read day of week
  rtc: rv8803: Remove the check for valid time
  rtc: rv8803: Kconfig: Indicate rx8900 support
  rtc: asm9260: remove .owner field for driver
  rtc: at91sam9: Fix missing spin_lock_init()
  rtc: m41t80: add suspend handlers for alarm IRQ
  rtc: m41t80: make it a real error message
  rtc: pcf85063: Add support for the PCF85063A device
  rtc: pcf85063: fix year range
  rtc: hym8563: in .read_alarm set .tm_sec to 0 to signal minute accuracy
  rtc: explicitly set tm_sec = 0 for drivers with minute accurancy
  rtc: s3c: Add s3c_rtc_{enable/disable}_clk in s3c_rtc_setfreq()
  rtc: s3c: Remove unnecessary call to disable already disabled clock
  rtc: abx80x: use devm_add_action_or_reset()
  rtc: m41t80: use devm_add_action_or_reset()
  rtc: fix a typo and reduce three empty lines to one
  rtc: s35390a: improve two comments in .set_alarm
  ...
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branches 'pm-sleep', 'pm-cpufreq', 'pm-core' and 'pm-opp'</title>
<updated>2016-08-05T13:46:55+00:00</updated>
<author>
<name>Rafael J. Wysocki</name>
<email>rafael.j.wysocki@intel.com</email>
</author>
<published>2016-08-05T13:46:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=e2b3b80de5cda284c885721e873f9a6e90f68ef8'/>
<id>e2b3b80de5cda284c885721e873f9a6e90f68ef8</id>
<content type='text'>
* pm-sleep:
  x86/power/64: Do not refer to __PAGE_OFFSET from assembly code

* pm-cpufreq:
  cpufreq: Do not default-yes CPU_FREQ_STAT
  cpufreq: intel_pstate: Add more out-of-band IDs

* pm-core:
  PM-wakeup: Delete unnecessary checks before three function calls

* pm-opp:
  PM / OPP: optimize dev_pm_opp_set_rate() performance a bit
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* pm-sleep:
  x86/power/64: Do not refer to __PAGE_OFFSET from assembly code

* pm-cpufreq:
  cpufreq: Do not default-yes CPU_FREQ_STAT
  cpufreq: intel_pstate: Add more out-of-band IDs

* pm-core:
  PM-wakeup: Delete unnecessary checks before three function calls

* pm-opp:
  PM / OPP: optimize dev_pm_opp_set_rate() performance a bit
</pre>
</div>
</content>
</entry>
<entry>
<title>regmap: rbtree: Avoid overlapping nodes</title>
<updated>2016-08-04T15:55:26+00:00</updated>
<author>
<name>Lars-Peter Clausen</name>
<email>lars@metafoo.de</email>
</author>
<published>2016-08-04T15:22:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=1bc8da4e143c0fd8807e061a66d91d5972601ab1'/>
<id>1bc8da4e143c0fd8807e061a66d91d5972601ab1</id>
<content type='text'>
When searching for a suitable node that should be used for inserting a new
register, which does not fall within the range of any existing node, we not
only looks for nodes which are directly adjacent to the new register, but
for nodes within a certain proximity. This is done to avoid creating lots
of small nodes with just a few registers spacing in between, which would
increase memory usage as well as tree traversal time.

This means there might be multiple node candidates which fall within the
proximity range of the new register. If we choose the first node we
encounter, under certain register insertion patterns it is possible to end
up with overlapping ranges. This will break order in the rbtree and can
cause the cached register value to become corrupted.

E.g. take the simplified example where the proximity range is 2 and the
register insertion sequence is 1, 4, 2, 3, 5.
 * Insert of register 1 creates a new node, this is the root of the rbtree
 * Insert of register 4 creates a new node, which is inserted to the right
   of the root.
 * Insert of register 2 gets inserted to the first node
 * Insert of register 3 gets inserted to the first node
 * Insert of register 5 also gets inserted into the first node since
   this is the first node encountered and it is within the proximity range.
   Now there are two overlapping nodes.

To avoid this always choose the node that is closest to the new register.
This will ensure that nodes will not overlap. The tree traversal is still
done as a binary search, we just don't stop at the first node found. So the
complexity of the algorithm stays within the same order.

Ideally if a new register is in the range of two adjacent blocks those
blocks should be merged, but that is a much more invasive change and left
for later.

The issue was initially introduced in commit 472fdec7380c ("regmap: rbtree:
Reduce number of nodes, take 2"), but became much more exposed by commit
6399aea629b0 ("regmap: rbtree: When adding a reg do a bsearch for target
node") which changed the order in which nodes are looked-up.

Fixes: 6399aea629b0 ("regmap: rbtree: When adding a reg do a bsearch for target node")
Signed-off-by: Lars-Peter Clausen &lt;lars@metafoo.de&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When searching for a suitable node that should be used for inserting a new
register, which does not fall within the range of any existing node, we not
only looks for nodes which are directly adjacent to the new register, but
for nodes within a certain proximity. This is done to avoid creating lots
of small nodes with just a few registers spacing in between, which would
increase memory usage as well as tree traversal time.

This means there might be multiple node candidates which fall within the
proximity range of the new register. If we choose the first node we
encounter, under certain register insertion patterns it is possible to end
up with overlapping ranges. This will break order in the rbtree and can
cause the cached register value to become corrupted.

E.g. take the simplified example where the proximity range is 2 and the
register insertion sequence is 1, 4, 2, 3, 5.
 * Insert of register 1 creates a new node, this is the root of the rbtree
 * Insert of register 4 creates a new node, which is inserted to the right
   of the root.
 * Insert of register 2 gets inserted to the first node
 * Insert of register 3 gets inserted to the first node
 * Insert of register 5 also gets inserted into the first node since
   this is the first node encountered and it is within the proximity range.
   Now there are two overlapping nodes.

To avoid this always choose the node that is closest to the new register.
This will ensure that nodes will not overlap. The tree traversal is still
done as a binary search, we just don't stop at the first node found. So the
complexity of the algorithm stays within the same order.

Ideally if a new register is in the range of two adjacent blocks those
blocks should be merged, but that is a much more invasive change and left
for later.

The issue was initially introduced in commit 472fdec7380c ("regmap: rbtree:
Reduce number of nodes, take 2"), but became much more exposed by commit
6399aea629b0 ("regmap: rbtree: When adding a reg do a bsearch for target
node") which changed the order in which nodes are looked-up.

Fixes: 6399aea629b0 ("regmap: rbtree: When adding a reg do a bsearch for target node")
Signed-off-by: Lars-Peter Clausen &lt;lars@metafoo.de&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
