<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/base, branch v3.9</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/drivers/base?h=v3.9</id>
<link rel='self' href='https://git.amat.us/linux/atom/drivers/base?h=v3.9'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2013-04-09T17:03:25Z</updated>
<entry>
<title>regmap: Back out work buffer fix</title>
<updated>2013-04-09T17:03:25Z</updated>
<author>
<name>Mark Brown</name>
<email>broonie@opensource.wolfsonmicro.com</email>
</author>
<published>2013-04-09T17:03:25Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=51a246aa5c0a14b3d34a5c6d3c9e271c784b127f'/>
<id>urn:sha1:51a246aa5c0a14b3d34a5c6d3c9e271c784b127f</id>
<content type='text'>
This reverts commit bc8ce4 (regmap: don't corrupt work buffer in
_regmap_raw_write()) since it turns out that it can cause issues when
taken in isolation from the other changes in -next that lead to its
discovery.  On the basis that nobody noticed the problems for quite some
time without that subsequent work let's drop it from v3.9.

Signed-off-by: Mark Brown &lt;broonie@opensource.wolfsonmicro.com&gt;
</content>
</entry>
<entry>
<title>Merge tag 'pm+acpi-3.9-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm</title>
<updated>2013-04-04T22:56:28Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2013-04-04T22:56:28Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d08d528dc1848fb369a0b27cdb0749d8f6f38063'/>
<id>urn:sha1:d08d528dc1848fb369a0b27cdb0749d8f6f38063</id>
<content type='text'>
Pull ACPI and power management fixes from Rafael Wysocki:

 - Revert of a recent cpuidle change that caused Nehalem machines to
   hang on boot from Alex Shi.

 - USB power management fix addressing a crash in the port device
   object's release routine from Rafael J Wysocki.

 - Device PM QoS fix for a potential deadlock related to sysfs interface
   from Rafael J Wysocki.

 - Fix for a cpufreq crash when the /cpus Device Tree node is missing
   from Paolo Pisati.

 - Fix for a build issue on ia64 related to the Boot Graphics Resource
   Table (BGRT) from Tony Luck.

 - Two fixes for ACPI handles being set incorrectly for device objects
   that don't correspond to any ACPI namespace nodes in the I2C and SPI
   subsystems from Rafael J Wysocki.

 - Fix for compiler warnings related to CONFIG_PM_DEVFREQ being unset
   from Rajagopal Venkat.

 - Fix for a symbol definition typo in cpufreq_governor.h from Borislav
   Petkov.

* tag 'pm+acpi-3.9-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  ACPI / BGRT: Don't let users configure BGRT on non X86 systems
  cpuidle / ACPI: recover percpu ACPI processor cstate
  ACPI / I2C: Use parent's ACPI_HANDLE() in acpi_i2c_register_devices()
  cpufreq: Correct header guards typo
  ACPI / SPI: Use parent's ACPI_HANDLE() in acpi_register_spi_devices()
  cpufreq: check OF node /cpus presence before dereferencing it
  PM / devfreq: Fix compiler warnings for CONFIG_PM_DEVFREQ unset
  PM / QoS: Avoid possible deadlock related to sysfs access
  USB / PM: Don't try to hide PM QoS flags from usb_port_device_release()
</content>
</entry>
<entry>
<title>PM / QoS: Avoid possible deadlock related to sysfs access</title>
<updated>2013-04-01T23:25:24Z</updated>
<author>
<name>Rafael J. Wysocki</name>
<email>rafael.j.wysocki@intel.com</email>
</author>
<published>2013-04-01T23:25:24Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=0f703069296664eb7c649c837cc8bb936c3ef07f'/>
<id>urn:sha1:0f703069296664eb7c649c837cc8bb936c3ef07f</id>
<content type='text'>
Commit b81ea1b (PM / QoS: Fix concurrency issues and memory leaks in
device PM QoS) put calls to pm_qos_sysfs_add_latency(),
pm_qos_sysfs_add_flags(), pm_qos_sysfs_remove_latency(), and
pm_qos_sysfs_remove_flags() under dev_pm_qos_mtx, which was a
mistake, because it may lead to deadlocks in some situations.
For example, if pm_qos_remote_wakeup_store() is run in parallel
with dev_pm_qos_constraints_destroy(), they may deadlock in the
following way:

 ======================================================
 [ INFO: possible circular locking dependency detected ]
 3.9.0-rc4-next-20130328-sasha-00014-g91a3267 #319 Tainted: G        W
 -------------------------------------------------------
 trinity-child6/12371 is trying to acquire lock:
  (s_active#54){++++.+}, at: [&lt;ffffffff81301631&gt;] sysfs_addrm_finish+0x31/0x60

 but task is already holding lock:
  (dev_pm_qos_mtx){+.+.+.}, at: [&lt;ffffffff81f07cc3&gt;] dev_pm_qos_constraints_destroy+0x23/0x250

 which lock already depends on the new lock.

 the existing dependency chain (in reverse order) is:

 -&gt; #1 (dev_pm_qos_mtx){+.+.+.}:
        [&lt;ffffffff811811da&gt;] lock_acquire+0x1aa/0x240
        [&lt;ffffffff83dab809&gt;] __mutex_lock_common+0x59/0x5e0
        [&lt;ffffffff83dabebf&gt;] mutex_lock_nested+0x3f/0x50
        [&lt;ffffffff81f07f2f&gt;] dev_pm_qos_update_flags+0x3f/0xc0
        [&lt;ffffffff81f05f4f&gt;] pm_qos_remote_wakeup_store+0x3f/0x70
        [&lt;ffffffff81efbb43&gt;] dev_attr_store+0x13/0x20
        [&lt;ffffffff812ffdaa&gt;] sysfs_write_file+0xfa/0x150
        [&lt;ffffffff8127f2c1&gt;] __kernel_write+0x81/0x150
        [&lt;ffffffff812afc2d&gt;] write_pipe_buf+0x4d/0x80
        [&lt;ffffffff812af57c&gt;] splice_from_pipe_feed+0x7c/0x120
        [&lt;ffffffff812afa25&gt;] __splice_from_pipe+0x45/0x80
        [&lt;ffffffff812b14fc&gt;] splice_from_pipe+0x4c/0x70
        [&lt;ffffffff812b1538&gt;] default_file_splice_write+0x18/0x30
        [&lt;ffffffff812afae3&gt;] do_splice_from+0x83/0xb0
        [&lt;ffffffff812afb2e&gt;] direct_splice_actor+0x1e/0x20
        [&lt;ffffffff812b0277&gt;] splice_direct_to_actor+0xe7/0x200
        [&lt;ffffffff812b15bc&gt;] do_splice_direct+0x4c/0x70
        [&lt;ffffffff8127eda9&gt;] do_sendfile+0x169/0x300
        [&lt;ffffffff8127ff94&gt;] SyS_sendfile64+0x64/0xb0
        [&lt;ffffffff83db7d18&gt;] tracesys+0xe1/0xe6

 -&gt; #0 (s_active#54){++++.+}:
        [&lt;ffffffff811800cf&gt;] __lock_acquire+0x15bf/0x1e50
        [&lt;ffffffff811811da&gt;] lock_acquire+0x1aa/0x240
        [&lt;ffffffff81300aa2&gt;] sysfs_deactivate+0x122/0x1a0
        [&lt;ffffffff81301631&gt;] sysfs_addrm_finish+0x31/0x60
        [&lt;ffffffff812ff77f&gt;] sysfs_hash_and_remove+0x7f/0xb0
        [&lt;ffffffff813035a1&gt;] sysfs_unmerge_group+0x51/0x70
        [&lt;ffffffff81f068f4&gt;] pm_qos_sysfs_remove_flags+0x14/0x20
        [&lt;ffffffff81f07490&gt;] __dev_pm_qos_hide_flags+0x30/0x70
        [&lt;ffffffff81f07cd5&gt;] dev_pm_qos_constraints_destroy+0x35/0x250
        [&lt;ffffffff81f06931&gt;] dpm_sysfs_remove+0x11/0x50
        [&lt;ffffffff81efcf6f&gt;] device_del+0x3f/0x1b0
        [&lt;ffffffff81efd128&gt;] device_unregister+0x48/0x60
        [&lt;ffffffff82d4083c&gt;] usb_hub_remove_port_device+0x1c/0x20
        [&lt;ffffffff82d2a9cd&gt;] hub_disconnect+0xdd/0x160
        [&lt;ffffffff82d36ab7&gt;] usb_unbind_interface+0x67/0x170
        [&lt;ffffffff81f001a7&gt;] __device_release_driver+0x87/0xe0
        [&lt;ffffffff81f00559&gt;] device_release_driver+0x29/0x40
        [&lt;ffffffff81effc58&gt;] bus_remove_device+0x148/0x160
        [&lt;ffffffff81efd07f&gt;] device_del+0x14f/0x1b0
        [&lt;ffffffff82d344f9&gt;] usb_disable_device+0xf9/0x280
        [&lt;ffffffff82d34ff8&gt;] usb_set_configuration+0x268/0x840
        [&lt;ffffffff82d3a7fc&gt;] usb_remove_store+0x4c/0x80
        [&lt;ffffffff81efbb43&gt;] dev_attr_store+0x13/0x20
        [&lt;ffffffff812ffdaa&gt;] sysfs_write_file+0xfa/0x150
        [&lt;ffffffff8127f71d&gt;] do_loop_readv_writev+0x4d/0x90
        [&lt;ffffffff8127f999&gt;] do_readv_writev+0xf9/0x1e0
        [&lt;ffffffff8127faba&gt;] vfs_writev+0x3a/0x60
        [&lt;ffffffff8127fc60&gt;] SyS_writev+0x50/0xd0
        [&lt;ffffffff83db7d18&gt;] tracesys+0xe1/0xe6

 other info that might help us debug this:

  Possible unsafe locking scenario:

        CPU0                    CPU1
        ----                    ----
   lock(dev_pm_qos_mtx);
                                lock(s_active#54);
                                lock(dev_pm_qos_mtx);
   lock(s_active#54);

  *** DEADLOCK ***

To avoid that, remove the calls to functions mentioned above from
under dev_pm_qos_mtx and introduce a separate lock to prevent races
between functions that add or remove device PM QoS sysfs attributes
from happening.

Reported-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'regmap/fix/async' into tmp</title>
<updated>2013-03-31T22:27:38Z</updated>
<author>
<name>Mark Brown</name>
<email>broonie@opensource.wolfsonmicro.com</email>
</author>
<published>2013-03-31T22:27:38Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=af8ee69df3b5cf4649d65efa3aa359c73c48402a'/>
<id>urn:sha1:af8ee69df3b5cf4649d65efa3aa359c73c48402a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'regmap/fix/core' into tmp</title>
<updated>2013-03-31T22:09:22Z</updated>
<author>
<name>Mark Brown</name>
<email>broonie@opensource.wolfsonmicro.com</email>
</author>
<published>2013-03-31T22:09:22Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=6d66df41098b84cba9b26772c09d90a108459c39'/>
<id>urn:sha1:6d66df41098b84cba9b26772c09d90a108459c39</id>
<content type='text'>
</content>
</entry>
<entry>
<title>regmap: async: Add missing return</title>
<updated>2013-03-27T13:08:44Z</updated>
<author>
<name>Mark Brown</name>
<email>broonie@opensource.wolfsonmicro.com</email>
</author>
<published>2013-03-27T13:08:44Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f951b6587b94df2abb8c7a2425f7dcdb4fe647dc'/>
<id>urn:sha1:f951b6587b94df2abb8c7a2425f7dcdb4fe647dc</id>
<content type='text'>
Let's only write once...

Signed-off-by: Mark Brown &lt;broonie@opensource.wolfsonmicro.com&gt;
</content>
</entry>
<entry>
<title>regmap: don't corrupt work buffer in _regmap_raw_write()</title>
<updated>2013-03-21T19:08:15Z</updated>
<author>
<name>Stephen Warren</name>
<email>swarren@nvidia.com</email>
</author>
<published>2013-03-20T23:02:02Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=bc8ce4afd7ee7e1421c935d24b1f879f82afdd4e'/>
<id>urn:sha1:bc8ce4afd7ee7e1421c935d24b1f879f82afdd4e</id>
<content type='text'>
_regmap_raw_write() contains code to call regcache_write() to write
values to the cache. That code calls memcpy() to copy the value data to
the start of the work_buf. However, at least when _regmap_raw_write() is
called from _regmap_bus_raw_write(), the value data is in the work_buf,
and this memcpy() operation may over-write part of that value data,
depending on the value of reg_bytes + pad_bytes. At least when using
reg_bytes==1 and pad_bytes==0, corruption of the value data does occur.

To solve this, remove the memcpy() operation, and modify the subsequent
.parse_val() call to parse the original value buffer directly.

At least in the case of 8-bit register address and 16-bit values, and
writes of single registers at a time, this memcpy-then-parse combination
used to cancel each-other out; for a work-buffer containing xx 89 03,
the memcpy changed it to 89 03 03, and the parse_val changed it back to
89 89 03, thus leaving the value uncorrupted. This appears completely
accidental though. Since commit 8a819ff "regmap: core: Split out in
place value parsing", .parse_val only returns the parsed value, and does
not modify the buffer, and hence does not (accidentally) undo the
corruption caused by memcpy(). This caused bogus values to get written
to HW, thus preventing e.g. audio playback on systems with a WM8903
CODEC. This patch fixes that.

Signed-off-by: Stephen Warren &lt;swarren@nvidia.com&gt;
Signed-off-by: Mark Brown &lt;broonie@opensource.wolfsonmicro.com&gt;
</content>
</entry>
<entry>
<title>regmap: cache Fix regcache-rbtree sync</title>
<updated>2013-03-13T19:07:19Z</updated>
<author>
<name>Lars-Peter Clausen</name>
<email>lars@metafoo.de</email>
</author>
<published>2013-03-13T15:38:33Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=8abac3ba51b5525354e9b2ec0eed1c9e95c905d9'/>
<id>urn:sha1:8abac3ba51b5525354e9b2ec0eed1c9e95c905d9</id>
<content type='text'>
The last register block, which falls into the specified range, is not handled
correctly. The formula which calculates the number of register which should be
synced is inverse (and off by one). E.g. if all registers in that block should
be synced only one is synced, and if only one should be synced all (but one) are
synced. To calculate the number of registers that need to be synced we need to
subtract the number of the first register in the block from the max register
number and add one. This patch updates the code accordingly.

The issue was introduced in commit ac8d91c ("regmap: Supply ranges to the sync
operations").

Signed-off-by: Lars-Peter Clausen &lt;lars@metafoo.de&gt;
Signed-off-by: Mark Brown &lt;broonie@opensource.wolfsonmicro.com&gt;
Cc: stable@vger.kernel.org
</content>
</entry>
<entry>
<title>regmap: Initialize `map-&gt;debugfs' before regcache</title>
<updated>2013-03-12T18:25:10Z</updated>
<author>
<name>Dimitris Papastamos</name>
<email>dp@opensource.wolfsonmicro.com</email>
</author>
<published>2013-03-11T17:27:02Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c6432ea9cc043994d5b7dcb3ad86a087777cb40c'/>
<id>urn:sha1:c6432ea9cc043994d5b7dcb3ad86a087777cb40c</id>
<content type='text'>
In the rbtree code we are exposing statistics relating to the
number of nodes/registers of the rbtree cache for each of the
devices.  Ensure that `map-&gt;debugfs' has been initialized before
we attempt to initialize the debugfs entry for the rbtree cache.

Signed-off-by: Dimitris Papastamos &lt;dp@opensource.wolfsonmicro.com&gt;
Signed-off-by: Mark Brown &lt;broonie@opensource.wolfsonmicro.com&gt;
Cc: stable@vger.kernel.org
</content>
</entry>
<entry>
<title>Merge tag 'pm+acpi-3.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm</title>
<updated>2013-03-07T22:54:28Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2013-03-07T22:54:28Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c89b148fd3a8d6c2ea5e7c1c212716baee836af1'/>
<id>urn:sha1:c89b148fd3a8d6c2ea5e7c1c212716baee836af1</id>
<content type='text'>
Pull ACPI and power management fixes from Rafael J Wysocki:

 - Two fixes for the new intel_pstate driver from Dirk Brandewie.

 - Fix for incorrect usage of the .find_bridge() callback from struct
   acpi_bus_type in the USB core and subsequent removal of that callback
   from Rafael J Wysocki.

 - ACPI processor driver cleanups from Chen Gang and Syam Sidhardhan.

 - ACPI initialization and error messages fix from Joe Perches.

 - Operating Performance Points documentation improvement from Nishanth
   Menon.

 - Fixes for memory leaks and potential concurrency issues and sysfs
  attributes leaks during device removal in the core device PM QoS code
  from Rafael J Wysocki.

 - Calxeda Highbank cpufreq driver simplification from Emilio López.

 - cpufreq comment cleanup from Namhyung Kim.

 - Fix for a section mismatch in Calxeda Highbank interprocessor
   communication code from Mark Langsdorf (this is not a PM fix strictly
   speaking, but the code in question went in through the PM tree).

* tag 'pm+acpi-3.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  cpufreq / intel_pstate: Do not load on VM that does not report max P state.
  cpufreq / intel_pstate: Fix intel_pstate_init() error path
  ACPI / glue: Drop .find_bridge() callback from struct acpi_bus_type
  ACPI / glue: Add .match() callback to struct acpi_bus_type
  ACPI / porocessor: Beautify code, pr-&gt;id is u32 which is never &lt; 0
  ACPI / processor: Remove redundant NULL check before kfree
  ACPI / Sleep: Avoid interleaved message on errors
  PM / QoS: Remove device PM QoS sysfs attributes at the right place
  PM / QoS: Fix concurrency issues and memory leaks in device PM QoS
  cpufreq: highbank: do not initialize array with a loop
  PM / OPP: improve introductory documentation
  cpufreq: Fix a typo in comment
  mailbox, pl320-ipc: remove __init from probe function
</content>
</entry>
</feed>
