<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/base/power, branch v3.9</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
</subtitle>
<id>https://git.shady.money/linux/atom?h=v3.9</id>
<link rel='self' href='https://git.shady.money/linux/atom?h=v3.9'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/'/>
<updated>2013-04-01T23:25:24Z</updated>
<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.shady.money/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>PM / QoS: Remove device PM QoS sysfs attributes at the right place</title>
<updated>2013-03-04T13:23:12Z</updated>
<author>
<name>Rafael J. Wysocki</name>
<email>rafael.j.wysocki@intel.com</email>
</author>
<published>2013-03-04T13:22:57Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=37530f2bda039774bd65aea14cc1d1dd26a82b9e'/>
<id>urn:sha1:37530f2bda039774bd65aea14cc1d1dd26a82b9e</id>
<content type='text'>
Device PM QoS sysfs attributes, if present during device removal,
are removed from within device_pm_remove(), which is too late,
since dpm_sysfs_remove() has already removed the whole attribute
group they belonged to.  However, moving the removal of those
attributes to dpm_sysfs_remove() alone is not sufficient, because
in theory they still can be re-added right after being removed by it
(the device's driver is still bound to it at that point).

For this reason, move the entire desctruction of device PM QoS
constraints to dpm_sysfs_remove() and make it prevent any new
constraints from being added after it has run.  Also, move the
initialization of the power.qos field in struct device to
device_pm_init_common() and drop the no longer needed
dev_pm_qos_constraints_init().

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>PM / QoS: Fix concurrency issues and memory leaks in device PM QoS</title>
<updated>2013-03-04T13:23:11Z</updated>
<author>
<name>Rafael J. Wysocki</name>
<email>rafael.j.wysocki@intel.com</email>
</author>
<published>2013-03-03T21:48:14Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=b81ea1b5ac4d3c6a628158b736dd4a98c46c29d9'/>
<id>urn:sha1:b81ea1b5ac4d3c6a628158b736dd4a98c46c29d9</id>
<content type='text'>
The current device PM QoS code assumes that certain functions will
never be called in parallel with each other (for example, it is
assumed that dev_pm_qos_expose_flags() won't be called in parallel
with dev_pm_qos_hide_flags() for the same device and analogously
for the latency limit), which may be overly optimistic.  Moreover,
dev_pm_qos_expose_flags() and dev_pm_qos_expose_latency_limit()
leak memory in error code paths (req needs to be freed on errors)
and __dev_pm_qos_drop_user_request() forgets to free the request.

To fix the above issues put more things under the device PM QoS
mutex to make them mutually exclusive and add the missing freeing
of memory.

Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>pm / runtime: force memory allocation with no I/O during Runtime PM callbcack</title>
<updated>2013-02-24T01:50:16Z</updated>
<author>
<name>Ming Lei</name>
<email>ming.lei@canonical.com</email>
</author>
<published>2013-02-23T00:34:19Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=db88175f41a29c1ffff1a6938a7969d206a47326'/>
<id>urn:sha1:db88175f41a29c1ffff1a6938a7969d206a47326</id>
<content type='text'>
Apply the introduced memalloc_noio_save() and memalloc_noio_restore() to
force memory allocation with no I/O during runtime_resume/runtime_suspend
callback on device with the flag of 'memalloc_noio' set.

Signed-off-by: Ming Lei &lt;ming.lei@canonical.com&gt;
Cc: "David S. Miller" &lt;davem@davemloft.net&gt;
Cc: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Cc: David Decotigny &lt;david.decotigny@google.com&gt;
Cc: Tom Herbert &lt;therbert@google.com&gt;
Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: Jens Axboe &lt;axboe@kernel.dk&gt;
Cc: Minchan Kim &lt;minchan@kernel.org&gt;
Cc: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Cc: Oliver Neukum &lt;oneukum@suse.de&gt;
Cc: Jiri Kosina &lt;jiri.kosina@suse.com&gt;
Cc: Mel Gorman &lt;mel@csn.ul.ie&gt;
Cc: KAMEZAWA Hiroyuki &lt;kamezawa.hiroyu@jp.fujitsu.com&gt;
Cc: Michal Hocko &lt;mhocko@suse.cz&gt;
Cc: Ingo Molnar &lt;mingo@redhat.com&gt;
Cc: Peter Zijlstra &lt;peterz@infradead.org&gt;
Cc: "Rafael J. Wysocki" &lt;rjw@sisk.pl&gt;
Cc: Greg KH &lt;greg@kroah.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>pm / runtime: introduce pm_runtime_set_memalloc_noio()</title>
<updated>2013-02-24T01:50:16Z</updated>
<author>
<name>Ming Lei</name>
<email>ming.lei@canonical.com</email>
</author>
<published>2013-02-23T00:34:11Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=e823407f7b11fa06ba8e7a2801eb9ed11268a7ec'/>
<id>urn:sha1:e823407f7b11fa06ba8e7a2801eb9ed11268a7ec</id>
<content type='text'>
Introduce the flag memalloc_noio in 'struct dev_pm_info' to help PM core
to teach mm not allocating memory with GFP_KERNEL flag for avoiding
probable deadlock.

As explained in the comment, any GFP_KERNEL allocation inside
runtime_resume() or runtime_suspend() on any one of device in the path
from one block or network device to the root device in the device tree
may cause deadlock, the introduced pm_runtime_set_memalloc_noio() sets
or clears the flag on device in the path recursively.

Signed-off-by: Ming Lei &lt;ming.lei@canonical.com&gt;
Cc: Minchan Kim &lt;minchan@kernel.org&gt;
Cc: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Cc: Oliver Neukum &lt;oneukum@suse.de&gt;
Cc: Jiri Kosina &lt;jiri.kosina@suse.com&gt;
Cc: Mel Gorman &lt;mel@csn.ul.ie&gt;
Cc: KAMEZAWA Hiroyuki &lt;kamezawa.hiroyu@jp.fujitsu.com&gt;
Cc: Michal Hocko &lt;mhocko@suse.cz&gt;
Cc: Ingo Molnar &lt;mingo@redhat.com&gt;
Cc: Peter Zijlstra &lt;peterz@infradead.org&gt;
Cc: "Rafael J. Wysocki" &lt;rjw@sisk.pl&gt;
Cc: Greg KH &lt;greg@kroah.com&gt;
Cc: Jens Axboe &lt;axboe@kernel.dk&gt;
Cc: "David S. Miller" &lt;davem@davemloft.net&gt;
Cc: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Cc: David Decotigny &lt;david.decotigny@google.com&gt;
Cc: Tom Herbert &lt;therbert@google.com&gt;
Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>Merge tag 'usb-3.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb</title>
<updated>2013-02-21T20:20:00Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2013-02-21T20:20:00Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=74e1a2a39355b2d3ae8c60c78d8add162c6d7183'/>
<id>urn:sha1:74e1a2a39355b2d3ae8c60c78d8add162c6d7183</id>
<content type='text'>
Pull USB patches from Greg Kroah-Hartman:
 "Here's the big USB merge for 3.9-rc1

  Nothing major, lots of gadget fixes, and of course, xhci stuff.

  All of this has been in linux-next for a while, with the exception of
  the last 3 patches, which were reverts of patches in the tree that
  caused problems, they went in yesterday."

* tag 'usb-3.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (190 commits)
  Revert "USB: EHCI: make ehci-vt8500 a separate driver"
  Revert "USB: EHCI: make ehci-orion a separate driver"
  Revert "USB: update host controller Kconfig entries"
  USB: update host controller Kconfig entries
  USB: EHCI: make ehci-orion a separate driver
  USB: EHCI: make ehci-vt8500 a separate driver
  USB: usb-storage: unusual_devs update for Super TOP SATA bridge
  USB: ehci-omap: Fix autoloading of module
  USB: ehci-omap: Don't free gpios that we didn't request
  USB: option: add Huawei "ACM" devices using protocol = vendor
  USB: serial: fix null-pointer dereferences on disconnect
  USB: option: add Yota / Megafon M100-1 4g modem
  drivers/usb: add missing GENERIC_HARDIRQS dependencies
  USB: storage: properly handle the endian issues of idProduct
  testusb: remove all mentions of 'usbfs'
  usb: gadget: imx_udc: make it depend on BROKEN
  usb: omap_control_usb: fix compile warning
  ARM: OMAP: USB: Add phy binding information
  ARM: OMAP2: MUSB: Specify omap4 has mailbox
  ARM: OMAP: devices: create device for usb part of control module
  ...
</content>
</entry>
<entry>
<title>Merge branch 'pm-cpufreq'</title>
<updated>2013-02-15T12:59:07Z</updated>
<author>
<name>Rafael J. Wysocki</name>
<email>rafael.j.wysocki@intel.com</email>
</author>
<published>2013-02-15T12:59:07Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=4419fbd4b408c3a8634b3a8dd952055d0f0b601f'/>
<id>urn:sha1:4419fbd4b408c3a8634b3a8dd952055d0f0b601f</id>
<content type='text'>
* pm-cpufreq: (55 commits)
  cpufreq / intel_pstate: Fix 32 bit build
  cpufreq: conservative: Fix typos in comments
  cpufreq: ondemand: Fix typos in comments
  cpufreq: exynos: simplify .init() for setting policy-&gt;cpus
  cpufreq: kirkwood: Add a cpufreq driver for Marvell Kirkwood SoCs
  cpufreq/x86: Add P-state driver for sandy bridge.
  cpufreq_stats: do not remove sysfs files if frequency table is not present
  cpufreq: Do not track governor name for scaling drivers with internal governors.
  cpufreq: Only call cpufreq_out_of_sync() for driver that implement cpufreq_driver.target()
  cpufreq: Retrieve current frequency from scaling drivers with internal governors
  cpufreq: Fix locking issues
  cpufreq: Create a macro for unlock_policy_rwsem{read,write}
  cpufreq: Remove unused HOTPLUG_CPU code
  cpufreq: governors: Fix WARN_ON() for multi-policy platforms
  cpufreq: ondemand: Replace down_differential tuner with adj_up_threshold
  cpufreq / stats: Get rid of CPUFREQ_STATDEVICE_ATTR
  cpufreq: Don't check cpu_online(policy-&gt;cpu)
  cpufreq: add imx6q-cpufreq driver
  cpufreq: Don't remove sysfs link for policy-&gt;cpu
  cpufreq: Remove unnecessary use of policy-&gt;shared_type
  ...
</content>
</entry>
<entry>
<title>PM: Introduce suspend state PM_SUSPEND_FREEZE</title>
<updated>2013-02-09T21:30:44Z</updated>
<author>
<name>Zhang Rui</name>
<email>rui.zhang@intel.com</email>
</author>
<published>2013-02-06T12:00:36Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=7e73c5ae6e7991a6c01f6d096ff8afaef4458c36'/>
<id>urn:sha1:7e73c5ae6e7991a6c01f6d096ff8afaef4458c36</id>
<content type='text'>
PM_SUSPEND_FREEZE state is a general state that
does not need any platform specific support, it equals
frozen processes + suspended devices + idle processors.

Compared with PM_SUSPEND_MEMORY,
PM_SUSPEND_FREEZE saves less power
because the system is still in a running state.
PM_SUSPEND_FREEZE has less resume latency because it does not
touch BIOS, and the processors are in idle state.

Compared with RTPM/idle,
PM_SUSPEND_FREEZE saves more power as
1. the processor has longer sleep time because processes are frozen.
   The deeper c-state the processor supports, more power saving we can get.
2. PM_SUSPEND_FREEZE uses system suspend code path, thus we can get
   more power saving from the devices that does not have good RTPM support.

This state is useful for
1) platforms that do not have STR, or have a broken STR.
2) platforms that have an extremely low power idle state,
   which can be used to replace STR.

The following describes how PM_SUSPEND_FREEZE state works.
1. echo freeze &gt; /sys/power/state
2. the processes are frozen.
3. all the devices are suspended.
4. all the processors are blocked by a wait queue
5. all the processors idles and enters (Deep) c-state.
6. an interrupt fires.
7. a processor is woken up and handles the irq.
8. if it is a general event,
   a) the irq handler runs and quites.
   b) goto step 4.
9. if it is a real wake event, say, power button pressing, keyboard touch, mouse moving,
   a) the irq handler runs and activate the wakeup source
   b) wakeup_source_activate() notifies the wait queue.
   c) system starts resuming from PM_SUSPEND_FREEZE
10. all the devices are resumed.
11. all the processes are unfrozen.
12. system is back to working.

Known Issue:
The wakeup of this new PM_SUSPEND_FREEZE state may behave differently
from the previous suspend state.
Take ACPI platform for example, there are some GPEs that only enabled
when the system is in sleep state, to wake the system backk from S3/S4.
But we are not touching these GPEs during transition to PM_SUSPEND_FREEZE.
This means we may lose some wake event.
But on the other hand, as we do not disable all the Interrupts during
PM_SUSPEND_FREEZE, we may get some extra "wakeup" Interrupts, that are
not available for S3/S4.

The patches has been tested on an old Sony laptop, and here are the results:

Average Power:
1. RPTM/idle for half an hour:
   14.8W, 12.6W, 14.1W, 12.5W, 14.4W, 13.2W, 12.9W
2. Freeze for half an hour:
   11W, 10.4W, 9.4W, 11.3W 10.5W
3. RTPM/idle for three hours:
   11.6W
4. Freeze for three hours:
   10W
5. Suspend to Memory:
   0.5~0.9W

Average Resume Latency:
1. RTPM/idle with a black screen: (From pressing keyboard to screen back)
   Less than 0.2s
2. Freeze: (From pressing power button to screen back)
   2.50s
3. Suspend to Memory: (From pressing power button to screen back)
   4.33s

&gt;From the results, we can see that all the platforms should benefit from
this patch, even if it does not have Low Power S0.

Signed-off-by: Zhang Rui &lt;rui.zhang@intel.com&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>PM / OPP: Export more symbols for module usage</title>
<updated>2013-02-01T23:01:16Z</updated>
<author>
<name>Mark Langsdorf</name>
<email>mark.langsdorf@calxeda.com</email>
</author>
<published>2013-01-28T18:26:16Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=74c46c6eaf9724edbfc12cc67e62773b708eb2ed'/>
<id>urn:sha1:74c46c6eaf9724edbfc12cc67e62773b708eb2ed</id>
<content type='text'>
Export cpufreq helpers in OPP to make the cpufreq-core0 and highbank-cpufreq
drivers loadable as modules.

Signed-off-by: Mark Langsdorf &lt;mark.langsdorf@calxeda.com&gt;
Signed-off-by: Nishanth Menon &lt;nm@ti.com&gt;
Acked-by: Shawn Guo &lt;shawn.guo@linaro.org&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>PM / OPP: switch exported symbols to GPL variant</title>
<updated>2013-02-01T23:01:15Z</updated>
<author>
<name>Nishanth Menon</name>
<email>nm@ti.com</email>
</author>
<published>2013-01-28T18:26:15Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=b2ccd7632939b8c8d53ea1c4aa21ebf8d0add7cf'/>
<id>urn:sha1:b2ccd7632939b8c8d53ea1c4aa21ebf8d0add7cf</id>
<content type='text'>
We are GPLV2 library, so be clear in the symbols exported as well.

Signed-off-by: Nishanth Menon &lt;nm@ti.com&gt;
Acked-by: Shawn Guo &lt;shawn.guo@linaro.org&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
</feed>
