<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/powerpc/platforms, branch linux-3.15.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.15.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.15.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2014-07-31T19:44:07Z</updated>
<entry>
<title>powerpc/pseries: dynamically added OF nodes need to call of_node_init</title>
<updated>2014-07-31T19:44:07Z</updated>
<author>
<name>Tyrel Datwyler</name>
</author>
<published>2014-07-10T18:50:57Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5b3b6e073f0a09506d060bb9ad392f6ad21554c8'/>
<id>urn:sha1:5b3b6e073f0a09506d060bb9ad392f6ad21554c8</id>
<content type='text'>
commit 97a9a7179aad701ab676e6f29eb90766a1acfde2 upstream.

Commit 75b57ecf9 refactored device tree nodes to use kobjects such that they
can be exposed via /sysfs. A secondary commit 0829f6d1f furthered this rework
by moving the kobect initialization logic out of of_node_add into its own
of_node_init function. The inital commit removed the existing kref_init calls
in the pseries dlpar code with the assumption kobject initialization would
occur in of_node_add. The second commit had the side effect of triggering a
BUG_ON during DLPAR, migration and suspend/resume operations as a result of
dynamically added nodes being uninitialized.

This patch fixes this by adding of_node_init calls in place of the previously
removed kref_init calls.

Fixes: 0829f6d1f69e ("of: device_node kobject lifecycle fixes")
Signed-off-by: Tyrel Datwyler &lt;tyreld@linux.vnet.ibm.com&gt;
Acked-by: Nathan Fontenot &lt;nfont@linux.vnet.ibm.com&gt;
Acked-by: Grant Likely &lt;grant.likely@linaro.org&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>powernv: Fix permissions on sysparam sysfs entries</title>
<updated>2014-07-07T01:59:11Z</updated>
<author>
<name>Anton Blanchard</name>
</author>
<published>2014-06-07T01:29:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=948eccfe9a3f7253f5ea268ff9db2ebdb67005c1'/>
<id>urn:sha1:948eccfe9a3f7253f5ea268ff9db2ebdb67005c1</id>
<content type='text'>
commit 1bd098903fda069cb96fe8b5cb4595b46c683385 upstream.

Everyone can write to these files, which is not what we want.

Signed-off-by: Anton Blanchard &lt;anton@samba.org&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>powerpc/pseries: Fix overwritten PE state</title>
<updated>2014-07-07T01:59:11Z</updated>
<author>
<name>Gavin Shan</name>
</author>
<published>2014-04-24T08:00:21Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b180a6567ac315d7f244e7f52cb46774f9967e66'/>
<id>urn:sha1:b180a6567ac315d7f244e7f52cb46774f9967e66</id>
<content type='text'>
commit 54f112a3837d4e7532bbedbbbf27c0de277be510 upstream.

In pseries_eeh_get_state(), EEH_STATE_UNAVAILABLE is always
overwritten by EEH_STATE_NOT_SUPPORT because of the missed
"break" there. The patch fixes the issue.

Reported-by: Joe Perches &lt;joe@perches.com&gt;
Signed-off-by: Gavin Shan &lt;gwshan@linux.vnet.ibm.com&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>powerpc/powernv: Reset root port in firmware</title>
<updated>2014-05-12T00:33:08Z</updated>
<author>
<name>Gavin Shan</name>
</author>
<published>2014-04-24T08:00:22Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=372cf1244d7c271806b83b32b09a1c8b1b31b353'/>
<id>urn:sha1:372cf1244d7c271806b83b32b09a1c8b1b31b353</id>
<content type='text'>
Resetting root port has more stuff to do than that for PCIe switch
ports and we should have resetting root port done in firmware instead
of the kernel itself. The problem was introduced by commit 5b2e198e
("powerpc/powernv: Rework EEH reset").

Cc: linux-stable &lt;stable@vger.kernel.org&gt;
Signed-off-by: Gavin Shan &lt;gwshan@linux.vnet.ibm.com&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>ppc/powernv: Set the runlatch bits correctly for offline cpus</title>
<updated>2014-04-28T06:32:40Z</updated>
<author>
<name>Preeti U Murthy</name>
</author>
<published>2014-04-11T10:31:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f203891117323dd31c11adcbba60452c933d604e'/>
<id>urn:sha1:f203891117323dd31c11adcbba60452c933d604e</id>
<content type='text'>
Up until now we have been setting the runlatch bits for a busy CPU and
clearing it when a CPU enters idle state. The runlatch bit has thus
been consistent with the utilization of a CPU as long as the CPU is online.

However when a CPU is hotplugged out the runlatch bit is not cleared. It
needs to be cleared to indicate an unused CPU. Hence this patch has the
runlatch bit cleared for an offline CPU just before entering an idle state
and sets it immediately after it exits the idle state.

Signed-off-by: Preeti U Murthy &lt;preeti@linux.vnet.ibm.com&gt;
Acked-by: Paul Mackerras &lt;paulus@samba.org&gt;
Reviewed-by: Srivatsa S. Bhat &lt;srivatsa.bhat@linux.vnet.ibm.com&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>powerpc/pseries: Protect remove_memory() with device hotplug lock</title>
<updated>2014-04-28T06:32:14Z</updated>
<author>
<name>Li Zhong</name>
</author>
<published>2014-04-10T08:25:31Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=42dbfc8649737cb622b2a7e02045401c4c09561c'/>
<id>urn:sha1:42dbfc8649737cb622b2a7e02045401c4c09561c</id>
<content type='text'>
While testing memory hot-remove, I found following dead lock:

Process #1141 is drmgr, trying to remove some memory, i.e. memory499.
It holds the memory_hotplug_mutex, and blocks when trying to remove file
"online" under dir memory499, in kernfs_drain(), at
        wait_event(root-&gt;deactivate_waitq,
                   atomic_read(&amp;kn-&gt;active) == KN_DEACTIVATED_BIAS);

Process #1120 is trying to online memory499 by
   echo 1 &gt; memory499/online

In .kernfs_fop_write, it uses kernfs_get_active() to increase
&amp;kn-&gt;active, thus blocking process #1141. While itself is blocked later
when trying to acquire memory_hotplug_mutex, which is held by process

The backtrace of both processes are shown below:

[&lt;c000000001b18600&gt;] 0xc000000001b18600
[&lt;c000000000015044&gt;] .__switch_to+0x144/0x200
[&lt;c000000000263ca4&gt;] .online_pages+0x74/0x7b0
[&lt;c00000000055b40c&gt;] .memory_subsys_online+0x9c/0x150
[&lt;c00000000053cbe8&gt;] .device_online+0xb8/0x120
[&lt;c00000000053cd04&gt;] .online_store+0xb4/0xc0
[&lt;c000000000538ce4&gt;] .dev_attr_store+0x64/0xa0
[&lt;c00000000030f4ec&gt;] .sysfs_kf_write+0x7c/0xb0
[&lt;c00000000030e574&gt;] .kernfs_fop_write+0x154/0x1e0
[&lt;c000000000268450&gt;] .vfs_write+0xe0/0x260
[&lt;c000000000269144&gt;] .SyS_write+0x64/0x110
[&lt;c000000000009ffc&gt;] syscall_exit+0x0/0x7c

[&lt;c000000001b18600&gt;] 0xc000000001b18600
[&lt;c000000000015044&gt;] .__switch_to+0x144/0x200
[&lt;c00000000030be14&gt;] .__kernfs_remove+0x204/0x300
[&lt;c00000000030d428&gt;] .kernfs_remove_by_name_ns+0x68/0xf0
[&lt;c00000000030fb38&gt;] .sysfs_remove_file_ns+0x38/0x60
[&lt;c000000000539354&gt;] .device_remove_attrs+0x54/0xc0
[&lt;c000000000539fd8&gt;] .device_del+0x158/0x250
[&lt;c00000000053a104&gt;] .device_unregister+0x34/0xa0
[&lt;c00000000055bc14&gt;] .unregister_memory_section+0x164/0x170
[&lt;c00000000024ee18&gt;] .__remove_pages+0x108/0x4c0
[&lt;c00000000004b590&gt;] .arch_remove_memory+0x60/0xc0
[&lt;c00000000026446c&gt;] .remove_memory+0x8c/0xe0
[&lt;c00000000007f9f4&gt;] .pseries_remove_memblock+0xd4/0x160
[&lt;c00000000007fcfc&gt;] .pseries_memory_notifier+0x27c/0x290
[&lt;c0000000008ae6cc&gt;] .notifier_call_chain+0x8c/0x100
[&lt;c0000000000d858c&gt;] .__blocking_notifier_call_chain+0x6c/0xe0
[&lt;c00000000071ddec&gt;] .of_property_notify+0x7c/0xc0
[&lt;c00000000071ed3c&gt;] .of_update_property+0x3c/0x1b0
[&lt;c0000000000756cc&gt;] .ofdt_write+0x3dc/0x740
[&lt;c0000000002f60fc&gt;] .proc_reg_write+0xac/0x110
[&lt;c000000000268450&gt;] .vfs_write+0xe0/0x260
[&lt;c000000000269144&gt;] .SyS_write+0x64/0x110
[&lt;c000000000009ffc&gt;] syscall_exit+0x0/0x7c

This patch uses lock_device_hotplug() to protect remove_memory() called
in pseries_remove_memblock(), which is also stated before function
remove_memory():

 * NOTE: The caller must call lock_device_hotplug() to serialize hotplug
 * and online/offline operations before this call, as required by
 * try_offline_node().
 */
void __ref remove_memory(int nid, u64 start, u64 size)

With this lock held, the other process(#1120 above) trying to online the
memory block will retry the system call when calling
lock_device_hotplug_sysfs(), and finally find No such device error.

Signed-off-by: Li Zhong &lt;zhong@linux.vnet.ibm.com&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>powerpc/powernv: Fix little endian issues in OPAL dump code</title>
<updated>2014-04-28T03:11:24Z</updated>
<author>
<name>Anton Blanchard</name>
</author>
<published>2014-04-22T05:01:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2d6b63bbdd7a649ea17fae19f8bab07d4b292a09'/>
<id>urn:sha1:2d6b63bbdd7a649ea17fae19f8bab07d4b292a09</id>
<content type='text'>
Signed-off-by: Anton Blanchard &lt;anton@samba.org&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>powerpc/powernv: Create OPAL sglist helper functions and fix endian issues</title>
<updated>2014-04-28T03:11:23Z</updated>
<author>
<name>Anton Blanchard</name>
</author>
<published>2014-04-22T05:01:26Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3441f04b4b62758a798f9fbbf2047dfedf0329a5'/>
<id>urn:sha1:3441f04b4b62758a798f9fbbf2047dfedf0329a5</id>
<content type='text'>
We have two copies of code that creates an OPAL sg list. Consolidate
these into a common set of helpers and fix the endian issues.

The flash interface embedded a version number in the num_entries
field, whereas the dump interface did did not. Since versioning
wasn't added to the flash interface and it is impossible to add
this in a backwards compatible way, just remove it.

Signed-off-by: Anton Blanchard &lt;anton@samba.org&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>powerpc/powernv: Fix little endian issues in OPAL error log code</title>
<updated>2014-04-28T03:11:23Z</updated>
<author>
<name>Anton Blanchard</name>
</author>
<published>2014-04-22T05:01:25Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=14ad0c58d5df6e5911a5413abdc2a9be6a8acb51'/>
<id>urn:sha1:14ad0c58d5df6e5911a5413abdc2a9be6a8acb51</id>
<content type='text'>
Fix little endian issues with the OPAL error log code.

Signed-off-by: Anton Blanchard &lt;anton@samba.org&gt;
Reviewed-by: Stewart Smith &lt;stewart@linux.vnet.ibm.com&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>powerpc/powernv: Fix little endian issues with opal_do_notifier calls</title>
<updated>2014-04-28T03:11:22Z</updated>
<author>
<name>Anton Blanchard</name>
</author>
<published>2014-04-22T05:01:24Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=56b4c993124d15f3b198cc757ba49a0022b5d695'/>
<id>urn:sha1:56b4c993124d15f3b198cc757ba49a0022b5d695</id>
<content type='text'>
The bitmap in opal_poll_events and opal_handle_interrupt is
big endian, so we need to byteswap it on little endian builds.

Signed-off-by: Anton Blanchard &lt;anton@samba.org&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
</feed>
