<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.linux.ports.ppc.embedded">
    <title>gmane.linux.ports.ppc.embedded</title>
    <link>http://blog.gmane.org/gmane.linux.ports.ppc.embedded</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50749"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50743"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50734"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50733"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50729"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50726"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50725"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50723"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50722"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50721"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50720"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50719"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50718"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50711"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50709"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50696"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50695"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50667"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50661"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50660"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50749">
    <title>pread() and pwrite() system calls</title>
    <link>http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50749</link>
    <description>&lt;pre&gt;We have a system with linux 2.6.32 and the somewhat archaic
uClibc 0.9.27 (but I'm not sure the current version is
any better, and I think there are binary compatibility
if we update).

I've just discovered that pread() is 'implemented'
by using 3 lseek() system calls and read().
(the same is true for the 64bit versions).

I thought that pread() was supposed to be atomic
(so usable concurrently by multiple threads) which
means that this implementation is completely broken.

I've not looked to see what glibc does.

I can see that part of the problem is the alignment
of the 64bit value on the argument list of syscall()
(when the register save area is cast to a sycall
argument structure).
But it also looks as though the uClibc syscall()
stub can only pass 5 arguments in registers, and
pread() (with an aligned 64bit offset) requires 6.

The ucLibc source seems to be predicated by __NR_pread,
but if that were defined it would try to call
__syscall_pread() and I can't find that anywhere.

A special pread/pwrite asm stub that just copies
r7 to r0 could be used.

Would it be enough to do:
syscall_pread_pwrite:
mov 0,7
sc
blr
and handle the -ve -&amp;gt; errno in C?

I've seen other parts of linux pass structures to
avoid issues with excessive number of arguments.
Unlike things like NetBSD amd64 which will read
additional args off the user stack (and has per-system
call stubs in libc so doesn't lose one argument).
(I rearranged the NetBSD amd64 kernel trap frame
layout so all the args ended up adjacent...)

David
&lt;/pre&gt;</description>
    <dc:creator>David Laight</dc:creator>
    <dc:date>2012-05-25T13:29:06</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50743">
    <title>module loading issue/flaw in busy memory situation?</title>
    <link>http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50743</link>
    <description>&lt;pre&gt;Hi,

let's assume a module gets loaded into an already busy system, and the ".init.text" section with the __init function gets loaded into one memory region, and the normal ".text" section gets loaded into a totally different memory region.
Now assume that both regions are &amp;gt;32MB apart in addressing, so that a call from the __init .init.text function to any function in .text requires a trampoline as set up by the do_plt_call() function in arch/kernel/module*.c
So far so good for user code.

Now assume that the __init function is not trivial and will require register save/restore functions in prologue/epilogue with such calls generated by gcc, e.g., the __init function calls _rest32gpr_28_x() in the epilogue. This restore functions however is in the .text section due to the static link of the normal libs.

Now we have the __init function calling the trampoline, which is destroying r11. The trampoline is then jumping to the register restore function which relies on r11 still being intact, which it now isn't anymore.
Net result is a crash because the trampoline ABI conflicts with the register restore ABI and you get a case of garbage in leading to garbage out.

This situation has apparently occurred based on the debug results I have here.

In the general case of module development it seems unpredictable if gcc will actually call a register restore function from the __init function, or if the sections get loaded to require a trampoline, so for any non-trivial function in non-trivial memory setups, a crash would have to be expected, depending on the time of day and moon phase when the module gets loaded.

Is this a fundamental flaw in the interaction of the module section use specification and the module load mechanism with the ABI definition?

Or am I missing some incorrect setup or requirement for __init functions that I should deal with?

Thanks,

Heinz
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev&amp;lt; at &amp;gt;lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/pre&gt;</description>
    <dc:creator>Wrobel Heinz-R39252</dc:creator>
    <dc:date>2012-05-24T20:05:19</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50734">
    <title>[PATCH 1/2] powerpc/85xx: Add P1024rdb dts support</title>
    <link>http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50734</link>
    <description>&lt;pre&gt;From: Tang Yuantian &amp;lt;Yuantian.Tang&amp;lt; at &amp;gt;freescale.com&amp;gt;

Signed-off-by: Jin Qing &amp;lt;b24347&amp;lt; at &amp;gt;freescale.com&amp;gt;
Signed-off-by: Li Yang &amp;lt;leoli&amp;lt; at &amp;gt;freescale.com&amp;gt;
Signed-off-by: Tang Yuantian &amp;lt;Yuantian.Tang&amp;lt; at &amp;gt;freescale.com&amp;gt;
---
 arch/powerpc/boot/dts/p1024rdb.dtsi    |  228 ++++++++++++++++++++++++++++++++
 arch/powerpc/boot/dts/p1024rdb_32b.dts |   87 ++++++++++++
 arch/powerpc/boot/dts/p1024rdb_36b.dts |   87 ++++++++++++
 3 files changed, 402 insertions(+), 0 deletions(-)
 create mode 100644 arch/powerpc/boot/dts/p1024rdb.dtsi
 create mode 100644 arch/powerpc/boot/dts/p1024rdb_32b.dts
 create mode 100644 arch/powerpc/boot/dts/p1024rdb_36b.dts

diff --git a/arch/powerpc/boot/dts/p1024rdb.dtsi b/arch/powerpc/boot/dts/p1024rdb.dtsi
new file mode 100644
index 0000000..b05dcb4
--- /dev/null
+++ b/arch/powerpc/boot/dts/p1024rdb.dtsi
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,228 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/*
+ * P1024 RDB Device Tree Source stub (no addresses or top-level ranges)
+ *
+ * Copyright 2012 Freescale Semiconductor Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of Freescale Semiconductor nor the
+ *       names of its contributors may be used to endorse or promote products
+ *       derived from this software without specific prior written permission.
+ *
+ *
+ * ALTERNATIVELY, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") as published by the Free Software
+ * Foundation, either version 2 of that License or (at your option) any
+ * later version.
+ *
+ * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+&amp;amp;lbc {
+nor&amp;lt; at &amp;gt;0,0 {
+#address-cells = &amp;lt;1&amp;gt;;
+#size-cells = &amp;lt;1&amp;gt;;
+compatible = "cfi-flash";
+reg = &amp;lt;0x0 0x0 0x1000000&amp;gt;;
+bank-width = &amp;lt;2&amp;gt;;
+device-width = &amp;lt;1&amp;gt;;
+
+partition&amp;lt; at &amp;gt;0 {
+/* This location must not be altered  */
+/* 256KB for Vitesse 7385 Switch firmware */
+reg = &amp;lt;0x0 0x00040000&amp;gt;;
+label = "NOR Vitesse-7385 Firmware";
+read-only;
+};
+
+partition&amp;lt; at &amp;gt;40000 {
+/* 256KB for DTB Image */
+reg = &amp;lt;0x00040000 0x00040000&amp;gt;;
+label = "NOR DTB Image";
+};
+
+partition&amp;lt; at &amp;gt;80000 {
+/* 3.5 MB for Linux Kernel Image */
+reg = &amp;lt;0x00080000 0x00380000&amp;gt;;
+label = "NOR Linux Kernel Image";
+};
+
+partition&amp;lt; at &amp;gt;400000 {
+/* 11MB for JFFS2 based Root file System */
+reg = &amp;lt;0x00400000 0x00b00000&amp;gt;;
+label = "NOR JFFS2 Root File System";
+};
+
+partition&amp;lt; at &amp;gt;f00000 {
+/* This location must not be altered  */
+/* 512KB for u-boot Bootloader Image */
+/* 512KB for u-boot Environment Variables */
+reg = &amp;lt;0x00f00000 0x00100000&amp;gt;;
+label = "NOR U-Boot Image";
+read-only;
+};
+};
+
+nand&amp;lt; at &amp;gt;1,0 {
+#address-cells = &amp;lt;1&amp;gt;;
+#size-cells = &amp;lt;1&amp;gt;;
+compatible = "fsl,p1020-fcm-nand",
+ "fsl,elbc-fcm-nand";
+reg = &amp;lt;0x1 0x0 0x40000&amp;gt;;
+
+partition&amp;lt; at &amp;gt;0 {
+/* This location must not be altered  */
+/* 1MB for u-boot Bootloader Image */
+reg = &amp;lt;0x0 0x00100000&amp;gt;;
+label = "NAND U-Boot Image";
+read-only;
+};
+
+partition&amp;lt; at &amp;gt;100000 {
+/* 1MB for DTB Image */
+reg = &amp;lt;0x00100000 0x00100000&amp;gt;;
+label = "NAND DTB Image";
+};
+
+partition&amp;lt; at &amp;gt;200000 {
+/* 4MB for Linux Kernel Image */
+reg = &amp;lt;0x00200000 0x00400000&amp;gt;;
+label = "NAND Linux Kernel Image";
+};
+
+partition&amp;lt; at &amp;gt;600000 {
+/* 4MB for Compressed Root file System Image */
+reg = &amp;lt;0x00600000 0x00400000&amp;gt;;
+label = "NAND Compressed RFS Image";
+};
+
+partition&amp;lt; at &amp;gt;a00000 {
+/* 15MB for JFFS2 based Root file System */
+reg = &amp;lt;0x00a00000 0x00f00000&amp;gt;;
+label = "NAND JFFS2 Root File System";
+};
+
+partition&amp;lt; at &amp;gt;1900000 {
+/* 7MB for User Writable Area */
+reg = &amp;lt;0x01900000 0x00700000&amp;gt;;
+label = "NAND Writable User area";
+};
+};
+};
+
+&amp;amp;soc {
+spi&amp;lt; at &amp;gt;7000 {
+flash&amp;lt; at &amp;gt;0 {
+#address-cells = &amp;lt;1&amp;gt;;
+#size-cells = &amp;lt;1&amp;gt;;
+compatible = "spansion,m25p80";
+reg = &amp;lt;0&amp;gt;;
+spi-max-frequency = &amp;lt;40000000&amp;gt;;
+
+partition&amp;lt; at &amp;gt;0 {
+/* 512KB for u-boot Bootloader Image */
+reg = &amp;lt;0x0 0x00080000&amp;gt;;
+label = "SPI U-Boot Image";
+read-only;
+};
+
+partition&amp;lt; at &amp;gt;80000 {
+/* 512KB for DTB Image */
+reg = &amp;lt;0x00080000 0x00080000&amp;gt;;
+label = "SPI DTB Image";
+};
+
+partition&amp;lt; at &amp;gt;100000 {
+/* 4MB for Linux Kernel Image */
+reg = &amp;lt;0x00100000 0x00400000&amp;gt;;
+label = "SPI Linux Kernel Image";
+};
+
+partition&amp;lt; at &amp;gt;500000 {
+/* 4MB for Compressed RFS Image */
+reg = &amp;lt;0x00500000 0x00400000&amp;gt;;
+label = "SPI Compressed RFS Image";
+};
+
+partition&amp;lt; at &amp;gt;900000 {
+/* 7MB for JFFS2 based RFS */
+reg = &amp;lt;0x00900000 0x00700000&amp;gt;;
+label = "SPI JFFS2 RFS";
+};
+};
+};
+
+i2c&amp;lt; at &amp;gt;3000 {
+rtc&amp;lt; at &amp;gt;68 {
+compatible = "dallas,ds1339";
+reg = &amp;lt;0x68&amp;gt;;
+};
+};
+
+usb&amp;lt; at &amp;gt;22000 {
+phy_type = "ulpi";
+};
+
+usb&amp;lt; at &amp;gt;23000 {
+status = "disabled";
+};
+
+mdio&amp;lt; at &amp;gt;24000 {
+phy0: ethernet-phy&amp;lt; at &amp;gt;0 {
+interrupts = &amp;lt;3 1 0 0&amp;gt;;
+reg = &amp;lt;0x0&amp;gt;;
+};
+phy1: ethernet-phy&amp;lt; at &amp;gt;1 {
+interrupts = &amp;lt;2 1 0 0&amp;gt;;
+reg = &amp;lt;0x1&amp;gt;;
+};
+phy2: ethernet-phy&amp;lt; at &amp;gt;2 {
+interrupts = &amp;lt;1 1 0 0&amp;gt;;
+reg = &amp;lt;0x2&amp;gt;;
+};
+};
+
+mdio&amp;lt; at &amp;gt;25000 {
+tbi0: tbi-phy&amp;lt; at &amp;gt;11 {
+reg = &amp;lt;0x11&amp;gt;;
+device_type = "tbi-phy";
+};
+};
+
+mdio&amp;lt; at &amp;gt;26000 {
+tbi1: tbi-phy&amp;lt; at &amp;gt;11 {
+reg = &amp;lt;0x11&amp;gt;;
+device_type = "tbi-phy";
+};
+};
+
+ethernet&amp;lt; at &amp;gt;b0000 {
+phy-handle = &amp;lt;&amp;amp;phy2&amp;gt;;
+phy-connection-type = "rgmii-id";
+};
+
+ethernet&amp;lt; at &amp;gt;b1000 {
+phy-handle = &amp;lt;&amp;amp;phy0&amp;gt;;
+tbi-handle = &amp;lt;&amp;amp;tbi0&amp;gt;;
+phy-connection-type = "sgmii";
+};
+
+ethernet&amp;lt; at &amp;gt;b2000 {
+phy-handle = &amp;lt;&amp;amp;phy1&amp;gt;;
+phy-connection-type = "rgmii-id";
+};
+};
diff --git a/arch/powerpc/boot/dts/p1024rdb_32b.dts b/arch/powerpc/boot/dts/p1024rdb_32b.dts
new file mode 100644
index 0000000..90e803e
--- /dev/null
+++ b/arch/powerpc/boot/dts/p1024rdb_32b.dts
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,87 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/*
+ * P1024 RDB 32Bit Physical Address Map Device Tree Source
+ *
+ * Copyright 2012 Freescale Semiconductor Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of Freescale Semiconductor nor the
+ *       names of its contributors may be used to endorse or promote products
+ *       derived from this software without specific prior written permission.
+ *
+ *
+ * ALTERNATIVELY, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") as published by the Free Software
+ * Foundation, either version 2 of that License or (at your option) any
+ * later version.
+ *
+ * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/include/ "fsl/p1020si-pre.dtsi"
+/ {
+model = "fsl,P1024RDB";
+compatible = "fsl,P1024RDB";
+
+memory {
+device_type = "memory";
+};
+
+lbc: localbus&amp;lt; at &amp;gt;ffe05000 {
+reg = &amp;lt;0x0 0xffe05000 0 0x1000&amp;gt;;
+ranges = &amp;lt;0x0 0x0 0x0 0xef000000 0x01000000
+  0x1 0x0 0x0 0xff800000 0x00040000&amp;gt;;
+};
+
+soc: soc&amp;lt; at &amp;gt;ffe00000 {
+ranges = &amp;lt;0x0 0x0 0xffe00000 0x100000&amp;gt;;
+};
+
+pci0: pcie&amp;lt; at &amp;gt;ffe09000 {
+reg = &amp;lt;0x0 0xffe09000 0 0x1000&amp;gt;;
+ranges = &amp;lt;0x2000000 0x0 0xe0000000 0x0 0xa0000000 0x0 0x20000000
+  0x1000000 0x0 0x00000000 0x0 0xffc10000 0x0 0x10000&amp;gt;;
+pcie&amp;lt; at &amp;gt;0 {
+ranges = &amp;lt;0x2000000 0x0 0xe0000000
+  0x2000000 0x0 0xe0000000
+  0x0 0x20000000
+
+  0x1000000 0x0 0x0
+  0x1000000 0x0 0x0
+  0x0 0x100000&amp;gt;;
+};
+};
+
+pci1: pcie&amp;lt; at &amp;gt;ffe0a000 {
+reg = &amp;lt;0x0 0xffe0a000 0 0x1000&amp;gt;;
+ranges = &amp;lt;0x2000000 0x0 0xe0000000 0x0 0x80000000 0x0 0x20000000
+  0x1000000 0x0 0x00000000 0x0 0xffc00000 0x0 0x10000&amp;gt;;
+pcie&amp;lt; at &amp;gt;0 {
+reg = &amp;lt;0x0 0x0 0x0 0x0 0x0&amp;gt;;
+ranges = &amp;lt;0x2000000 0x0 0xe0000000
+  0x2000000 0x0 0xe0000000
+  0x0 0x20000000
+
+  0x1000000 0x0 0x0
+  0x1000000 0x0 0x0
+  0x0 0x100000&amp;gt;;
+};
+};
+};
+
+/include/ "p1024rdb.dtsi"
+/include/ "fsl/p1020si-post.dtsi"
diff --git a/arch/powerpc/boot/dts/p1024rdb_36b.dts b/arch/powerpc/boot/dts/p1024rdb_36b.dts
new file mode 100644
index 0000000..3656825
--- /dev/null
+++ b/arch/powerpc/boot/dts/p1024rdb_36b.dts
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,87 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/*
+ * P1024 RDB 36Bit Physical Address Map Device Tree Source
+ *
+ * Copyright 2012 Freescale Semiconductor Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of Freescale Semiconductor nor the
+ *       names of its contributors may be used to endorse or promote products
+ *       derived from this software without specific prior written permission.
+ *
+ *
+ * ALTERNATIVELY, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") as published by the Free Software
+ * Foundation, either version 2 of that License or (at your option) any
+ * later version.
+ *
+ * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/include/ "fsl/p1020si-pre.dtsi"
+/ {
+model = "fsl,P1024RDB";
+compatible = "fsl,P1024RDB";
+
+memory {
+device_type = "memory";
+};
+
+lbc: localbus&amp;lt; at &amp;gt;fffe05000 {
+reg = &amp;lt;0xf 0xffe05000 0 0x1000&amp;gt;;
+ranges = &amp;lt;0x0 0x0 0xf 0xef000000 0x01000000
+  0x1 0x0 0xf 0xff800000 0x00040000&amp;gt;;
+};
+
+soc: soc&amp;lt; at &amp;gt;fffe00000 {
+ranges = &amp;lt;0x0 0xf 0xffe00000 0x100000&amp;gt;;
+};
+
+pci0: pcie&amp;lt; at &amp;gt;fffe09000 {
+reg = &amp;lt;0xf 0xffe09000 0 0x1000&amp;gt;;
+ranges = &amp;lt;0x2000000 0x0 0xe0000000 0xc 0x20000000 0x0 0x20000000
+  0x1000000 0x0 0x00000000 0xf 0xffc10000 0x0 0x10000&amp;gt;;
+pcie&amp;lt; at &amp;gt;0 {
+ranges = &amp;lt;0x2000000 0x0 0xe0000000
+  0x2000000 0x0 0xe0000000
+  0x0 0x20000000
+
+  0x1000000 0x0 0x0
+  0x1000000 0x0 0x0
+  0x0 0x100000&amp;gt;;
+};
+};
+
+pci1: pcie&amp;lt; at &amp;gt;fffe0a000 {
+reg = &amp;lt;0xf 0xffe0a000 0 0x1000&amp;gt;;
+ranges = &amp;lt;0x2000000 0x0 0xe0000000 0xc 0x00000000 0x0 0x20000000
+  0x1000000 0x0 0x00000000 0xf 0xffc00000 0x0 0x10000&amp;gt;;
+pcie&amp;lt; at &amp;gt;0 {
+reg = &amp;lt;0x0 0x0 0x0 0x0 0x0&amp;gt;;
+ranges = &amp;lt;0x2000000 0x0 0xe0000000
+  0x2000000 0x0 0xe0000000
+  0x0 0x20000000
+
+  0x1000000 0x0 0x0
+  0x1000000 0x0 0x0
+  0x0 0x100000&amp;gt;;
+};
+};
+};
+
+/include/ "p1024rdb.dtsi"
+/include/ "fsl/p1020si-post.dtsi"
&lt;/pre&gt;</description>
    <dc:creator>b29983&lt; at &gt;freescale.com</dc:creator>
    <dc:date>2012-05-24T09:08:27</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50733">
    <title>Oops with Radeon/Uninorth on Maple</title>
    <link>http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50733</link>
    <description>&lt;pre&gt;Hello, colleagues,

I'm trying to enable an AGP slot (again) on my Maple board (dual 
PPC970FX board, with CPC925 (U3H) north bridge).

  For now I'm stuck with a problem: I use radeon card, drm-radeon driver 
with KMS.

If I force drm-radeon to think about a card as about PCI card (by 
commenting corresponding lines in drm_radeon_kms.c), everything works, I 
get framebuffer, working X11, etc. If I enable agpgart-uninorth driver
and RADEON_IS_AGP flag in drm driver, I get an Oops early during the 
bootstrap. Relevant part of the log (I can send full dmesg of normal 
bootstrap or this oops on request, if that would help).

[    2.820647] Linux agpgart interface v0.103
[    2.824909] agpgart-uninorth 0000:f0:0b.0: Apple U3H chipset
[    2.830668] agpgart-uninorth 0000:f0:0b.0: Found device u3, rev 35
[    2.843611] agpgart-uninorth 0000:f0:0b.0: configuring for size idx: 64
[    2.850638] agpgart-uninorth 0000:f0:0b.0: AGP aperture is 256M &amp;lt; at &amp;gt; 0x0
[    2.857646] [drm] Initialized drm 1.1.0 20060810
[    2.862567] [drm] radeon defaulting to kernel modesetting.
[    2.868091] [drm] radeon kernel modesetting enabled.
[    2.873222] radeon 0000:f0:10.0: enabling device (0000 -&amp;gt; 0003)
[    2.880311] radeon 0000:f0:10.0: enabling bus mastering
[    2.885591] [drm] initializing kernel modesetting (RV350 
0x1002:0x4152 0x18BC:0x0416).
[    2.893629] [drm] register mmio base: 0xD0020000
[    2.898260] [drm] register mmio size: 65536
[    2.947112] [drm] GPU not posted. posting now...
[    3.051033] agpgart-uninorth 0000:f0:0b.0: putting AGP V3 device into 
8x mode
[    3.058197] radeon 0000:f0:10.0: putting AGP V3 device into 8x mode
[    3.064666] radeon 0000:f0:10.0: GTT: 256M 0x00000000 - 0x0FFFFFFF
[    3.070864] [drm] Generation 2 PCI interface, using max accessible memory
[    3.077672] radeon 0000:f0:10.0: VRAM: 128M 0x00000000C0000000 - 
0x00000000C7FFFFFF (128M used)
[    3.086487] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[    3.093126] [drm] Driver supports precise vblank timestamp query.
[    3.099291] [drm] radeon: irq initialized.
[    3.103404] [drm] Detected VRAM RAM=128M, BAR=128M
[    3.108214] [drm] RAM width 128bits DDR
[    3.112263] [TTM] Zone  kernel: Available graphics memory: 496682 kiB
[    3.118732] [TTM] Initializing pool allocator
[    3.123346] [drm] radeon: 128M of VRAM memory ready
[    3.128256] [drm] radeon: 256M of GTT memory ready.
[    3.133295] [drm] radeon: ib pool ready.
[    3.137708] [drm] radeon: 1 quad pipes, 1 Z pipes initialized.
[    3.144018] radeon 0000:f0:10.0: WB disabled
[    3.148326] [drm] fence driver on ring 0 use gpu addr 0x00000000 and 
cpu addr 0xd000000000066000
[    3.157474] [drm] Loading R300 Microcode
[    3.162480] [drm] radeon: ring at 0x0000000000001000
[    3.167569] [drm] ring test succeeded in 0 usecs
cpu 0x0: Vector: 200 (Machine Check) at [c000000000d63aa0]
     pc: c0000000000cc07c: .trace_hardirqs_on_caller+0x6c/0x190
     lr: c0000000000152f4: .cpu_idle+0x1a4/0x220
     sp: c000000000d63d20
    msr: 9000000000009032
   current = 0xc000000000c4db30
   paca    = 0xc00000000ffff000   softe: 0        irq_happened: 0x01
     pid   = 0, comm = swapper/0
enter ? for help
[c000000000d63db0] c0000000000152f4 .cpu_idle+0x1a4/0x220
[c000000000d63e50] c000000000008fb8 .rest_init+0xe8/0x110
[c000000000d63ee0] c000000000ba2998 .start_kernel+0x3e4/0x408
[c000000000d63f90] c000000000007558 .start_here_common+0x20/0x48
0:mon&amp;gt; x
[  843.783295] Oops: Machine check, sig: 7 [#1]
[  843.787589] SMP NR_CPUS=4 Maple
[  843.790768] Modules linked in:
[  843.793855] NIP: c0000000000cc07c LR: c0000000000152f4 CTR: 
c000000000023eac
[  843.800920] REGS: c000000000d63aa0 TRAP: 0200   Not tainted  (3.4.0+)
[  843.807376] MSR: 9000000000009032 &amp;lt;SF,HV,EE,ME,IR,DR,RI&amp;gt;  CR: 
24222222  XER: 00000006
[  843.815412] SOFTE: 0
[  843.817607] TASK = c000000000c4db30[0] 'swapper/0' THREAD: 
c000000000d60000 CPU: 0
[  843.825035] GPR00: 0000000000000000 c000000000d63d20 c000000000d63280 
c0000000000152f4
[  843.833169] GPR04: 0000000000000000 c000000000099d10 0000000000000001 
0000000000000002
[  843.841302] GPR08: 0100000000000000 c000000000e828e8 0140000000000000 
0000000000000000
[  843.849436] GPR12: 0000000044222282 c00000000ffff000 0000000000000000 
0000000000000000
[  843.857570] GPR16: 0000000000ff8750 0000000000cdc890 00000000010001e0 
0000000000000000
[  843.865702] GPR20: 0000000000000000 0000000000000000 000000001dcd6500 
0000000000000000
[  843.873835] GPR24: 0000000000000000 0000000000ec7b00 9000000000009032 
c000000000d7b178
[  843.881979] GPR28: c000000000d7b278 0000000000000008 c000000000c970f8 
c0000000000152f4
[  843.890314] NIP [c0000000000cc07c] .trace_hardirqs_on_caller+0x6c/0x190
[  843.896942] LR [c0000000000152f4] .cpu_idle+0x1a4/0x220
[  843.902181] Call Trace:
[  843.904640] [c000000000d63d20] [c000000000d63db0] 
init_thread_union+0x3db0/0x4000 (unreliable)
[  843.913317] [c000000000d63db0] [c0000000000152f4] .cpu_idle+0x1a4/0x220
[  843.919964] [c000000000d63e50] [c000000000008fb8] .rest_init+0xe8/0x110
[  843.926615] [c000000000d63ee0] [c000000000ba2998] 
.start_kernel+0x3e4/0x408
[  843.933611] [c000000000d63f90] [c000000000007558] 
.start_here_common+0x20/0x48
[  843.940866] Instruction dump:
[  843.943868] 40de00a4 e92d01c8 800908e8 2f800000 40de0094 e93e8098 
80090000 2f800000
[  843.951829] 409e0030 880d01f2 2fa00000 40de00b0 &amp;lt;e93e84e8&amp;gt; 88090000 
2f800000 40de00c8


Looking for any suggestions on this.

&lt;/pre&gt;</description>
    <dc:creator>Dmitry Eremin-Solenikov</dc:creator>
    <dc:date>2012-05-24T06:18:55</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50729">
    <title>[PATCH v3 0/2] archdata init in device_add() notifier</title>
    <link>http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50729</link>
    <description>&lt;pre&gt;Here's what I put in my "for-3.6" branch for now.  We can still change
it, so let me know if you see any problems.

I reworked the changelogs, changed the notification function name per
Jesse, folded the one-line pcibios_setup_bus_notifier() into the only
caller (on microblaze), and changed it from __devinit to __init (on
powerpc) since it now has nothing to do with hotplug.

Thank you very much for doing this work, Matsumoto-san.  I hope to
eventually get rid of pcibios_fixup_bus() altogether, and this is a
significant step in that direction.

Bjorn
---

Hiroo Matsumoto (2):
      powerpc/PCI: move DMA &amp;amp; IRQ init to device_add() notification path
      microblaze/PCI: move DMA &amp;amp; IRQ init to device_add() notification path


 arch/microblaze/include/asm/pci.h          |    1 
 arch/microblaze/pci/pci-common.c           |   62 +++++++++++---------
 arch/powerpc/include/asm/pci.h             |    2 -
 arch/powerpc/kernel/pci-common.c           |   87 ++++++++++++++--------------
 arch/powerpc/kernel/pci_32.c               |    2 +
 arch/powerpc/kernel/pci_64.c               |    2 +
 arch/powerpc/kernel/pci_of_scan.c          |    1 
 arch/powerpc/platforms/pseries/pci_dlpar.c |    1 
 drivers/pci/pci.c                          |    5 --
 drivers/pcmcia/cardbus.c                   |    3 -
 include/linux/pci.h                        |    3 -
 11 files changed, 83 insertions(+), 86 deletions(-)
&lt;/pre&gt;</description>
    <dc:creator>Bjorn Helgaas</dc:creator>
    <dc:date>2012-05-23T22:36:55</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50726">
    <title>[PATCH] powerpc/p1010rdb: add EEPROMs to device tree</title>
    <link>http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50726</link>
    <description>&lt;pre&gt;Add EEPROM to the P1010RDB device tree.
The 24c01 acts as a memory SPD so it shouldn't be overwritten without
care.
The 24c256 is a general purpose memory.

Signed-off-by: Gustavo Zacarias &amp;lt;gustavo&amp;lt; at &amp;gt;zacarias.com.ar&amp;gt;
---
 arch/powerpc/boot/dts/p1010rdb.dtsi |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/arch/powerpc/boot/dts/p1010rdb.dtsi b/arch/powerpc/boot/dts/p1010rdb.dtsi
index 4977614..ec7c27a 100644
--- a/arch/powerpc/boot/dts/p1010rdb.dtsi
+++ b/arch/powerpc/boot/dts/p1010rdb.dtsi
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -126,12 +126,24 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 &amp;amp;board_soc {
 i2c&amp;lt; at &amp;gt;3000 {
+eeprom&amp;lt; at &amp;gt;50 {
+compatible = "st,24c256";
+reg = &amp;lt;0x50&amp;gt;;
+};
+
 rtc&amp;lt; at &amp;gt;68 {
 compatible = "pericom,pt7c4338";
 reg = &amp;lt;0x68&amp;gt;;
 };
 };
 
+i2c&amp;lt; at &amp;gt;3100 {
+eeprom&amp;lt; at &amp;gt;52 {
+compatible = "atmel,24c01";
+reg = &amp;lt;0x52&amp;gt;;
+};
+};
+
 spi&amp;lt; at &amp;gt;7000 {
 flash&amp;lt; at &amp;gt;0 {
 #address-cells = &amp;lt;1&amp;gt;;
&lt;/pre&gt;</description>
    <dc:creator>Gustavo Zacarias</dc:creator>
    <dc:date>2012-05-23T14:35:18</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50725">
    <title>[PATCH] powerpc: tracing: Avoid tracepoint duplication with DECLARE_EVENT_CLASS</title>
    <link>http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50725</link>
    <description>&lt;pre&gt;
irq_entry, irq_exit, timer_interrupt_entry and timer_interrupt_exit
all do the same thing so use DECLARE_EVENT_CLASS to avoid duplicating
everything 4 times.

This saves quite a lot of space in both instruction text and data:

   text    data     bss     dec     hex filename
   9265   19622      16   28903    70e7 arch/powerpc/kernel/irq.o
   6817   19019      16   25852    64fc arch/powerpc/kernel/irq.o

Signed-off-by: Anton Blanchard &amp;lt;anton&amp;lt; at &amp;gt;samba.org&amp;gt;
---

Index: linux-build/arch/powerpc/include/asm/trace.h
===================================================================
--- linux-build.orig/arch/powerpc/include/asm/trace.h2012-05-23 13:30:51.235534219 +1000
+++ linux-build/arch/powerpc/include/asm/trace.h2012-05-23 14:10:44.406639628 +1000
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -8,7 +8,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 struct pt_regs;
 
-TRACE_EVENT(irq_entry,
+DECLARE_EVENT_CLASS(ppc64_interrupt_class,
 
 TP_PROTO(struct pt_regs *regs),
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -25,55 +25,32 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; TRACE_EVENT(irq_entry,
 TP_printk("pt_regs=%p", __entry-&amp;gt;regs)
 );
 
-TRACE_EVENT(irq_exit,
+DEFINE_EVENT(ppc64_interrupt_class, irq_entry,
 
 TP_PROTO(struct pt_regs *regs),
 
-TP_ARGS(regs),
-
-TP_STRUCT__entry(
-__field(struct pt_regs *, regs)
-),
-
-TP_fast_assign(
-__entry-&amp;gt;regs = regs;
-),
-
-TP_printk("pt_regs=%p", __entry-&amp;gt;regs)
+TP_ARGS(regs)
 );
 
-TRACE_EVENT(timer_interrupt_entry,
+DEFINE_EVENT(ppc64_interrupt_class, irq_exit,
 
 TP_PROTO(struct pt_regs *regs),
 
-TP_ARGS(regs),
-
-TP_STRUCT__entry(
-__field(struct pt_regs *, regs)
-),
-
-TP_fast_assign(
-__entry-&amp;gt;regs = regs;
-),
-
-TP_printk("pt_regs=%p", __entry-&amp;gt;regs)
+TP_ARGS(regs)
 );
 
-TRACE_EVENT(timer_interrupt_exit,
+DEFINE_EVENT(ppc64_interrupt_class, timer_interrupt_entry,
 
 TP_PROTO(struct pt_regs *regs),
 
-TP_ARGS(regs),
+TP_ARGS(regs)
+);
 
-TP_STRUCT__entry(
-__field(struct pt_regs *, regs)
-),
+DEFINE_EVENT(ppc64_interrupt_class, timer_interrupt_exit,
 
-TP_fast_assign(
-__entry-&amp;gt;regs = regs;
-),
+TP_PROTO(struct pt_regs *regs),
 
-TP_printk("pt_regs=%p", __entry-&amp;gt;regs)
+TP_ARGS(regs)
 );
 
 #ifdef CONFIG_PPC_PSERIES
&lt;/pre&gt;</description>
    <dc:creator>Anton Blanchard</dc:creator>
    <dc:date>2012-05-23T04:47:48</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50723">
    <title>[PATCH] powerpc: Enable jump label support</title>
    <link>http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50723</link>
    <description>&lt;pre&gt;
When looking through some instruction traces I noticed our tracepoint
checks were inline. It turns out we don't have CONFIG_JUMP_LABEL
enabled.

By enabling CONFIG_JUMP_LABEL we replace a load/compare/branch with
a nop at every tracepoint call. For example in do_IRQ:

CONFIG_JUMP_LABEL disabled:
        stdx 3,11,9
        lwz 0,8(29)
        cmpwi 7,0,0
        bne- 7,.L124
        bl .irq_enter

CONFIG_JUMP_LABEL enabled:
        stdx 3,11,9     
        nop
        bl .irq_enter  

Signed-off-by: Anton Blanchard &amp;lt;anton&amp;lt; at &amp;gt;samba.org&amp;gt;
---

Index: linux-build/arch/powerpc/configs/ppc64_defconfig
===================================================================
--- linux-build.orig/arch/powerpc/configs/ppc64_defconfig2012-04-05 13:47:45.691857096 +1000
+++ linux-build/arch/powerpc/configs/ppc64_defconfig2012-05-23 13:14:04.254270594 +1000
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -16,6 +16,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; CONFIG_BLK_DEV_INITRD=y
 CONFIG_PROFILING=y
 CONFIG_OPROFILE=y
 CONFIG_KPROBES=y
+CONFIG_JUMP_LABEL=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 CONFIG_MODVERSIONS=y
Index: linux-build/arch/powerpc/configs/pseries_defconfig
===================================================================
--- linux-build.orig/arch/powerpc/configs/pseries_defconfig2012-04-05 13:47:45.691857096 +1000
+++ linux-build/arch/powerpc/configs/pseries_defconfig2012-05-23 13:14:59.783222304 +1000
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -24,6 +24,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; CONFIG_BLK_DEV_INITRD=y
 CONFIG_PROFILING=y
 CONFIG_OPROFILE=y
 CONFIG_KPROBES=y
+CONFIG_JUMP_LABEL=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 CONFIG_MODVERSIONS=y
&lt;/pre&gt;</description>
    <dc:creator>Anton Blanchard</dc:creator>
    <dc:date>2012-05-23T03:58:41</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50722">
    <title>powerc tree maintainership status</title>
    <link>http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50722</link>
    <description>&lt;pre&gt;Hi Folks !

I'm going to be getting some surgery next week. In the good case, I
should be officially back to work 2 weeks later, but I might end
up being unavailable for longer.

So while I'm away, Michael Ellerman and Paul Mackerras are going to take
care of the powerpc tree. I'll make sure Paul and I sign Michael's PGP
key before I leave.

Cheers,
Ben.
&lt;/pre&gt;</description>
    <dc:creator>Benjamin Herrenschmidt</dc:creator>
    <dc:date>2012-05-23T03:43:27</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50721">
    <title>[git pull] Please pull powerpc.git next branch</title>
    <link>http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50721</link>
    <description>&lt;pre&gt;Hi Linus !

Here are the powerpc goodies for 3.5. Main highlights are:

 - Support for the NX crypto engine in Power7+
 - A bunch of Anton goodness, including some micro optimization
   of our syscall entry on Power7
 - I converted a pile of our thermal control drivers to the
   new i2c APIs (essentially turning the old therm_pm72 into
   a proper set of windfarm drivers). That's one more step
   toward removing the deprecated i2c APIs, there's still a
   few drivers to fix, but we are getting close
 - kexec/kdump support for 47x embedded cores

The big missing thing here is no updates from Freescale. Not sure
what's up here, but with Kumar not working for them anymore things
are a bit in a state of flux in that area.

[Sent from my ozlabs address because gate.crashing.org appears to
have temporarily fallen off the face of the internet]

Cheers,
Ben.

The following changes since commit 7c0482e3d055e5de056d3c693b821e39205b99ae:

  powerpc/irq: Fix another case of lazy IRQ state getting out of sync (2012-05-12 09:40:41 +1000)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc.git next

for you to fetch changes up to 2074b1d9d53ae696dd3f49482bad43254f40f01d:

  powerpc: Fix irq distribution (2012-05-22 14:38:26 +1000)

----------------------------------------------------------------
Andre Heider (3):
      powerpc/ps3: Add highmem repository read routines
      powerpc/ps3: Use highmem region from repository
      powerpc/ps3: Remove MEMORY_HOTPLUG requirement

Anshuman Khandual (1):
      powerpc: Fixing a cputhread code documentation

Anton Blanchard (15):
      powerpc: Hide some system call labels from profile tools
      powerpc: No need to save XER in a system call
      powerpc: No need to preserve count register across system call
      powerpc: Better scheduling of CR save code in system call path
      powerpc: Clean up lppaca-&amp;gt;cede_latency_hint
      powerpc: Remove iseries specific fields in lppaca
      powerpc: Reformat lppaca.h
      powerpc: Remove empty giveup_altivec function on book3e CPUs
      powerpc: Optimise enable_kernel_altivec
      powerpc: Remove CONFIG_POWER4_ONLY
      powerpc: Require gcc 4.0 on 64-bit
      powerpc: Remove altivec fix for gcc versions before 4.0
      powerpc: Add 64-bit CPU targets for gcc
      powerpc: Use WARN instead of dump_stack when printing EEH error backtrace
      powerpc: Remove old powerpc specific ptrace getregs/setregs calls

Benjamin Herrenschmidt (20):
      Merge remote-tracking branch 'geoff/for-powerpc' into next
      i2c/powermac: Register i2c devices from device-tree
      powerpc/pmac: Convert therm_adt746x to new i2c probing
      powerpc/pmac: Convert windfarm_lm75 to new i2c probing
      powerpc/pmac: Convert windfarm_max6690 to new i2c probing
      powerpc/pmac: Convert windfarm_smu_sat to new i2c probing
      powerpc/windfarm: const'ify and add "priv" field to controls &amp;amp; sensors
      powerpc/windfarm: Remove spurrious sysfs_attr_init()
      powerpc/windfarm: Improve display of fan speeds in sysfs
      powerpc/windfarm: Add useful accessors
      powerpc/windfarm: Add ad7417 sensor
      powerpc/windfarm: Add lm87 sensor
      powerpc/windfarm: Updates to lm75 and max6690 sensors
      powerpc/windfarm: Add Fan Control Unit controls for G5s
      powerpc/powermac: New windfarm driver for PowerMac G5 (AGP) and Xserve G5
      Merge branch 'merge' into next
      powerpc/windfarm: Fix crash on SMU based machine after i2c conversion
      Merge remote-tracking branch 'jwb/next' into next
      Merge branch 'merge' into next
      Revert "powerpc/hw-breakpoint: Use generic hw-breakpoint interfaces for new PPC ptrace flags"

Geoff Levand (5):
      powerpc/ps3: Correct lv1 repository routine names
      powerpc/ps3: Add PS3 repository write support
      powerpc/ps3: Add highmem repository write routines
      powerpc/ps3: Minor Kconfig cleanup
      powerpc/ps3: Refresh ps3_defconfig

Hector Martin (1):
      powerpc/ps3: Add highmem region memory early

Josh Boyer (1):
      powerpc/40x: Use {upper,lower}_32_bits for msi_phys

K.Prasad (1):
      powerpc/hw-breakpoint: Use generic hw-breakpoint interfaces for new PPC ptrace flags

Kent Yoder (17):
      powerpc/pseries: Add new hvcall constants to support PFO
      powerpc/pseries: Add pseries update notifier for OFDT prop changes
      powerpc/pseries: Add PFO support to the VIO bus
      powerpc/pseries/hwrng: PFO-based hwrng driver
      powerpc/pseries: Enable the PFO-based RNG accelerator
      powerpc/crypto: nx driver code supporting nx encryption
      powerpc/crypto: AES-CBC mode routines for nx encryption
      powerpc/crypto: AES-CCM mode routines for nx encryption
      powerpc/crypto: AES-CTR mode routines for nx encryption
      powerpc/crypto: AES-ECB mode routines for nx encryption
      powerpc/crypto: AES-GCM mode routines for nx encryption
      powerpc/crypto: AES-XCBC mode routines for nx encryption
      powerpc/crypto: SHA256 hash routines for nx encryption
      powerpc/crypto: SHA512 hash routines for nx encryption
      powerpc/crypto: debugfs routines and docs for the nx device driver
      powerpc/crypto: Build files for the nx device driver
      powerpc/crypto: Enable the PFO-based encryption device

Kim Phillips (1):
      powerpc: Fix irq distribution

Mai La (2):
      powerpc/44x: Fix PCI MSI support for Maui APM821xx SoC and Bluestone board
      powerpc/44x: Add PCI MSI node for Maui APM821xx SoC and Bluestone board in DTS

Robert Jennings (1):
      powerpc/pseries: Support lower minimum entitlement for virtual processors

Stephen Rothwell (2):
      powerpc/windfarm: fix compiler warning
      powerpc/windfarm: don't pass const strings to snprintf

Suzuki Poulose (3):
      powerpc/44x: Fix/Initialize PID to kernel PID before the TLB search
      powerpc/47x: Kernel support for KEXEC
      powerpc/47x: Enable CRASH_DUMP

Tiejun Chen (1):
      powerpc: Remove now unused _TIF_RUNLATCH

Valentin Ilie (1):
      drivers/ps3: Fix checkpatch warnings in ps3av.c

 Documentation/ABI/testing/debugfs-pfo-nx-crypto |   45 ++
 arch/powerpc/Kconfig                            |    4 +-
 arch/powerpc/Makefile                           |   49 +-
 arch/powerpc/boot/dts/bluestone.dts             |   25 +
 arch/powerpc/configs/g5_defconfig               |    1 -
 arch/powerpc/configs/maple_defconfig            |    1 -
 arch/powerpc/configs/pasemi_defconfig           |    1 -
 arch/powerpc/configs/ps3_defconfig              |    6 -
 arch/powerpc/include/asm/asm-compat.h           |   11 +-
 arch/powerpc/include/asm/cputhreads.h           |    2 +-
 arch/powerpc/include/asm/hvcall.h               |   25 +-
 arch/powerpc/include/asm/lppaca.h               |  196 ++----
 arch/powerpc/include/asm/lv1call.h              |    4 +-
 arch/powerpc/include/asm/pSeries_reconfig.h     |   12 +
 arch/powerpc/include/asm/ppc_asm.h              |   10 +-
 arch/powerpc/include/asm/ptrace.h               |    6 -
 arch/powerpc/include/asm/switch_to.h            |    6 +-
 arch/powerpc/include/asm/thread_info.h          |    1 -
 arch/powerpc/include/asm/vio.h                  |   46 ++
 arch/powerpc/kernel/asm-offsets.c               |    4 -
 arch/powerpc/kernel/entry_64.S                  |   30 +-
 arch/powerpc/kernel/exceptions-64s.S            |    4 -
 arch/powerpc/kernel/head_44x.S                  |    8 -
 arch/powerpc/kernel/head_fsl_booke.S            |    8 -
 arch/powerpc/kernel/irq.c                       |    2 +-
 arch/powerpc/kernel/misc_32.S                   |  203 +++++-
 arch/powerpc/kernel/paca.c                      |    3 -
 arch/powerpc/kernel/process.c                   |    2 +-
 arch/powerpc/kernel/prom_init.c                 |   17 +-
 arch/powerpc/kernel/ptrace.c                    |   42 --
 arch/powerpc/kernel/ptrace32.c                  |   32 -
 arch/powerpc/kernel/vector.S                    |   10 +
 arch/powerpc/kernel/vio.c                       |  273 ++++++--
 arch/powerpc/lib/copyuser_64.S                  |    6 +-
 arch/powerpc/lib/mem_64.S                       |    6 +-
 arch/powerpc/lib/memcpy_64.S                    |    6 +-
 arch/powerpc/platforms/44x/Kconfig              |    2 +
 arch/powerpc/platforms/Kconfig.cputype          |   39 +-
 arch/powerpc/platforms/powermac/low_i2c.c       |    1 +
 arch/powerpc/platforms/ps3/Kconfig              |   22 +-
 arch/powerpc/platforms/ps3/mm.c                 |   77 ++-
 arch/powerpc/platforms/ps3/platform.h           |   16 +
 arch/powerpc/platforms/ps3/repository.c         |  198 ++++++
 arch/powerpc/platforms/pseries/eeh.c            |    2 +-
 arch/powerpc/platforms/pseries/plpar_wrappers.h |    4 +-
 arch/powerpc/platforms/pseries/reconfig.c       |    7 +
 arch/powerpc/sysdev/ppc4xx_msi.c                |   42 +-
 drivers/char/hw_random/Kconfig                  |   13 +
 drivers/char/hw_random/Makefile                 |    1 +
 drivers/char/hw_random/pseries-rng.c            |   96 +++
 drivers/crypto/Kconfig                          |   17 +
 drivers/crypto/nx/Makefile                      |   11 +
 drivers/crypto/nx/nx-aes-cbc.c                  |  141 ++++
 drivers/crypto/nx/nx-aes-ccm.c                  |  468 +++++++++++++
 drivers/crypto/nx/nx-aes-ctr.c                  |  178 +++++
 drivers/crypto/nx/nx-aes-ecb.c                  |  139 ++++
 drivers/crypto/nx/nx-aes-gcm.c                  |  353 ++++++++++
 drivers/crypto/nx/nx-aes-xcbc.c                 |  236 +++++++
 drivers/crypto/nx/nx-sha256.c                   |  246 +++++++
 drivers/crypto/nx/nx-sha512.c                   |  265 +++++++
 drivers/crypto/nx/nx.c                          |  716 +++++++++++++++++++
 drivers/crypto/nx/nx.h                          |  193 ++++++
 drivers/crypto/nx/nx_csbcpb.h                   |  205 ++++++
 drivers/crypto/nx/nx_debugfs.c                  |  103 +++
 drivers/i2c/busses/i2c-powermac.c               |   98 ++-
 drivers/macintosh/Kconfig                       |   23 +-
 drivers/macintosh/Makefile                      |   14 +
 drivers/macintosh/ams/ams-i2c.c                 |    2 +-
 drivers/macintosh/therm_adt746x.c               |  480 ++++++-------
 drivers/macintosh/windfarm.h                    |   51 +-
 drivers/macintosh/windfarm_ad7417_sensor.c      |  347 ++++++++++
 drivers/macintosh/windfarm_core.c               |   23 +-
 drivers/macintosh/windfarm_cpufreq_clamp.c      |    6 -
 drivers/macintosh/windfarm_fcu_controls.c       |  613 ++++++++++++++++
 drivers/macintosh/windfarm_lm75_sensor.c        |  135 +---
 drivers/macintosh/windfarm_lm87_sensor.c        |  201 ++++++
 drivers/macintosh/windfarm_max6690_sensor.c     |  109 +--
 drivers/macintosh/windfarm_mpu.h                |  105 +++
 drivers/macintosh/windfarm_pm72.c               |  847 +++++++++++++++++++++++
 drivers/macintosh/windfarm_pm81.c               |   25 +-
 drivers/macintosh/windfarm_pm91.c               |   33 +-
 drivers/macintosh/windfarm_rm31.c               |  740 ++++++++++++++++++++
 drivers/macintosh/windfarm_smu_controls.c       |    1 -
 drivers/macintosh/windfarm_smu_sat.c            |  132 ++--
 drivers/ps3/ps3av.c                             |   24 +-
 85 files changed, 7827 insertions(+), 1080 deletions(-)
 create mode 100644 Documentation/ABI/testing/debugfs-pfo-nx-crypto
 create mode 100644 drivers/char/hw_random/pseries-rng.c
 create mode 100644 drivers/crypto/nx/Makefile
 create mode 100644 drivers/crypto/nx/nx-aes-cbc.c
 create mode 100644 drivers/crypto/nx/nx-aes-ccm.c
 create mode 100644 drivers/crypto/nx/nx-aes-ctr.c
 create mode 100644 drivers/crypto/nx/nx-aes-ecb.c
 create mode 100644 drivers/crypto/nx/nx-aes-gcm.c
 create mode 100644 drivers/crypto/nx/nx-aes-xcbc.c
 create mode 100644 drivers/crypto/nx/nx-sha256.c
 create mode 100644 drivers/crypto/nx/nx-sha512.c
 create mode 100644 drivers/crypto/nx/nx.c
 create mode 100644 drivers/crypto/nx/nx.h
 create mode 100644 drivers/crypto/nx/nx_csbcpb.h
 create mode 100644 drivers/crypto/nx/nx_debugfs.c
 create mode 100644 drivers/macintosh/windfarm_ad7417_sensor.c
 create mode 100644 drivers/macintosh/windfarm_fcu_controls.c
 create mode 100644 drivers/macintosh/windfarm_lm87_sensor.c
 create mode 100644 drivers/macintosh/windfarm_mpu.h
 create mode 100644 drivers/macintosh/windfarm_pm72.c
 create mode 100644 drivers/macintosh/windfarm_rm31.c
&lt;/pre&gt;</description>
    <dc:creator>Benjamin Herrenschmidt</dc:creator>
    <dc:date>2012-05-23T03:40:23</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50720">
    <title>[PATCH v2 2/2] microblaze/PCI: Add pcibios_device_change_notifier for microblaze</title>
    <link>http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50720</link>
    <description>&lt;pre&gt;pcibios_setup_bus_devices which sets DMA and IRQs of PCI device is called
only when boot, so DMA and IRQs of PCI device will not set when hotplug.
This patch adds pcibios_device_change_notifier which sets DMA and IRQs of
PCI device when PCI device adds, so DMA and IRQs of PCI device will be set
when boot and hotplug.

Signed-off-by: Hiroo MATSUMOTO &amp;lt;matsumoto.hiroo&amp;lt; at &amp;gt;jp.fujitsu.com&amp;gt;
---
 arch/microblaze/include/asm/pci.h |    2 +-
 arch/microblaze/pci/pci-common.c  |   67 +++++++++++++++++++++---------------
 2 files changed, 40 insertions(+), 29 deletions(-)

diff --git a/arch/microblaze/include/asm/pci.h b/arch/microblaze/include/asm/pci.h
index 0331376..8d11277 100644
--- a/arch/microblaze/include/asm/pci.h
+++ b/arch/microblaze/include/asm/pci.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -149,8 +149,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; extern void pci_resource_to_user(const struct pci_dev *dev, int bar,
  const struct resource *rsrc,
  resource_size_t *start, resource_size_t *end);

-extern void pcibios_setup_bus_devices(struct pci_bus *bus);
 extern void pcibios_setup_bus_self(struct pci_bus *bus);
+extern void pcibios_setup_bus_notifier(void);

 /* This part of code was originally in xilinx-pci.h */
 #ifdef CONFIG_PCI_XILINX
diff --git a/arch/microblaze/pci/pci-common.c b/arch/microblaze/pci/pci-common.c
index 85f2ac1..bb28ede 100644
--- a/arch/microblaze/pci/pci-common.c
+++ b/arch/microblaze/pci/pci-common.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1063,31 +1063,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void __devinit pcibios_setup_bus_self(struct pci_bus *bus)
 pcibios_fixup_bridge(bus);
 }

-void __devinit pcibios_setup_bus_devices(struct pci_bus *bus)
-{
-struct pci_dev *dev;
-
-pr_debug("PCI: Fixup bus devices %d (%s)\n",
- bus-&amp;gt;number, bus-&amp;gt;self ? pci_name(bus-&amp;gt;self) : "PHB");
-
-list_for_each_entry(dev, &amp;amp;bus-&amp;gt;devices, bus_list) {
-/* Setup OF node pointer in archdata */
-dev-&amp;gt;dev.of_node = pci_device_to_OF_node(dev);
-
-/* Fixup NUMA node as it may not be setup yet by the generic
- * code and is needed by the DMA init
- */
-set_dev_node(&amp;amp;dev-&amp;gt;dev, pcibus_to_node(dev-&amp;gt;bus));
-
-/* Hook up default DMA ops */
-set_dma_ops(&amp;amp;dev-&amp;gt;dev, pci_dma_ops);
-dev-&amp;gt;dev.archdata.dma_data = (void *)PCI_DRAM_OFFSET;
-
-/* Read default IRQs and fixup if necessary */
-pci_read_irq_line(dev);
-}
-}
-
 void __devinit pcibios_fixup_bus(struct pci_bus *bus)
 {
 /* When called from the generic PCI probe, read PCI&amp;lt;-&amp;gt;PCI bridge
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1099,9 +1074,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void __devinit pcibios_fixup_bus(struct pci_bus *bus)

 /* Now fixup the bus bus */
 pcibios_setup_bus_self(bus);
-
-/* Now fixup devices on that bus */
-pcibios_setup_bus_devices(bus);
 }
 EXPORT_SYMBOL(pcibios_fixup_bus);

&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1604,6 +1576,43 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void __devinit pcibios_scan_phb(struct pci_controller *hose)
 hose-&amp;gt;last_busno = bus-&amp;gt;subordinate;
 }

+static int pcibios_device_change_notifier(struct notifier_block *nb,
+  unsigned long action, void *data)
+{
+struct pci_dev *dev = to_pci_dev(data);
+
+switch (action) {
+case BUS_NOTIFY_ADD_DEVICE:
+/* Setup OF node pointer in archdata */
+dev-&amp;gt;dev.of_node = pci_device_to_OF_node(dev);
+
+/* Fixup NUMA node as it may not be setup yet by the generic
+ * code and is needed by the DMA init
+ */
+set_dev_node(&amp;amp;dev-&amp;gt;dev, pcibus_to_node(dev-&amp;gt;bus));
+
+/* Hook up default DMA ops */
+set_dma_ops(&amp;amp;dev-&amp;gt;dev, pci_dma_ops);
+dev-&amp;gt;dev.archdata.dma_data = (void *)PCI_DRAM_OFFSET;
+
+/* Read default IRQs and fixup if necessary */
+pci_read_irq_line(dev);
+
+break;
+}
+
+return 0;
+}
+
+static struct notifier_block device_nb = {
+.notifier_call = pcibios_device_change_notifier,
+};
+
+void __devinit pcibios_setup_bus_notifier(void)
+{
+bus_register_notifier(&amp;amp;pci_bus_type, &amp;amp;device_nb);
+}
+
 static int __init pcibios_init(void)
 {
 struct pci_controller *hose, *tmp;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1611,6 +1620,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int __init pcibios_init(void)

 printk(KERN_INFO "PCI: Probing PCI hardware\n");

+pcibios_setup_bus_notifier();
+
 /* Scan all of the recorded PCI controllers.  */
 list_for_each_entry_safe(hose, tmp, &amp;amp;hose_list, list_node) {
 hose-&amp;gt;last_busno = 0xff;
&lt;/pre&gt;</description>
    <dc:creator>Hiroo Matsumoto</dc:creator>
    <dc:date>2012-05-23T02:34:03</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50719">
    <title>[PATCH v2 1/2] powerpc/PCI: Add pcibios_device_change_notifier for powerpc</title>
    <link>http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50719</link>
    <description>&lt;pre&gt;pcibios_setup_bus_devices which sets DMA and IRQs of PCI device is called
only when boot, so DMA and IRQs of PCI device will not set when hotplug.
This patch adds pcibios_device_change_notifier which sets DMA and IRQs of
PCI device when PCI device adds, so DMA and IRQs of PCI device will be set
when boot and hotplug.

* Not patched pciehp message on powerpc platform
# echo 1 &amp;gt; /sys/bus/pci/slots/1/power
&amp;lt;snip&amp;gt;
pcieport 0000:02:01.0: PCI bridge to [bus 03-03]
pcieport 0000:02:01.0:   bridge window [io  0xff7ee000-0xff7eefff]
pcieport 0000:02:01.0:   bridge window [mem 0xa0100000-0xa01fffff]
pcieport 0000:02:01.0: bridge window [mem 0xa0200000-0xa02fffff 64bit pref]
pci 0000:03:00.0: no hotplug settings from platform
e1000e 0000:03:00.0: Disabling ASPM  L1
e1000e 0000:03:00.0: enabling device (0000 -&amp;gt; 0002)
e1000e 0000:03:00.0: No usable DMA configuration, aborting
e1000e: probe of 0000:03:00.0 failed with error -5

* Patched pciehp message on powerpc platform
# echo 1 &amp;gt; /sys/bus/pci/slots/1/power
&amp;lt;snip&amp;gt;
pcieport 0000:02:01.0: PCI bridge to [bus 03-03]
pcieport 0000:02:01.0:   bridge window [io  0xff7ee000-0xff7eefff]
pcieport 0000:02:01.0:   bridge window [mem 0xa0100000-0xa01fffff]
pcieport 0000:02:01.0: bridge window [mem 0xa0200000-0xa02fffff 64bit pref]
pci 0000:03:00.0: no hotplug settings from platform
e1000e 0000:03:00.0: Disabling ASPM  L1
e1000e 0000:03:00.0: enabling device (0000 -&amp;gt; 0002)
irq: irq 6 on host /soc&amp;lt; at &amp;gt;ffe00000/msi&amp;lt; at &amp;gt;41600 mapped to virtual irq 27
e1000e 0000:03:00.0: eth0: (PCI Express:2.5GT/s:Width x1) 00:15:17:bf:c0:c9
e1000e 0000:03:00.0: eth0: Intel(R) PRO/1000 Network Connection
e1000e 0000:03:00.0: eth0: MAC: 1, PHY: 4, PBA No: D50861-003

Signed-off-by: Hiroo MATSUMOTO &amp;lt;matsumoto.hiroo&amp;lt; at &amp;gt;jp.fujitsu.com&amp;gt;
---
 arch/powerpc/include/asm/pci.h             |    2 +-
 arch/powerpc/kernel/pci-common.c           |   87 ++++++++++++++--------------
 arch/powerpc/kernel/pci_32.c               |    2 +
 arch/powerpc/kernel/pci_64.c               |    2 +
 arch/powerpc/kernel/pci_of_scan.c          |    1 -
 arch/powerpc/platforms/pseries/pci_dlpar.c |    1 -
 drivers/pci/pci.c                          |    5 --
 drivers/pcmcia/cardbus.c                   |    3 +-
 include/linux/pci.h                        |    3 -
 9 files changed, 49 insertions(+), 57 deletions(-)

diff --git a/arch/powerpc/include/asm/pci.h b/arch/powerpc/include/asm/pci.h
index f54b3d2..7b4ca5a 100644
--- a/arch/powerpc/include/asm/pci.h
+++ b/arch/powerpc/include/asm/pci.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -190,10 +190,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; extern void pci_resource_to_user(const struct pci_dev *dev, int bar,
  const struct resource *rsrc,
  resource_size_t *start, resource_size_t *end);

-extern void pcibios_setup_bus_devices(struct pci_bus *bus);
 extern void pcibios_setup_bus_self(struct pci_bus *bus);
 extern void pcibios_setup_phb_io_space(struct pci_controller *hose);
 extern void pcibios_scan_phb(struct pci_controller *hose);
+extern void pcibios_setup_bus_notifier(void);

 #endif/* __KERNEL__ */
 #endif /* __ASM_POWERPC_PCI_H */
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index cce98d7..42a00b5 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1097,40 +1097,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void __devinit pcibios_setup_bus_self(struct pci_bus *bus)
 ppc_md.pci_dma_bus_setup(bus);
 }

-void __devinit pcibios_setup_bus_devices(struct pci_bus *bus)
-{
-struct pci_dev *dev;
-
-pr_debug("PCI: Fixup bus devices %d (%s)\n",
- bus-&amp;gt;number, bus-&amp;gt;self ? pci_name(bus-&amp;gt;self) : "PHB");
-
-list_for_each_entry(dev, &amp;amp;bus-&amp;gt;devices, bus_list) {
-/* Cardbus can call us to add new devices to a bus, so ignore
- * those who are already fully discovered
- */
-if (dev-&amp;gt;is_added)
-continue;
-
-/* Fixup NUMA node as it may not be setup yet by the generic
- * code and is needed by the DMA init
- */
-set_dev_node(&amp;amp;dev-&amp;gt;dev, pcibus_to_node(dev-&amp;gt;bus));
-
-/* Hook up default DMA ops */
-set_dma_ops(&amp;amp;dev-&amp;gt;dev, pci_dma_ops);
-set_dma_offset(&amp;amp;dev-&amp;gt;dev, PCI_DRAM_OFFSET);
-
-/* Additional platform DMA/iommu setup */
-if (ppc_md.pci_dma_dev_setup)
-ppc_md.pci_dma_dev_setup(dev);
-
-/* Read default IRQs and fixup if necessary */
-pci_read_irq_line(dev);
-if (ppc_md.pci_irq_fixup)
-ppc_md.pci_irq_fixup(dev);
-}
-}
-
 void pcibios_set_master(struct pci_dev *dev)
 {
 /* No special bus mastering setup handling */
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1147,19 +1113,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void __devinit pcibios_fixup_bus(struct pci_bus *bus)

 /* Now fixup the bus bus */
 pcibios_setup_bus_self(bus);
-
-/* Now fixup devices on that bus */
-pcibios_setup_bus_devices(bus);
 }
 EXPORT_SYMBOL(pcibios_fixup_bus);

-void __devinit pci_fixup_cardbus(struct pci_bus *bus)
-{
-/* Now fixup devices on that bus */
-pcibios_setup_bus_devices(bus);
-}
-
-
 static int skip_isa_ioresource_align(struct pci_dev *dev)
 {
 if (pci_has_flag(PCI_CAN_SKIP_ISA_ALIGN) &amp;amp;&amp;amp;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1763,6 +1719,49 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void __devinit pcibios_scan_phb(struct pci_controller *hose)
 }
 }

+static int pcibios_device_change_notifier(struct notifier_block *nb,
+  unsigned long action, void *data)
+{
+struct pci_dev *dev = to_pci_dev(data);
+
+switch (action) {
+case BUS_NOTIFY_ADD_DEVICE:
+/* Setup OF node pointer in the device */
+dev-&amp;gt;dev.of_node = pci_device_to_OF_node(dev);
+
+/* Fixup NUMA node as it may not be setup yet by the generic
+ * code and is needed by the DMA init
+ */
+set_dev_node(&amp;amp;dev-&amp;gt;dev, pcibus_to_node(dev-&amp;gt;bus));
+
+/* Hook up default DMA ops */
+set_dma_ops(&amp;amp;dev-&amp;gt;dev, pci_dma_ops);
+set_dma_offset(&amp;amp;dev-&amp;gt;dev, PCI_DRAM_OFFSET);
+
+/* Additional platform DMA/iommu setup */
+if (ppc_md.pci_dma_dev_setup)
+ppc_md.pci_dma_dev_setup(dev);
+
+/* Read default IRQs and fixup if necessary */
+pci_read_irq_line(dev);
+if (ppc_md.pci_irq_fixup)
+ppc_md.pci_irq_fixup(dev);
+
+break;
+}
+
+return 0;
+}
+
+static struct notifier_block device_nb = {
+.notifier_call = pcibios_device_change_notifier,
+};
+
+void __devinit pcibios_setup_bus_notifier(void)
+{
+bus_register_notifier(&amp;amp;pci_bus_type, &amp;amp;device_nb);
+}
+
 static void fixup_hide_host_resource_fsl(struct pci_dev *dev)
 {
 int i, class = dev-&amp;gt;class &amp;gt;&amp;gt; 8;
diff --git a/arch/powerpc/kernel/pci_32.c b/arch/powerpc/kernel/pci_32.c
index fdd1a3d..5a30cec 100644
--- a/arch/powerpc/kernel/pci_32.c
+++ b/arch/powerpc/kernel/pci_32.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -231,6 +231,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int __init pcibios_init(void)

 printk(KERN_INFO "PCI: Probing PCI hardware\n");

+pcibios_setup_bus_notifier();
+
 if (pci_has_flag(PCI_REASSIGN_ALL_BUS))
 pci_assign_all_buses = 1;

diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c
index 3318d39..d66c9dc 100644
--- a/arch/powerpc/kernel/pci_64.c
+++ b/arch/powerpc/kernel/pci_64.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -50,6 +50,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int __init pcibios_init(void)

 printk(KERN_INFO "PCI: Probing PCI hardware\n");

+pcibios_setup_bus_notifier();
+
 /* For now, override phys_mem_access_prot. If we need it,g
  * later, we may move that initialization to each ppc_md
  */
diff --git a/arch/powerpc/kernel/pci_of_scan.c b/arch/powerpc/kernel/pci_of_scan.c
index b37d0b5..1e29642 100644
--- a/arch/powerpc/kernel/pci_of_scan.c
+++ b/arch/powerpc/kernel/pci_of_scan.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -329,7 +329,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void __devinit __of_scan_bus(struct device_node *node,
  */
 if (!rescan_existing)
 pcibios_setup_bus_self(bus);
-pcibios_setup_bus_devices(bus);

 /* Now scan child busses */
 list_for_each_entry(dev, &amp;amp;bus-&amp;gt;devices, bus_list) {
diff --git a/arch/powerpc/platforms/pseries/pci_dlpar.c b/arch/powerpc/platforms/pseries/pci_dlpar.c
index 55d4ec1..fdb8b64 100644
--- a/arch/powerpc/platforms/pseries/pci_dlpar.c
+++ b/arch/powerpc/platforms/pseries/pci_dlpar.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -120,7 +120,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void pcibios_add_pci_devices(struct pci_bus * bus)
 num = pci_scan_slot(bus, PCI_DEVFN(slotno, 0));
 if (!num)
 return;
-pcibios_setup_bus_devices(bus);
 max = bus-&amp;gt;secondary;
 for (pass=0; pass &amp;lt; 2; pass++)
 list_for_each_entry(dev, &amp;amp;bus-&amp;gt;devices, bus_list) {
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index af295bb..f363b5d 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3698,11 +3698,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int __attribute__ ((weak)) pci_ext_cfg_avail(struct pci_dev *dev)
 return 1;
 }

-void __weak pci_fixup_cardbus(struct pci_bus *bus)
-{
-}
-EXPORT_SYMBOL(pci_fixup_cardbus);
-
 static int __init pci_setup(char *str)
 {
 while (str) {
diff --git a/drivers/pcmcia/cardbus.c b/drivers/pcmcia/cardbus.c
index 9a58862..8f7baa6 100644
--- a/drivers/pcmcia/cardbus.c
+++ b/drivers/pcmcia/cardbus.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -71,7 +71,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int __ref cb_alloc(struct pcmcia_socket *s)
 unsigned int max, pass;

 s-&amp;gt;functions = pci_scan_slot(bus, PCI_DEVFN(0, 0));
-pci_fixup_cardbus(bus);

 max = bus-&amp;gt;secondary;
 for (pass = 0; pass &amp;lt; 2; pass++)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -85,7 +84,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int __ref cb_alloc(struct pcmcia_socket *s)
  */
 pci_bus_size_bridges(bus);
 pci_bus_assign_resources(bus);
-cardbus_config_irq_and_cls(bus, s-&amp;gt;pci_irq);

 /* socket specific tune function */
 if (s-&amp;gt;tune_bridge)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -93,6 +91,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int __ref cb_alloc(struct pcmcia_socket *s)

 pci_enable_bridges(bus);
 pci_bus_add_devices(bus);
+cardbus_config_irq_and_cls(bus, s-&amp;gt;pci_irq);

 return 0;
 }
diff --git a/include/linux/pci.h b/include/linux/pci.h
index a16b1df..56f50fd 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -651,9 +651,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; resource_size_t pcibios_align_resource(void *, const struct resource *,
 resource_size_t);
 void pcibios_update_irq(struct pci_dev *, int irq);

-/* Weak but can be overriden by arch */
-void pci_fixup_cardbus(struct pci_bus *);
-
 /* Generic PCI functions used internally */

 void pcibios_scan_specific_bus(int busn);
&lt;/pre&gt;</description>
    <dc:creator>Hiroo Matsumoto</dc:creator>
    <dc:date>2012-05-23T02:33:54</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50718">
    <title>[PATCH v2 0/2] Add pcibios_device_change_notifier</title>
    <link>http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50718</link>
    <description>&lt;pre&gt;This patchset is for PCI hotplug.


pcibios_setup_bus_devices which sets DMA and IRQs of PCI device is called
only when boot. DMA setting in probe for PCI driver, like dma_set_mask,
does not work on powerpc platform. So it is need to set DMA and IRQs of
PCI device when hotplug.

1. Moving pcibios_setup_bus_devices code to pcibios_device_change_notifier
   which is registered to bus notifier in pcibios_init.
2. Removing caller and callee of pcibios_setup_bus_devices bus notifier
   works instead of pcibios_setup_bus_devices.
3. Using this bus notifier for microblaze because microblaze/PCI is similer
   with powerpc/PCI.

[PATCH v2 1/2] powerpc/PCI: Add pcibios_device_change_notifier for powerpc
[PATCH v2 2/2] microblaze/PCI: Add pcibios_device_change_notifier for microblaze


Regards.

Hiroo MATSUMOTO
&lt;/pre&gt;</description>
    <dc:creator>Hiroo Matsumoto</dc:creator>
    <dc:date>2012-05-23T02:33:42</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50711">
    <title>Handling spin table in kdump</title>
    <link>http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50711</link>
    <description>&lt;pre&gt;Hi

I came across the following issue while testing Kdump on an SMP 
board(Currituck) running a non-SMP kernel. Even though the kernel is UP,
the device-tree has the nodes for second CPU and the related details.


The kexec tool adds the spin table area as a reserved section in the 
device tree for the dump capture kernel. This value is read from the 
'cpu-release-addr'.

But now, if the spin table is not located within the 'Reserved region' 
for the crash kernel, the dump capture kernel would fail to boot, 
hitting a BUG in mm/bootmem.c as in [1].

This is because we try to reserve a region which is not available to the 
kernel.

So I am wondering how is this handled really on an SMP board (Fsl_bookE).

There are two possible solutions :
1) Do not reserve the regions for the spin-table, as we will use
only the crashing CPU in the second kernel(maxcpus=1).


2) Add the spin-table region to the available memory regions passed
to the kernel by kexec-tools.

I have tested (1) and it works fine for me. Yet to test (2).


Thoughts ?


Thanks
Suzuki



[1] Kernel Bug
----------------


Linux version 3.3.0-rc5 (root&amp;lt; at &amp;gt;suzukikp.in.ibm.com) (gcc version 4.3.4 
[gcc-4_3-branch revision 152973] (GCC) ) #12 Tue May 22 18:03:01 IST2
Found legacy serial port 0 for /plb/opb/serial&amp;lt; at &amp;gt;10000000
   mem=20010000000, taddr=20010000000, irq=0, clk=1851851, speed=115200
------------[ cut here ]------------
kernel BUG at mm/bootmem.c:351!
Vector: 700 (Program Check) at [c8a61e90]
     pc: c847f91c: mark_bootmem+0xa0/0x14c
     lr: c8472670: do_init_bootmem+0x1ac/0x218
     sp: c8a61f40
    msr: 21000
   current = 0xc8a4a500
     pid   = 0, comm = swapper
kernel BUG at mm/bootmem.c:351!
enter ? for help
[c8a61f70] c8472670 do_init_bootmem+0x1ac/0x218
[c8a61f90] c847025c setup_arch+0x1bc/0x234
[c8a61fb0] c846b62c start_kernel+0x98/0x358
[c8a61ff0] c80000b4 _start+0xb4/0xf8
&lt;/pre&gt;</description>
    <dc:creator>Suzuki K. Poulose</dc:creator>
    <dc:date>2012-05-22T12:42:10</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50709">
    <title>[PATCH] gianfar:don't add FCB length to hard_header_len</title>
    <link>http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50709</link>
    <description>&lt;pre&gt;FCB(Frame Control Block) isn't the part of netdev hard header.
Add FCB to hard_header_len will make GRO fail at MAC comparision stage.

Signed-off-by: Jiajun Wu &amp;lt;b06378&amp;lt; at &amp;gt;freescale.com&amp;gt;
---
 drivers/net/ethernet/freescale/gianfar.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/freescale/gianfar.c b/drivers/net/ethernet/freescale/gianfar.c
index 1adb024..0741ade 100644
--- a/drivers/net/ethernet/freescale/gianfar.c
+++ b/drivers/net/ethernet/freescale/gianfar.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1082,7 +1082,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int gfar_probe(struct platform_device *ofdev)
 
 if (dev-&amp;gt;features &amp;amp; NETIF_F_IP_CSUM ||
 priv-&amp;gt;device_flags &amp;amp; FSL_GIANFAR_DEV_HAS_TIMER)
-dev-&amp;gt;hard_header_len += GMAC_FCB_LEN;
+dev-&amp;gt;needed_headroom = GMAC_FCB_LEN;
 
 /* Program the isrg regs only if number of grps &amp;gt; 1 */
 if (priv-&amp;gt;num_grps &amp;gt; 1) {
&lt;/pre&gt;</description>
    <dc:creator>Jiajun Wu</dc:creator>
    <dc:date>2012-05-22T09:00:48</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50696">
    <title>powerpc -next rebase WARNING</title>
    <link>http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50696</link>
    <description>&lt;pre&gt;Folks, bad news ... my fault.

I accidentally forgot a --signoff on a git am command last week, meaning
that a pair of patches are in -next and not signed off by me.

For various (legal) reasons that cannot go into Linus tree as-is, so I
have to rebase the tree to fix it.

Sorry about that ...

Cheers,
Ben.
&lt;/pre&gt;</description>
    <dc:creator>Benjamin Herrenschmidt</dc:creator>
    <dc:date>2012-05-22T01:51:13</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50695">
    <title>linux-next: PowerPC boot failures in next-20120521</title>
    <link>http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50695</link>
    <description>&lt;pre&gt;Hi all,

Last nights boot tests on various PowerPC systems failed like this:

calling  .numa_group_init+0x0/0x3c &amp;lt; at &amp;gt; 1
initcall .numa_group_init+0x0/0x3c returned 0 after 0 usecs
calling  .numa_init+0x0/0x1dc &amp;lt; at &amp;gt; 1
Unable to handle kernel paging request for data at address 0x00001688
Faulting instruction address: 0xc00000000016e154
Oops: Kernel access of bad area, sig: 11 [#1]
SMP NR_CPUS=32 NUMA pSeries
Modules linked in:
NIP: c00000000016e154 LR: c0000000001b9140 CTR: 0000000000000000
REGS: c0000003fc8c76d0 TRAP: 0300   Not tainted  (3.4.0-autokern1)
MSR: 8000000000009032 &amp;lt;SF,EE,ME,IR,DR,RI&amp;gt;  CR: 24044022  XER: 00000003
SOFTE: 1
CFAR: 000000000000562c
DAR: 0000000000001688, DSISR: 40000000
TASK = c0000003fc8c8000[1] 'swapper/0' THREAD: c0000003fc8c4000 CPU: 0
GPR00: 0000000000000000 c0000003fc8c7950 c000000000d05b30 00000000000012d0 
GPR04: 0000000000000000 0000000000001680 0000000000000000 c0000003fe032f60 
GPR08: 0004005400000001 0000000000000000 ffffffffffffc980 c000000000d24fe0 
GPR12: 0000000024044024 c00000000f33b000 0000000001a3fa78 00000000009bac00 
GPR16: 0000000000e1f338 0000000002d513f0 0000000000001680 0000000000000000 
GPR20: 0000000000000001 c0000003fc8c7c00 0000000000000000 0000000000000001 
GPR24: 0000000000000001 c000000000d1b490 0000000000000000 0000000000001680 
GPR28: 0000000000000000 0000000000000000 c000000000c7ce58 c0000003fe009200 
NIP [c00000000016e154] .__alloc_pages_nodemask+0xc4/0x8f0
LR [c0000000001b9140] .new_slab+0xd0/0x3c0
Call Trace:
[c0000003fc8c7950] [2e6e756d615f696e] 0x2e6e756d615f696e (unreliable)
[c0000003fc8c7ae0] [c0000000001b9140] .new_slab+0xd0/0x3c0
[c0000003fc8c7b90] [c0000000001b9844] .__slab_alloc+0x254/0x5b0
[c0000003fc8c7cd0] [c0000000001bb7a4] .kmem_cache_alloc_node_trace+0x94/0x260
[c0000003fc8c7d80] [c000000000ba36d0] .numa_init+0x98/0x1dc
[c0000003fc8c7e10] [c00000000000ace4] .do_one_initcall+0x1a4/0x1e0
[c0000003fc8c7ed0] [c000000000b7b354] .kernel_init+0x124/0x2e0
[c0000003fc8c7f90] [c0000000000211c8] .kernel_thread+0x54/0x70
Instruction dump:
5400d97e 7b170020 0b000000 eb3e8000 3b800000 80190088 2f800000 40de0014 
7860efe2 787c6fe2 78000fa4 7f9c0378 &amp;lt;e81b0008&amp;gt; 83f90000 2fa00000 7fff1838 
---[ end trace 31fd0ba7d8756001 ]---

swapper/0 (1) used greatest stack depth: 10864 bytes left
Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b

I may be completely wrong, but I guess the obvious target would be the
sched/numa branch that came in via the tip tree.

Config file attached.  I haven't had a chance to try to bisect this yet.

Anyone have any ideas?
&lt;/pre&gt;</description>
    <dc:creator>Stephen Rothwell</dc:creator>
    <dc:date>2012-05-22T01:40:51</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50667">
    <title>[PATCH] cpuidle: (POWER) Replace pseries_notify_cpuidle_add call with a elegant notifier to fix lockdep problem in start_secondary</title>
    <link>http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50667</link>
    <description>&lt;pre&gt;
The following patch is to remove the pseries_notify_add_cpu() call
and replace it by a hot plug notifier.
This would prevent cpuidle resources being
released and allocated each time cpu comes online on pseries.
The earlier design was causing a lockdep problem
in start_secondary as reported on this thread
        -https://lkml.org/lkml/2012/5/17/2

This applies on 3.4-rc7

Signed-off-by: Deepthi Dharwar &amp;lt;deepthi&amp;lt; at &amp;gt;linux.vnet.ibm.com&amp;gt;
---
 arch/powerpc/include/asm/processor.h            |    2 --
 arch/powerpc/platforms/pseries/processor_idle.c |   25
+++++++++++++++++------
 arch/powerpc/platforms/pseries/smp.c            |    1 -
 3 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/arch/powerpc/include/asm/processor.h
b/arch/powerpc/include/asm/processor.h
index 8e2d037..c6bc22b 100644
--- a/arch/powerpc/include/asm/processor.h
+++ b/arch/powerpc/include/asm/processor.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -390,10 +390,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void cpu_idle_wait(void);

 #ifdef CONFIG_PSERIES_IDLE
 extern void update_smt_snooze_delay(int snooze);
-extern int pseries_notify_cpuidle_add_cpu(int cpu);
 #else
 static inline void update_smt_snooze_delay(int snooze) {}
-static inline int pseries_notify_cpuidle_add_cpu(int cpu) { return 0; }
 #endif

 extern void flush_instruction_cache(void);
diff --git a/arch/powerpc/platforms/pseries/processor_idle.c
b/arch/powerpc/platforms/pseries/processor_idle.c
index 41a34bc..d1a7dc0 100644
--- a/arch/powerpc/platforms/pseries/processor_idle.c
+++ b/arch/powerpc/platforms/pseries/processor_idle.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -11,6 +11,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include &amp;lt;linux/moduleparam.h&amp;gt;
 #include &amp;lt;linux/cpuidle.h&amp;gt;
 #include &amp;lt;linux/cpu.h&amp;gt;
+#include &amp;lt;linux/notifier.h&amp;gt;

 #include &amp;lt;asm/paca.h&amp;gt;
 #include &amp;lt;asm/reg.h&amp;gt;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -186,17 +187,28 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static struct cpuidle_state
shared_states[MAX_IDLE_STATE_COUNT] = {
 .enter = &amp;amp;shared_cede_loop },
 };

-int pseries_notify_cpuidle_add_cpu(int cpu)
+static int pseries_cpuidle_add_cpu_notifier(struct notifier_block *n,
+unsigned long action, void *hcpu)
 {
+int hotcpu = (unsigned long)hcpu;
 struct cpuidle_device *dev =
-per_cpu_ptr(pseries_cpuidle_devices, cpu);
-if (dev &amp;amp;&amp;amp; cpuidle_get_driver()) {
-cpuidle_disable_device(dev);
-cpuidle_enable_device(dev);
+per_cpu_ptr(pseries_cpuidle_devices, hotcpu);
+
+switch (action &amp;amp; 0xf) {
+case CPU_ONLINE:
+if (dev &amp;amp;&amp;amp; cpuidle_get_driver()) {
+cpuidle_disable_device(dev);
+cpuidle_enable_device(dev);
+}
+break;
 }
-return 0;
+return NOTIFY_OK;
 }

+static struct notifier_block setup_hotplug_notifier = {
+.notifier_call = pseries_cpuidle_add_cpu_notifier,
+};
+
 /*
  * pseries_cpuidle_driver_init()
  */
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -321,6 +333,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int __init pseries_processor_idle_init(void)
 return retval;
 }

+register_cpu_notifier(&amp;amp;setup_hotplug_notifier);
 printk(KERN_DEBUG "pseries_idle_driver registered\n");

 return 0;
diff --git a/arch/powerpc/platforms/pseries/smp.c
b/arch/powerpc/platforms/pseries/smp.c
index e16bb8d..71706bc 100644
--- a/arch/powerpc/platforms/pseries/smp.c
+++ b/arch/powerpc/platforms/pseries/smp.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -147,7 +147,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void __devinit smp_xics_setup_cpu(int cpu)
 set_cpu_current_state(cpu, CPU_STATE_ONLINE);
 set_default_offline_state(cpu);
 #endif
-pseries_notify_cpuidle_add_cpu(cpu);
 }

 static int __devinit smp_pSeries_kick_cpu(int nr)
&lt;/pre&gt;</description>
    <dc:creator>Deepthi Dharwar</dc:creator>
    <dc:date>2012-05-18T13:28:58</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50661">
    <title>[PATCH] powerpc: fix irq distribution</title>
    <link>http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50661</link>
    <description>&lt;pre&gt;setting CONFIG_IRQ_ALL_CPUS distributes IRQs to CPUs only when
the number of online CPUs equals NR_CPUS.  See commit
280ff97494e0fef4124bee5c52e39b23a18dd283 "sparc64: fix and
optimize irq distribution" for more details.

Using the online mask fixes IRQ-to-CPU distribution on systems
that boot with less than NR_CPUS.

Signed-off-by: Kim Phillips &amp;lt;kim.phillips&amp;lt; at &amp;gt;freescale.com&amp;gt;
---
 arch/powerpc/kernel/irq.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c
index 2a599ce..c05fd53 100644
--- a/arch/powerpc/kernel/irq.c
+++ b/arch/powerpc/kernel/irq.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -891,7 +891,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int irq_choose_cpu(const struct cpumask *mask)
 {
 int cpuid;
 
-if (cpumask_equal(mask, cpu_all_mask)) {
+if (cpumask_equal(mask, cpu_online_mask)) {
 static int irq_rover;
 static DEFINE_RAW_SPINLOCK(irq_rover_lock);
 unsigned long flags;
&lt;/pre&gt;</description>
    <dc:creator>Kim Phillips</dc:creator>
    <dc:date>2012-05-18T01:11:45</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50660">
    <title>[PATCH] mtd: Fix typo in Kconfig</title>
    <link>http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50660</link>
    <description>&lt;pre&gt;MTD_OF_PARTS and the default setting is not working due to using 'Y'
instead of 'y', introduced in commit
d6137badeff1ef64b4e0092ec249ebdeaeb3ff37. This made our board, and
possibly other boards using DTS defined partitions and not having
CONFIG_MTD_OF_PARTS=y defined in the defconfig, fail to mount root
after v3.1.

Signed-off-by: Frank Svendsboe &amp;lt;frank.svendsboe&amp;lt; at &amp;gt;gmail.com&amp;gt;
---
 drivers/mtd/Kconfig |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig
index 5760c1a..27143e0 100644
--- a/drivers/mtd/Kconfig
+++ b/drivers/mtd/Kconfig
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -128,7 +128,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; config MTD_AFS_PARTS
 
 config MTD_OF_PARTS
 tristate "OpenFirmware partitioning information support"
-default Y
+default y
 depends on OF
 help
   This provides a partition parsing function which derives
&lt;/pre&gt;</description>
    <dc:creator>Frank Svendsboe</dc:creator>
    <dc:date>2012-05-17T20:43:09</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50652">
    <title>ppc/sata-fsl: orphan config value: CONFIG_MPC8315_DS</title>
    <link>http://comments.gmane.org/gmane.linux.ports.ppc.embedded/50652</link>
    <description>&lt;pre&gt;
Greetings.

I was occasionally running into problems at boot time on an
MPC8315-based board (derived from the MPC831xRDB, apparently), using
SATA to talk to an SSD.  My vendor suggested that I enable
CONFIG_MPC8315_DS.

That symbol is only found once in the entire kernel codebase:

  $ git checkout v3.4-rc7
  HEAD is now at 36be505... Linux 3.4-rc7

  $ git grep -nH CONFIG_MPC8315_DS
  drivers/ata/sata_fsl.c:729:#ifdef CONFIG_MPC8315_DS

There is no kconfig support for it at all.

It was added in 2007; further, this is the only commit in the entire
git history that contains this string:

   commit e7eac96e8f0e57a6e9f94943557bc2b23be31471
   Author: ashish kalra &amp;lt;ashish.kalra&amp;lt; at &amp;gt;freescale.com&amp;gt;
   Date:   Wed Oct 31 19:28:02 2007 +0800

       ata/sata_fsl: Move MPC8315DS link speed limit workaround to specific ifdef
       
       Signed-off-by: ashish kalra &amp;lt;ashish.kalra&amp;lt; at &amp;gt;freescale.com&amp;gt;
       Signed-off-by: Li Yang &amp;lt;leoli&amp;lt; at &amp;gt;freescale.com&amp;gt;
       Signed-off-by: Jeff Garzik &amp;lt;jeff&amp;lt; at &amp;gt;garzik.org&amp;gt;

   diff --git a/drivers/ata/sata_fsl.c b/drivers/ata/sata_fsl.c
   index 5892472..e076e1f 100644
   --- a/drivers/ata/sata_fsl.c
   +++ b/drivers/ata/sata_fsl.c
   &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -652,6 +652,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int sata_fsl_port_start(struct ata_port *ap)
           VPRINTK("HControl = 0x%x\n", ioread32(hcr_base + HCONTROL));
           VPRINTK("CHBA  = 0x%x\n", ioread32(hcr_base + CHBA));
    
   +#ifdef CONFIG_MPC8315_DS
           /*
            * Workaround for 8315DS board 3gbps link-up issue,
            * currently limit SATA port to GEN1 speed
   &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -664,6 +665,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int sata_fsl_port_start(struct ata_port *ap)
           sata_fsl_scr_read(ap, SCR_CONTROL, &amp;amp;temp);
           dev_printk(KERN_WARNING, dev, "scr_control, speed limited to %x\n",
                           temp);
   +#endif
    
           return 0;
    }

This otherwise-unsupported variable was noted by Robert Day in 2008;
Adrian Bunk suggested a patch, but the Freescale folks said that it
was for a not-yet-mainlined board, so the patch was dropped:

   http://marc.info/?l=linux-ide&amp;amp;m=121783965216004&amp;amp;w=2

As Robert notied again in 2010, it still wasn't mainlined:

   http://marc.info/?l=linux-ide&amp;amp;m=121783965216004&amp;amp;w=2

And, obviously, it still isn't today.

Can the Freescale people tell us exactly what we should be testing to
determine when to enforce this restriction?  A config variable that
points to a non-existent board doesn't seem much help.

Thanks,
Tony
&lt;/pre&gt;</description>
    <dc:creator>Anthony Foiani</dc:creator>
    <dc:date>2012-05-17T17:08:18</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.linux.ports.ppc.embedded">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.linux.ports.ppc.embedded</link>
  </textinput>
</rdf:RDF>

