Rename defconfig-petitboot defconfig-ps3-petitboot
[openwrt.git] / target / linux / generic-2.6 / patches-2.6.24 / 700-powerpc_git.patch
index e31b814..7524eb3 100644 (file)
@@ -1,6 +1,6 @@
 --- a/Documentation/kernel-parameters.txt
 +++ b/Documentation/kernel-parameters.txt
 --- a/Documentation/kernel-parameters.txt
 +++ b/Documentation/kernel-parameters.txt
-@@ -686,6 +686,7 @@
+@@ -686,6 +686,7 @@ and is between 256 and 4096 characters. 
                        See Documentation/isdn/README.HiSax.
  
        hugepages=      [HW,X86-32,IA-64] Maximal number of HugeTLB pages.
                        See Documentation/isdn/README.HiSax.
  
        hugepages=      [HW,X86-32,IA-64] Maximal number of HugeTLB pages.
@@ -10,7 +10,7 @@
        i8042.dumbkbd   [HW] Pretend that controller can only read data from
 --- a/Documentation/powerpc/00-INDEX
 +++ b/Documentation/powerpc/00-INDEX
        i8042.dumbkbd   [HW] Pretend that controller can only read data from
 --- a/Documentation/powerpc/00-INDEX
 +++ b/Documentation/powerpc/00-INDEX
-@@ -28,3 +28,6 @@
+@@ -28,3 +28,6 @@ sound.txt
        - info on sound support under Linux/PPC
  zImage_layout.txt
        - info on the kernel images for Linux/PPC
        - info on sound support under Linux/PPC
  zImage_layout.txt
        - info on the kernel images for Linux/PPC
@@ -19,7 +19,7 @@
 +        Engine and the code that parses and uploads the microcode therein.
 --- a/Documentation/powerpc/booting-without-of.txt
 +++ b/Documentation/powerpc/booting-without-of.txt
 +        Engine and the code that parses and uploads the microcode therein.
 --- a/Documentation/powerpc/booting-without-of.txt
 +++ b/Documentation/powerpc/booting-without-of.txt
-@@ -52,7 +52,11 @@
+@@ -52,7 +52,11 @@ Table of Contents
        i) Freescale QUICC Engine module (QE)
        j) CFI or JEDEC memory-mapped NOR flash
        k) Global Utilities Block
        i) Freescale QUICC Engine module (QE)
        j) CFI or JEDEC memory-mapped NOR flash
        k) Global Utilities Block
@@ -32,7 +32,7 @@
  
    VII - Specifying interrupt information for devices
      1) interrupts property
  
    VII - Specifying interrupt information for devices
      1) interrupts property
-@@ -671,10 +675,10 @@
+@@ -671,10 +675,10 @@ device or bus to be described by the dev
  
  In general, the format of an address for a device is defined by the
  parent bus type, based on the #address-cells and #size-cells
  
  In general, the format of an address for a device is defined by the
  parent bus type, based on the #address-cells and #size-cells
@@ -47,7 +47,7 @@
  
  Those 2 properties define 'cells' for representing an address and a
  size. A "cell" is a 32-bit number. For example, if both contain 2
  
  Those 2 properties define 'cells' for representing an address and a
  size. A "cell" is a 32-bit number. For example, if both contain 2
-@@ -711,13 +715,14 @@
+@@ -711,13 +715,14 @@ define a bus type with a more complex ad
  like address space bits, you'll have to add a bus translator to the
  prom_parse.c file of the recent kernels for your bus type.
  
  like address space bits, you'll have to add a bus translator to the
  prom_parse.c file of the recent kernels for your bus type.
  
@@ -66,7 +66,7 @@
  
        bus address, parent bus address, size
  
  
        bus address, parent bus address, size
  
-@@ -735,6 +740,10 @@
+@@ -735,6 +740,10 @@ fit in a single 32-bit word.   New 32-bi
  1/1 format, unless the processor supports physical addresses greater
  than 32-bits, in which case a 2/1 format is recommended.
  
  1/1 format, unless the processor supports physical addresses greater
  than 32-bits, in which case a 2/1 format is recommended.
  
@@ -77,7 +77,7 @@
  
  2) Note about "compatible" properties
  -------------------------------------
  
  2) Note about "compatible" properties
  -------------------------------------
-@@ -1218,16 +1227,14 @@
+@@ -1218,16 +1227,14 @@ platforms are moved over to use the flat
  
    Required properties:
      - reg : Offset and length of the register set for the device
  
    Required properties:
      - reg : Offset and length of the register set for the device
@@ -96,7 +96,7 @@
  
                ethernet-phy@0 {
                        ......
  
                ethernet-phy@0 {
                        ......
-@@ -1254,6 +1261,10 @@
+@@ -1254,6 +1261,10 @@ platforms are moved over to use the flat
        services interrupts for this device.
      - phy-handle : The phandle for the PHY connected to this ethernet
        controller.
        services interrupts for this device.
      - phy-handle : The phandle for the PHY connected to this ethernet
        controller.
  
    Recommended properties:
  
  
    Recommended properties:
  
-@@ -1408,7 +1419,6 @@
+@@ -1408,7 +1419,6 @@ platforms are moved over to use the flat
  
     Example multi port host USB controller device node :
        usb@22000 {
  
     Example multi port host USB controller device node :
        usb@22000 {
                compatible = "fsl-usb2-mph";
                reg = <22000 1000>;
                #address-cells = <1>;
                compatible = "fsl-usb2-mph";
                reg = <22000 1000>;
                #address-cells = <1>;
-@@ -1422,7 +1432,6 @@
+@@ -1422,7 +1432,6 @@ platforms are moved over to use the flat
  
     Example dual role USB controller device node :
        usb@23000 {
  
     Example dual role USB controller device node :
        usb@23000 {
                compatible = "fsl-usb2-dr";
                reg = <23000 1000>;
                #address-cells = <1>;
                compatible = "fsl-usb2-dr";
                reg = <23000 1000>;
                #address-cells = <1>;
-@@ -1586,7 +1595,6 @@
+@@ -1586,7 +1595,6 @@ platforms are moved over to use the flat
     iii) USB (Universal Serial Bus Controller)
  
     Required properties:
     iii) USB (Universal Serial Bus Controller)
  
     Required properties:
     - compatible : could be "qe_udc" or "fhci-hcd".
     - mode : the could be "host" or "slave".
     - reg : Offset and length of the register set for the device
     - compatible : could be "qe_udc" or "fhci-hcd".
     - mode : the could be "host" or "slave".
     - reg : Offset and length of the register set for the device
-@@ -1600,7 +1608,6 @@
+@@ -1600,7 +1608,6 @@ platforms are moved over to use the flat
  
     Example(slave):
        usb@6c0 {
  
     Example(slave):
        usb@6c0 {
                compatible = "qe_udc";
                reg = <6c0 40>;
                interrupts = <8b 0>;
                compatible = "qe_udc";
                reg = <6c0 40>;
                interrupts = <8b 0>;
-@@ -1613,7 +1620,7 @@
+@@ -1613,7 +1620,7 @@ platforms are moved over to use the flat
  
     Required properties:
     - device_type : should be "network", "hldc", "uart", "transparent"
  
     Required properties:
     - device_type : should be "network", "hldc", "uart", "transparent"
     - compatible : could be "ucc_geth" or "fsl_atm" and so on.
     - model : should be "UCC".
     - device-id : the ucc number(1-8), corresponding to UCCx in UM.
     - compatible : could be "ucc_geth" or "fsl_atm" and so on.
     - model : should be "UCC".
     - device-id : the ucc number(1-8), corresponding to UCCx in UM.
-@@ -1626,6 +1633,26 @@
+@@ -1626,6 +1633,26 @@ platforms are moved over to use the flat
     - interrupt-parent : the phandle for the interrupt controller that
       services interrupts for this device.
     - pio-handle : The phandle for the Parallel I/O port configuration.
     - interrupt-parent : the phandle for the interrupt controller that
       services interrupts for this device.
     - pio-handle : The phandle for the Parallel I/O port configuration.
     - rx-clock : represents the UCC receive clock source.
       0x00 : clock source is disabled;
       0x1~0x10 : clock source is BRG1~BRG16 respectively;
     - rx-clock : represents the UCC receive clock source.
       0x00 : clock source is disabled;
       0x1~0x10 : clock source is BRG1~BRG16 respectively;
-@@ -1772,6 +1799,32 @@
+@@ -1772,6 +1799,32 @@ platforms are moved over to use the flat
                };
        };
  
                };
        };
  
     j) CFI or JEDEC memory-mapped NOR flash
  
      Flash chips (Memory Technology Devices) are often used for solid state
     j) CFI or JEDEC memory-mapped NOR flash
  
      Flash chips (Memory Technology Devices) are often used for solid state
-@@ -2075,8 +2128,7 @@
+@@ -2075,8 +2128,7 @@ platforms are moved over to use the flat
  
     Example:
        localbus@f0010100 {
  
     Example:
        localbus@f0010100 {
                             "fsl,pq2-localbus";
                #address-cells = <2>;
                #size-cells = <1>;
                             "fsl,pq2-localbus";
                #address-cells = <2>;
                #size-cells = <1>;
-@@ -2254,7 +2306,7 @@
+@@ -2254,7 +2306,7 @@ platforms are moved over to use the flat
                           available.
                           For Axon: 0x0000012a
  
                           available.
                           For Axon: 0x0000012a
  
  
     The Xilinx EDK toolchain ships with a set of IP cores (devices) for use
     in Xilinx Spartan and Virtex FPGAs.  The devices cover the whole range
  
     The Xilinx EDK toolchain ships with a set of IP cores (devices) for use
     in Xilinx Spartan and Virtex FPGAs.  The devices cover the whole range
-@@ -2276,7 +2328,7 @@
+@@ -2276,7 +2328,7 @@ platforms are moved over to use the flat
     properties of the device node.  In general, device nodes for IP-cores
     will take the following form:
  
     properties of the device node.  In general, device nodes for IP-cores
     will take the following form:
  
                compatible = "xlnx,(ip-core-name)-(HW_VER)"
                             [, (list of compatible devices), ...];
                reg = <(baseaddr) (size)>;
                compatible = "xlnx,(ip-core-name)-(HW_VER)"
                             [, (list of compatible devices), ...];
                reg = <(baseaddr) (size)>;
-@@ -2286,6 +2338,9 @@
+@@ -2286,6 +2338,9 @@ platforms are moved over to use the flat
                xlnx,(parameter2) = <(int-value)>;
        };
  
                xlnx,(parameter2) = <(int-value)>;
        };
  
        (ip-core-name): the name of the ip block (given after the BEGIN
                        directive in system.mhs).  Should be in lowercase
                        and all underscores '_' converted to dashes '-'.
        (ip-core-name): the name of the ip block (given after the BEGIN
                        directive in system.mhs).  Should be in lowercase
                        and all underscores '_' converted to dashes '-'.
-@@ -2294,9 +2349,9 @@
+@@ -2294,9 +2349,9 @@ platforms are moved over to use the flat
                        dropped from the parameter name, the name is converted
                        to lowercase and all underscore '_' characters are
                        converted to dashes '-'.
                        dropped from the parameter name, the name is converted
                        to lowercase and all underscore '_' characters are
                        converted to dashes '-'.
  
     Typically, the compatible list will include the exact IP core version
     followed by an older IP core version which implements the same
  
     Typically, the compatible list will include the exact IP core version
     followed by an older IP core version which implements the same
-@@ -2326,11 +2381,11 @@
+@@ -2326,11 +2381,11 @@ platforms are moved over to use the flat
  
     becomes the following device tree node:
  
  
     becomes the following device tree node:
  
                interrupts = <1 0>; // got this from the opb_intc parameters
                current-speed = <d#115200>;     // standard serial device prop
                clock-frequency = <d#50000000>; // standard serial device prop
                interrupts = <1 0>; // got this from the opb_intc parameters
                current-speed = <d#115200>;     // standard serial device prop
                clock-frequency = <d#50000000>; // standard serial device prop
-@@ -2339,16 +2394,19 @@
+@@ -2339,16 +2394,19 @@ platforms are moved over to use the flat
                xlnx,use-parity = <0>;
        };
  
                xlnx,use-parity = <0>;
        };
  
  
        BEGIN opb_ps2_dual_ref
                PARAMETER INSTANCE = opb_ps2_dual_ref_0
  
        BEGIN opb_ps2_dual_ref
                PARAMETER INSTANCE = opb_ps2_dual_ref_0
-@@ -2370,21 +2428,24 @@
+@@ -2370,21 +2428,24 @@ platforms are moved over to use the flat
  
     It would result in the following device tree nodes:
  
  
     It would result in the following device tree nodes:
  
                        interrupts = <3 0>;
                        cell-index = <0>;
                };
                        interrupts = <3 0>;
                        cell-index = <0>;
                };
-@@ -2447,17 +2508,18 @@
+@@ -2447,17 +2508,18 @@ platforms are moved over to use the flat
  
     Gives this device tree (some properties removed for clarity):
  
  
     Gives this device tree (some properties removed for clarity):
  
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges = <20000000 20000000 20000000
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges = <20000000 20000000 20000000
-@@ -2465,11 +2527,11 @@
+@@ -2465,11 +2527,11 @@ platforms are moved over to use the flat
                                  80000000 80000000 40000000
                                  c0000000 c0000000 20000000>;
  
                                  80000000 80000000 40000000
                                  c0000000 c0000000 20000000>;
  
                                reg = <d1000fc0 20>;
                        };
                };
                                reg = <d1000fc0 20>;
                        };
                };
-@@ -2514,6 +2576,46 @@
+@@ -2514,6 +2576,46 @@ platforms are moved over to use the flat
        Requred properties:
         - current-speed : Baud rate of uartlite
  
        Requred properties:
         - current-speed : Baud rate of uartlite
  
 +distributed by Freescale can be found on http://opensource.freescale.com.
 --- a/arch/powerpc/Kconfig
 +++ b/arch/powerpc/Kconfig
 +distributed by Freescale can be found on http://opensource.freescale.com.
 --- a/arch/powerpc/Kconfig
 +++ b/arch/powerpc/Kconfig
-@@ -140,6 +140,9 @@
+@@ -140,6 +140,9 @@ config DEFAULT_UIMAGE
          Used to allow a board to specify it wants a uImage built by default
        default n
  
          Used to allow a board to specify it wants a uImage built by default
        default n
  
  config PPC64_SWSUSP
        bool
        depends on PPC64 && (BROKEN || (PPC_PMAC64 && EXPERIMENTAL))
  config PPC64_SWSUSP
        bool
        depends on PPC64 && (BROKEN || (PPC_PMAC64 && EXPERIMENTAL))
-@@ -160,11 +163,13 @@
+@@ -160,11 +163,13 @@ config PPC_DCR
  
  config PPC_OF_PLATFORM_PCI
        bool
  
  config PPC_OF_PLATFORM_PCI
        bool
  source "arch/powerpc/platforms/Kconfig"
  
  menu "Kernel options"
  source "arch/powerpc/platforms/Kconfig"
  
  menu "Kernel options"
-@@ -417,7 +422,7 @@
+@@ -417,7 +422,7 @@ endmenu
  
  config ISA_DMA_API
        bool
  
  config ISA_DMA_API
        bool
  
  menu "Bus options"
  
  
  menu "Bus options"
  
-@@ -467,7 +472,7 @@
+@@ -467,7 +472,7 @@ config MCA
  config PCI
        bool "PCI support" if 40x || CPM2 || PPC_83xx || PPC_85xx || PPC_86xx \
                || PPC_MPC52xx || (EMBEDDED && (PPC_PSERIES || PPC_ISERIES)) \
  config PCI
        bool "PCI support" if 40x || CPM2 || PPC_83xx || PPC_85xx || PPC_86xx \
                || PPC_MPC52xx || (EMBEDDED && (PPC_PSERIES || PPC_ISERIES)) \
        default PCI_PERMEDIA if !4xx && !CPM2 && !8xx
 --- a/arch/powerpc/Kconfig.debug
 +++ b/arch/powerpc/Kconfig.debug
        default PCI_PERMEDIA if !4xx && !CPM2 && !8xx
 --- a/arch/powerpc/Kconfig.debug
 +++ b/arch/powerpc/Kconfig.debug
-@@ -151,6 +151,13 @@
+@@ -151,6 +151,13 @@ config BOOTX_TEXT
  
  config PPC_EARLY_DEBUG
        bool "Early debugging (dangerous)"
  
  config PPC_EARLY_DEBUG
        bool "Early debugging (dangerous)"
  
  choice
        prompt "Early debugging console"
  
  choice
        prompt "Early debugging console"
-@@ -218,7 +225,16 @@
+@@ -218,7 +225,16 @@ config PPC_EARLY_DEBUG_44x
        depends on 44x
        help
          Select this to enable early debugging for IBM 44x chips via the
        depends on 44x
        help
          Select this to enable early debugging for IBM 44x chips via the
  
  config PPC_EARLY_DEBUG_CPM
        bool "Early serial debugging for Freescale CPM-based serial ports"
  
  config PPC_EARLY_DEBUG_CPM
        bool "Early serial debugging for Freescale CPM-based serial ports"
-@@ -235,12 +251,20 @@
+@@ -235,12 +251,20 @@ config PPC_EARLY_DEBUG_44x_PHYSLOW
        hex "Low 32 bits of early debug UART physical address"
        depends on PPC_EARLY_DEBUG_44x
        default "0x40000200"
        hex "Low 32 bits of early debug UART physical address"
        depends on PPC_EARLY_DEBUG_44x
        default "0x40000200"
        depends on PPC_EARLY_DEBUG_CPM
 --- a/arch/powerpc/Makefile
 +++ b/arch/powerpc/Makefile
        depends on PPC_EARLY_DEBUG_CPM
 --- a/arch/powerpc/Makefile
 +++ b/arch/powerpc/Makefile
-@@ -167,6 +167,9 @@
+@@ -167,6 +167,9 @@ boot := arch/$(ARCH)/boot
  $(BOOT_TARGETS): vmlinux
        $(Q)$(MAKE) ARCH=ppc64 $(build)=$(boot) $(patsubst %,$(boot)/%,$@)
  
  $(BOOT_TARGETS): vmlinux
        $(Q)$(MAKE) ARCH=ppc64 $(build)=$(boot) $(patsubst %,$(boot)/%,$@)
  
                if (bank_config & SDRAM_CONFIG_BANK_ENABLE)
                        memsize += SDRAM_CONFIG_BANK_SIZE(bank_config);
        }
                if (bank_config & SDRAM_CONFIG_BANK_ENABLE)
                        memsize += SDRAM_CONFIG_BANK_SIZE(bank_config);
        }
-@@ -39,6 +37,69 @@
+@@ -39,6 +37,69 @@ void ibm4xx_fixup_memsize(void)
        dt_fixup_memory(0, memsize);
  }
  
        dt_fixup_memory(0, memsize);
  }
  
  /* 4xx DDR1/2 Denali memory controller support */
  /* DDR0 registers */
  #define DDR0_02                       2
  /* 4xx DDR1/2 Denali memory controller support */
  /* DDR0 registers */
  #define DDR0_02                       2
-@@ -77,19 +138,13 @@
+@@ -77,19 +138,13 @@ void ibm4xx_fixup_memsize(void)
  
  #define DDR_GET_VAL(val, mask, shift) (((val) >> (shift)) & (mask))
  
  
  #define DDR_GET_VAL(val, mask, shift) (((val) >> (shift)) & (mask))
  
        if (!DDR_GET_VAL(val, DDR_START, DDR_START_SHIFT))
                fatal("DDR controller is not initialized\n");
  
        if (!DDR_GET_VAL(val, DDR_START, DDR_START_SHIFT))
                fatal("DDR controller is not initialized\n");
  
-@@ -99,12 +154,12 @@
+@@ -99,12 +154,12 @@ void ibm4xx_denali_fixup_memsize(void)
        max_row = DDR_GET_VAL(val, DDR_MAX_ROW_REG, DDR_MAX_ROW_REG_SHIFT);
  
        /* get CS value */
        max_row = DDR_GET_VAL(val, DDR_MAX_ROW_REG, DDR_MAX_ROW_REG_SHIFT);
  
        /* get CS value */
                        cs++;
                val = val >> 1;
        }
                        cs++;
                val = val >> 1;
        }
-@@ -115,15 +170,15 @@
+@@ -115,15 +170,15 @@ void ibm4xx_denali_fixup_memsize(void)
                fatal("DDR wrong CS configuration\n");
  
        /* get data path bytes */
                fatal("DDR wrong CS configuration\n");
  
        /* get data path bytes */
  
        row = DDR_GET_VAL(val, DDR_APIN, DDR_APIN_SHIFT);
        if (row > max_row)
  
        row = DDR_GET_VAL(val, DDR_APIN, DDR_APIN_SHIFT);
        if (row > max_row)
-@@ -131,7 +186,7 @@
+@@ -131,7 +186,7 @@ void ibm4xx_denali_fixup_memsize(void)
        row = max_row - row;
  
        /* get collomn size and banks */
        row = max_row - row;
  
        /* get collomn size and banks */
  
        col = DDR_GET_VAL(val, DDR_COL_SZ, DDR_COL_SZ_SHIFT);
        if (col > max_col)
  
        col = DDR_GET_VAL(val, DDR_COL_SZ, DDR_COL_SZ_SHIFT);
        if (col > max_col)
-@@ -179,13 +234,17 @@
+@@ -179,13 +234,17 @@ void ibm40x_dbcr_reset(void)
  #define EMAC_RESET 0x20000000
  void ibm4xx_quiesce_eth(u32 *emac0, u32 *emac1)
  {
  #define EMAC_RESET 0x20000000
  void ibm4xx_quiesce_eth(u32 *emac0, u32 *emac1)
  {
  }
  
  /* Read 4xx EBC bus bridge registers to get mappings of the peripheral
  }
  
  /* Read 4xx EBC bus bridge registers to get mappings of the peripheral
-@@ -217,84 +276,335 @@
+@@ -217,84 +276,335 @@ void ibm4xx_fixup_ebc_ranges(const char 
        setprop(devp, "ranges", ranges, (p - ranges) * sizeof(u32));
  }
  
        setprop(devp, "ranges", ranges, (p - ranges) * sizeof(u32));
  }
  
  #endif /* _POWERPC_BOOT_4XX_H_ */
 --- a/arch/powerpc/boot/Makefile
 +++ b/arch/powerpc/boot/Makefile
  #endif /* _POWERPC_BOOT_4XX_H_ */
 --- a/arch/powerpc/boot/Makefile
 +++ b/arch/powerpc/boot/Makefile
-@@ -33,12 +33,15 @@
+@@ -33,12 +33,15 @@ ifeq ($(call cc-option-yn, -fstack-prote
  BOOTCFLAGS    += -fno-stack-protector
  endif
  
  BOOTCFLAGS    += -fno-stack-protector
  endif
  
  zlib       := inffast.c inflate.c inftrees.c
  zlibheader := inffast.h inffixed.h inflate.h inftrees.h infutil.h
  zliblinuxheader := zlib.h zconf.h zutil.h
  zlib       := inffast.c inflate.c inftrees.c
  zlibheader := inffast.h inffixed.h inflate.h inftrees.h infutil.h
  zliblinuxheader := zlib.h zconf.h zutil.h
-@@ -46,17 +49,21 @@
+@@ -46,17 +49,21 @@ zliblinuxheader := zlib.h zconf.h zutil.
  $(addprefix $(obj)/,$(zlib) gunzip_util.o main.o): \
        $(addprefix $(obj)/,$(zliblinuxheader)) $(addprefix $(obj)/,$(zlibheader))
  
  $(addprefix $(obj)/,$(zlib) gunzip_util.o main.o): \
        $(addprefix $(obj)/,$(zliblinuxheader)) $(addprefix $(obj)/,$(zlibheader))
  
  src-boot := $(src-wlib) $(src-plat) empty.c
  
  src-boot := $(addprefix $(obj)/, $(src-boot))
  src-boot := $(src-wlib) $(src-plat) empty.c
  
  src-boot := $(addprefix $(obj)/, $(src-boot))
-@@ -101,24 +108,61 @@
+@@ -101,24 +108,61 @@ quiet_cmd_bootar = BOOTAR  $@
        cmd_bootar = $(CROSS32AR) -cr $@.$$$$ $(filter-out FORCE,$^); mv $@.$$$$ $@
  
  $(patsubst %.c,%.o, $(filter %.c, $(src-boot))): %.o: %.c FORCE
        cmd_bootar = $(CROSS32AR) -cr $@.$$$$ $(filter-out FORCE,$^); mv $@.$$$$ $@
  
  $(patsubst %.c,%.o, $(filter %.c, $(src-boot))): %.o: %.c FORCE
  # Bits for building various flavours of zImage
  
  ifneq ($(CROSS32_COMPILE),)
  # Bits for building various flavours of zImage
  
  ifneq ($(CROSS32_COMPILE),)
-@@ -150,15 +194,26 @@
+@@ -150,15 +194,26 @@ image-$(CONFIG_DEFAULT_UIMAGE)           += uImag
  ifneq ($(CONFIG_DEVICE_TREE),"")
  image-$(CONFIG_PPC_8xx)                       += cuImage.8xx
  image-$(CONFIG_PPC_EP88XC)            += zImage.ep88xc
  ifneq ($(CONFIG_DEVICE_TREE),"")
  image-$(CONFIG_PPC_8xx)                       += cuImage.8xx
  image-$(CONFIG_PPC_EP88XC)            += zImage.ep88xc
  endif
  
  # For 32-bit powermacs, build the COFF and miboot images
  endif
  
  # For 32-bit powermacs, build the COFF and miboot images
-@@ -243,3 +298,51 @@
+@@ -243,3 +298,51 @@ clean-kernel := vmlinux.strip vmlinux.bi
  clean-kernel += $(addsuffix .gz,$(clean-kernel))
  # If not absolute clean-files are relative to $(obj).
  clean-files += $(addprefix $(objtree)/, $(clean-kernel))
  clean-kernel += $(addsuffix .gz,$(clean-kernel))
  # If not absolute clean-files are relative to $(obj).
  clean-files += $(addprefix $(objtree)/, $(clean-kernel))
 +
 --- a/arch/powerpc/boot/bamboo.c
 +++ b/arch/powerpc/boot/bamboo.c
 +
 --- a/arch/powerpc/boot/bamboo.c
 +++ b/arch/powerpc/boot/bamboo.c
-@@ -30,8 +30,8 @@
+@@ -30,8 +30,8 @@ static void bamboo_fixups(void)
  {
        unsigned long sysclk = 33333333;
  
  {
        unsigned long sysclk = 33333333;
  
        ibm4xx_quiesce_eth((u32 *)0xef600e00, (u32 *)0xef600f00);
        dt_fixup_mac_addresses(bamboo_mac0, bamboo_mac1);
  }
        ibm4xx_quiesce_eth((u32 *)0xef600e00, (u32 *)0xef600f00);
        dt_fixup_mac_addresses(bamboo_mac0, bamboo_mac1);
  }
-@@ -42,6 +42,6 @@
+@@ -42,6 +42,6 @@ void bamboo_init(void *mac0, void *mac1)
        platform_ops.exit = ibm44x_dbcr_reset;
        bamboo_mac0 = mac0;
        bamboo_mac1 = mac1;
        platform_ops.exit = ibm44x_dbcr_reset;
        bamboo_mac0 = mac0;
        bamboo_mac1 = mac1;
  }
 --- a/arch/powerpc/boot/cuboot-52xx.c
 +++ b/arch/powerpc/boot/cuboot-52xx.c
  }
 --- a/arch/powerpc/boot/cuboot-52xx.c
 +++ b/arch/powerpc/boot/cuboot-52xx.c
-@@ -53,7 +53,7 @@
+@@ -53,7 +53,7 @@ void platform_init(unsigned long r3, uns
                     unsigned long r6, unsigned long r7)
  {
        CUBOOT_INIT();
                     unsigned long r6, unsigned long r7)
  {
        CUBOOT_INIT();
 +}
 --- a/arch/powerpc/boot/cuboot-83xx.c
 +++ b/arch/powerpc/boot/cuboot-83xx.c
 +}
 --- a/arch/powerpc/boot/cuboot-83xx.c
 +++ b/arch/powerpc/boot/cuboot-83xx.c
-@@ -24,7 +24,8 @@
+@@ -24,7 +24,8 @@ static void platform_fixups(void)
        void *soc;
  
        dt_fixup_memory(bd.bi_memstart, bd.bi_memsize);
        void *soc;
  
        dt_fixup_memory(bd.bi_memstart, bd.bi_memsize);
        dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 4, bd.bi_busfreq);
  
        /* Unfortunately, the specific model number is encoded in the
        dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 4, bd.bi_busfreq);
  
        /* Unfortunately, the specific model number is encoded in the
-@@ -52,7 +53,7 @@
+@@ -52,7 +53,7 @@ void platform_init(unsigned long r3, uns
                     unsigned long r6, unsigned long r7)
  {
        CUBOOT_INIT();
                     unsigned long r6, unsigned long r7)
  {
        CUBOOT_INIT();
  }
 --- a/arch/powerpc/boot/cuboot-85xx.c
 +++ b/arch/powerpc/boot/cuboot-85xx.c
  }
 --- a/arch/powerpc/boot/cuboot-85xx.c
 +++ b/arch/powerpc/boot/cuboot-85xx.c
-@@ -24,8 +24,9 @@
+@@ -24,8 +24,9 @@ static void platform_fixups(void)
        void *soc;
  
        dt_fixup_memory(bd.bi_memstart, bd.bi_memsize);
        void *soc;
  
        dt_fixup_memory(bd.bi_memstart, bd.bi_memsize);
        dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 8, bd.bi_busfreq);
  
        /* Unfortunately, the specific model number is encoded in the
        dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 8, bd.bi_busfreq);
  
        /* Unfortunately, the specific model number is encoded in the
-@@ -53,7 +54,7 @@
+@@ -53,7 +54,7 @@ void platform_init(unsigned long r3, uns
                     unsigned long r6, unsigned long r7)
  {
        CUBOOT_INIT();
                     unsigned long r6, unsigned long r7)
  {
        CUBOOT_INIT();
  }
 --- a/arch/powerpc/boot/cuboot-8xx.c
 +++ b/arch/powerpc/boot/cuboot-8xx.c
  }
 --- a/arch/powerpc/boot/cuboot-8xx.c
 +++ b/arch/powerpc/boot/cuboot-8xx.c
-@@ -41,7 +41,7 @@
+@@ -41,7 +41,7 @@ void platform_init(unsigned long r3, uns
                     unsigned long r6, unsigned long r7)
  {
        CUBOOT_INIT();
                     unsigned long r6, unsigned long r7)
  {
        CUBOOT_INIT();
  }
 --- a/arch/powerpc/boot/cuboot-hpc2.c
 +++ b/arch/powerpc/boot/cuboot-hpc2.c
  }
 --- a/arch/powerpc/boot/cuboot-hpc2.c
 +++ b/arch/powerpc/boot/cuboot-hpc2.c
-@@ -42,7 +42,7 @@
+@@ -42,7 +42,7 @@ void platform_init(unsigned long r3, uns
                unsigned long r6, unsigned long r7)
  {
        CUBOOT_INIT();
                unsigned long r6, unsigned long r7)
  {
        CUBOOT_INIT();
 +}
 --- a/arch/powerpc/boot/cuboot-pq2.c
 +++ b/arch/powerpc/boot/cuboot-pq2.c
 +}
 --- a/arch/powerpc/boot/cuboot-pq2.c
 +++ b/arch/powerpc/boot/cuboot-pq2.c
-@@ -255,7 +255,7 @@
+@@ -255,7 +255,7 @@ void platform_init(unsigned long r3, uns
                     unsigned long r6, unsigned long r7)
  {
        CUBOOT_INIT();
                     unsigned long r6, unsigned long r7)
  {
        CUBOOT_INIT();
 +}
 --- a/arch/powerpc/boot/cuboot-sequoia.c
 +++ b/arch/powerpc/boot/cuboot-sequoia.c
 +}
 --- a/arch/powerpc/boot/cuboot-sequoia.c
 +++ b/arch/powerpc/boot/cuboot-sequoia.c
-@@ -39,7 +39,7 @@
+@@ -39,7 +39,7 @@ static void sequoia_fixups(void)
  {
        unsigned long sysclk = 33333333;
  
  {
        unsigned long sysclk = 33333333;
  
        ibm4xx_fixup_ebc_ranges("/plb/opb/ebc");
        ibm4xx_denali_fixup_memsize();
        dt_fixup_mac_addresses(&bd.bi_enetaddr, &bd.bi_enet1addr);
        ibm4xx_fixup_ebc_ranges("/plb/opb/ebc");
        ibm4xx_denali_fixup_memsize();
        dt_fixup_mac_addresses(&bd.bi_enetaddr, &bd.bi_enet1addr);
-@@ -51,6 +51,6 @@
+@@ -51,6 +51,6 @@ void platform_init(unsigned long r3, uns
        CUBOOT_INIT();
        platform_ops.fixups = sequoia_fixups;
        platform_ops.exit = ibm44x_dbcr_reset;
        CUBOOT_INIT();
        platform_ops.fixups = sequoia_fixups;
        platform_ops.exit = ibm44x_dbcr_reset;
  
  #define                       SDRAM_CONFIG_BANK_ENABLE        0x00000001
  #define                       SDRAM_CONFIG_SIZE_MASK          0x000e0000
  
  #define                       SDRAM_CONFIG_BANK_ENABLE        0x00000001
  #define                       SDRAM_CONFIG_SIZE_MASK          0x000e0000
-@@ -138,5 +146,54 @@
+@@ -138,5 +146,54 @@ static const unsigned long sdram_bxcr[] 
  #define DCRN_CPC0_PLLMR 0xb0
  #define DCRN_405_CPC0_CR0 0xb1
  #define DCRN_405_CPC0_CR1 0xb2
  #define DCRN_CPC0_PLLMR 0xb0
  #define DCRN_405_CPC0_CR0 0xb1
  #define DCRN_405_CPC0_CR1 0xb2
  #endif        /* _PPC_BOOT_DCR_H_ */
 --- a/arch/powerpc/boot/devtree.c
 +++ b/arch/powerpc/boot/devtree.c
  #endif        /* _PPC_BOOT_DCR_H_ */
 --- a/arch/powerpc/boot/devtree.c
 +++ b/arch/powerpc/boot/devtree.c
-@@ -88,6 +88,20 @@
+@@ -88,6 +88,20 @@ void dt_fixup_clock(const char *path, u3
        }
  }
  
        }
  }
  
  };
 --- a/arch/powerpc/boot/dts/kuroboxHD.dts
 +++ b/arch/powerpc/boot/dts/kuroboxHD.dts
  };
 --- a/arch/powerpc/boot/dts/kuroboxHD.dts
 +++ b/arch/powerpc/boot/dts/kuroboxHD.dts
-@@ -23,6 +23,12 @@
+@@ -23,6 +23,12 @@ XXXX add flash parts, rtc, ??
        #address-cells = <1>;
        #size-cells = <1>;
  
        #address-cells = <1>;
        #size-cells = <1>;
  
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
-@@ -60,7 +66,7 @@
+@@ -60,7 +66,7 @@ XXXX add flash parts, rtc, ??
                i2c@80003000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                i2c@80003000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        compatible = "fsl-i2c";
                        reg = <80003000 1000>;
                        interrupts = <5 2>;
                        compatible = "fsl-i2c";
                        reg = <80003000 1000>;
                        interrupts = <5 2>;
-@@ -73,7 +79,8 @@
+@@ -73,7 +79,8 @@ XXXX add flash parts, rtc, ??
                        };
                };
  
                        };
                };
  
                        device_type = "serial";
                        compatible = "ns16550";
                        reg = <80004500 8>;
                        device_type = "serial";
                        compatible = "ns16550";
                        reg = <80004500 8>;
-@@ -83,7 +90,8 @@
+@@ -83,7 +90,8 @@ XXXX add flash parts, rtc, ??
                        interrupt-parent = <&mpic>;
                };
  
                        interrupt-parent = <&mpic>;
                };
  
                        device_type = "serial";
                        compatible = "ns16550";
                        reg = <80004600 8>;
                        device_type = "serial";
                        compatible = "ns16550";
                        reg = <80004600 8>;
-@@ -102,7 +110,7 @@
+@@ -102,7 +110,7 @@ XXXX add flash parts, rtc, ??
                        reg = <80040000 40000>;
                };
  
                        reg = <80040000 40000>;
                };
  
                        #interrupt-cells = <1>;
 --- a/arch/powerpc/boot/dts/kuroboxHG.dts
 +++ b/arch/powerpc/boot/dts/kuroboxHG.dts
                        #interrupt-cells = <1>;
 --- a/arch/powerpc/boot/dts/kuroboxHG.dts
 +++ b/arch/powerpc/boot/dts/kuroboxHG.dts
-@@ -23,6 +23,12 @@
+@@ -23,6 +23,12 @@ XXXX add flash parts, rtc, ??
        #address-cells = <1>;
        #size-cells = <1>;
  
        #address-cells = <1>;
        #size-cells = <1>;
  
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
-@@ -60,7 +66,7 @@
+@@ -60,7 +66,7 @@ XXXX add flash parts, rtc, ??
                i2c@80003000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                i2c@80003000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        compatible = "fsl-i2c";
                        reg = <80003000 1000>;
                        interrupts = <5 2>;
                        compatible = "fsl-i2c";
                        reg = <80003000 1000>;
                        interrupts = <5 2>;
-@@ -73,7 +79,8 @@
+@@ -73,7 +79,8 @@ XXXX add flash parts, rtc, ??
                        };
                };
  
                        };
                };
  
                        device_type = "serial";
                        compatible = "ns16550";
                        reg = <80004500 8>;
                        device_type = "serial";
                        compatible = "ns16550";
                        reg = <80004500 8>;
-@@ -83,7 +90,8 @@
+@@ -83,7 +90,8 @@ XXXX add flash parts, rtc, ??
                        interrupt-parent = <&mpic>;
                };
  
                        interrupt-parent = <&mpic>;
                };
  
                        device_type = "serial";
                        compatible = "ns16550";
                        reg = <80004600 8>;
                        device_type = "serial";
                        compatible = "ns16550";
                        reg = <80004600 8>;
-@@ -102,7 +110,7 @@
+@@ -102,7 +110,7 @@ XXXX add flash parts, rtc, ??
                        reg = <80040000 40000>;
                };
  
                        reg = <80040000 40000>;
                };
  
  #define EBONY_FPGA_PATH               "/plb/opb/ebc/fpga"
  #define       EBONY_FPGA_FLASH_SEL    0x01
  #define EBONY_SMALL_FLASH_PATH        "/plb/opb/ebc/small-flash"
  #define EBONY_FPGA_PATH               "/plb/opb/ebc/fpga"
  #define       EBONY_FPGA_FLASH_SEL    0x01
  #define EBONY_SMALL_FLASH_PATH        "/plb/opb/ebc/small-flash"
-@@ -134,7 +74,7 @@
+@@ -134,7 +74,7 @@ static void ebony_fixups(void)
        unsigned long sysclk = 33000000;
  
        ibm440gp_fixup_clocks(sysclk, 6 * 1843200);
        unsigned long sysclk = 33000000;
  
        ibm440gp_fixup_clocks(sysclk, 6 * 1843200);
        dt_fixup_mac_addresses(ebony_mac0, ebony_mac1);
        ibm4xx_fixup_ebc_ranges("/plb/opb/ebc");
        ebony_flashsel_fixup();
        dt_fixup_mac_addresses(ebony_mac0, ebony_mac1);
        ibm4xx_fixup_ebc_ranges("/plb/opb/ebc");
        ebony_flashsel_fixup();
-@@ -146,6 +86,6 @@
+@@ -146,6 +86,6 @@ void ebony_init(void *mac0, void *mac1)
        platform_ops.exit = ibm44x_dbcr_reset;
        ebony_mac0 = mac0;
        ebony_mac1 = mac1;
        platform_ops.exit = ibm44x_dbcr_reset;
        ebony_mac0 = mac0;
        ebony_mac1 = mac1;
 +}
 --- a/arch/powerpc/boot/ep88xc.c
 +++ b/arch/powerpc/boot/ep88xc.c
 +}
 --- a/arch/powerpc/boot/ep88xc.c
 +++ b/arch/powerpc/boot/ep88xc.c
-@@ -45,7 +45,7 @@
+@@ -45,7 +45,7 @@ void platform_init(unsigned long r3, uns
        mem_size *= 1024 * 1024;
        simple_alloc_init(_end, mem_size - (unsigned long)_end, 32, 64);
  
        mem_size *= 1024 * 1024;
        simple_alloc_init(_end, mem_size - (unsigned long)_end, 32, 64);
  
 -}
 --- a/arch/powerpc/boot/holly.c
 +++ b/arch/powerpc/boot/holly.c
 -}
 --- a/arch/powerpc/boot/holly.c
 +++ b/arch/powerpc/boot/holly.c
-@@ -28,6 +28,6 @@
+@@ -28,6 +28,6 @@ void platform_init(unsigned long r3, uns
        u32 heapsize = 0x8000000 - (u32)_end; /* 128M */
  
        simple_alloc_init(_end, heapsize, 32, 64);
        u32 heapsize = 0x8000000 - (u32)_end; /* 128M */
  
        simple_alloc_init(_end, heapsize, 32, 64);
  static struct gunzip_state gzstate;
 --- a/arch/powerpc/boot/ops.h
 +++ b/arch/powerpc/boot/ops.h
  static struct gunzip_state gzstate;
 --- a/arch/powerpc/boot/ops.h
 +++ b/arch/powerpc/boot/ops.h
-@@ -79,7 +79,7 @@
+@@ -79,7 +79,7 @@ struct loader_info {
  extern struct loader_info loader_info;
  
  void start(void);
  extern struct loader_info loader_info;
  
  void start(void);
  int serial_console_init(void);
  int ns16550_console_init(void *devp, struct serial_console_data *scdp);
  int mpsc_console_init(void *devp, struct serial_console_data *scdp);
  int serial_console_init(void);
  int ns16550_console_init(void *devp, struct serial_console_data *scdp);
  int mpsc_console_init(void *devp, struct serial_console_data *scdp);
-@@ -159,9 +159,23 @@
+@@ -159,9 +159,23 @@ static inline void *find_node_by_devtype
        return find_node_by_prop_value_str(prev, "device_type", type);
  }
  
        return find_node_by_prop_value_str(prev, "device_type", type);
  }
  
  #define dt_fixup_mac_addresses(...) \
 --- a/arch/powerpc/boot/prpmc2800.c
 +++ b/arch/powerpc/boot/prpmc2800.c
  #define dt_fixup_mac_addresses(...) \
 --- a/arch/powerpc/boot/prpmc2800.c
 +++ b/arch/powerpc/boot/prpmc2800.c
-@@ -547,8 +547,7 @@
+@@ -547,8 +547,7 @@ void platform_init(unsigned long r3, uns
        if (!dtb)
                exit();
        memmove(dtb, _dtb_start, dt_size);
        if (!dtb)
                exit();
        memmove(dtb, _dtb_start, dt_size);
  
 --- a/arch/powerpc/boot/ps3.c
 +++ b/arch/powerpc/boot/ps3.c
  
 --- a/arch/powerpc/boot/ps3.c
 +++ b/arch/powerpc/boot/ps3.c
-@@ -131,7 +131,7 @@
+@@ -131,7 +131,7 @@ void platform_init(void)
        printf("\n-- PS3 bootwrapper --\n");
  
        simple_alloc_init(_end, heapsize, 32, 64);
        printf("\n-- PS3 bootwrapper --\n");
  
        simple_alloc_init(_end, heapsize, 32, 64);
 +#endif
 --- a/arch/powerpc/boot/reg.h
 +++ b/arch/powerpc/boot/reg.h
 +#endif
 --- a/arch/powerpc/boot/reg.h
 +++ b/arch/powerpc/boot/reg.h
-@@ -16,6 +16,14 @@
+@@ -16,6 +16,14 @@ static inline u32 mfpvr(void)
        return pvr;
  }
  
        return pvr;
  }
  
  
 --- a/arch/powerpc/boot/serial.c
 +++ b/arch/powerpc/boot/serial.c
  
 --- a/arch/powerpc/boot/serial.c
 +++ b/arch/powerpc/boot/serial.c
-@@ -128,7 +128,8 @@
+@@ -128,7 +128,8 @@ int serial_console_init(void)
                rc = cpm_console_init(devp, &serial_cd);
        else if (dt_is_compatible(devp, "mpc5200-psc-uart"))
                rc = mpc5200_psc_console_init(devp, &serial_cd);
                rc = cpm_console_init(devp, &serial_cd);
        else if (dt_is_compatible(devp, "mpc5200-psc-uart"))
                rc = mpc5200_psc_console_init(devp, &serial_cd);
  static void walnut_flashsel_fixup(void)
  {
        void *devp, *sram;
  static void walnut_flashsel_fixup(void)
  {
        void *devp, *sram;
-@@ -112,7 +63,7 @@
+@@ -112,7 +63,7 @@ static void walnut_flashsel_fixup(void)
  #define WALNUT_OPENBIOS_MAC_OFF 0xfffffe0b
  static void walnut_fixups(void)
  {
  #define WALNUT_OPENBIOS_MAC_OFF 0xfffffe0b
  static void walnut_fixups(void)
  {
        ibm405gp_fixup_clocks(33330000, 0xa8c000);
        ibm4xx_quiesce_eth((u32 *)0xef600800, NULL);
        ibm4xx_fixup_ebc_ranges("/plb/ebc");
        ibm405gp_fixup_clocks(33330000, 0xa8c000);
        ibm4xx_quiesce_eth((u32 *)0xef600800, NULL);
        ibm4xx_fixup_ebc_ranges("/plb/ebc");
-@@ -128,6 +79,6 @@
+@@ -128,6 +79,6 @@ void platform_init(void)
        simple_alloc_init(_end, avail_ram, 32, 32);
        platform_ops.fixups = walnut_fixups;
        platform_ops.exit = ibm40x_dbcr_reset;
        simple_alloc_init(_end, avail_ram, 32, 32);
        platform_ops.fixups = walnut_fixups;
        platform_ops.exit = ibm40x_dbcr_reset;
  }
 --- a/arch/powerpc/boot/wrapper
 +++ b/arch/powerpc/boot/wrapper
  }
 --- a/arch/powerpc/boot/wrapper
 +++ b/arch/powerpc/boot/wrapper
-@@ -45,6 +45,7 @@
+@@ -45,6 +45,7 @@ CROSS=
  
  # directory for object and other files used by this script
  object=arch/powerpc/boot
  
  # directory for object and other files used by this script
  object=arch/powerpc/boot
  
  # directory for working files
  tmpdir=.
  
  # directory for working files
  tmpdir=.
-@@ -95,6 +96,7 @@
+@@ -95,6 +96,7 @@ while [ "$#" -gt 0 ]; do
        shift
        [ "$#" -gt 0 ] || usage
        object="$1"
        shift
        [ "$#" -gt 0 ] || usage
        object="$1"
        ;;
      -W)
        shift
        ;;
      -W)
        shift
-@@ -116,10 +118,13 @@
+@@ -116,10 +118,13 @@ while [ "$#" -gt 0 ]; do
  done
  
  if [ -n "$dts" ]; then
  done
  
  if [ -n "$dts" ]; then
  fi
  
  if [ -z "$kernel" ]; then
  fi
  
  if [ -z "$kernel" ]; then
-@@ -163,7 +168,7 @@
+@@ -163,7 +168,7 @@ ps3)
      ksection=.kernel:vmlinux.bin
      isection=.kernel:initrd
      ;;
      ksection=.kernel:vmlinux.bin
      isection=.kernel:initrd
      ;;
      platformo="$object/fixed-head.o $object/$platform.o"
      binary=y
      ;;
      platformo="$object/fixed-head.o $object/$platform.o"
      binary=y
      ;;
-@@ -246,11 +251,11 @@
+@@ -246,11 +251,11 @@ fi
  # post-processing needed for some platforms
  case "$platform" in
  pseries|chrp)
  # post-processing needed for some platforms
  case "$platform" in
  pseries|chrp)
      ;;
  cuboot*)
      gzip -f -9 "$ofile"
      ;;
  cuboot*)
      gzip -f -9 "$ofile"
-@@ -259,7 +264,7 @@
+@@ -259,7 +264,7 @@ cuboot*)
      ;;
  treeboot*)
      mv "$ofile" "$ofile.elf"
      ;;
  treeboot*)
      mv "$ofile" "$ofile.elf"
      if [ -z "$cacheit" ]; then
        rm -f "$ofile.elf"
      fi
      if [ -z "$cacheit" ]; then
        rm -f "$ofile.elf"
      fi
-@@ -287,8 +292,6 @@
+@@ -287,8 +292,6 @@ ps3)
      overlay_dest="256"
      overlay_size="256"
  
      overlay_dest="256"
      overlay_size="256"
  
      ${CROSS}objcopy -O binary "$ofile" "$ofile.bin"
  
      dd if="$ofile.bin" of="$ofile.bin" conv=notrunc   \
      ${CROSS}objcopy -O binary "$ofile" "$ofile.bin"
  
      dd if="$ofile.bin" of="$ofile.bin" conv=notrunc   \
-@@ -299,6 +302,8 @@
+@@ -299,6 +302,8 @@ ps3)
          skip=$system_reset_overlay seek=$overlay_dest \
          count=$overlay_size bs=1
  
          skip=$system_reset_overlay seek=$overlay_dest \
          count=$overlay_size bs=1
  
  #
  # CONFIG_PPC64 is not set
  
  #
  # CONFIG_PPC64 is not set
  
-@@ -131,6 +131,7 @@
+@@ -131,6 +131,7 @@ CONFIG_DEFAULT_AS=y
  # CONFIG_DEFAULT_CFQ is not set
  # CONFIG_DEFAULT_NOOP is not set
  CONFIG_DEFAULT_IOSCHED="anticipatory"
  # CONFIG_DEFAULT_CFQ is not set
  # CONFIG_DEFAULT_NOOP is not set
  CONFIG_DEFAULT_IOSCHED="anticipatory"
  
  #
  # Platform support
  
  #
  # Platform support
-@@ -143,6 +144,9 @@
+@@ -143,6 +144,9 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
  CONFIG_BAMBOO=y
  # CONFIG_EBONY is not set
  # CONFIG_SEQUOIA is not set
  CONFIG_BAMBOO=y
  # CONFIG_EBONY is not set
  # CONFIG_SEQUOIA is not set
  CONFIG_440EP=y
  CONFIG_IBM440EP_ERR42=y
  # CONFIG_MPIC is not set
  CONFIG_440EP=y
  CONFIG_IBM440EP_ERR42=y
  # CONFIG_MPIC is not set
-@@ -372,9 +376,7 @@
+@@ -372,9 +376,7 @@ CONFIG_MISC_DEVICES=y
  # CONFIG_FIREWIRE is not set
  # CONFIG_IEEE1394 is not set
  # CONFIG_I2O is not set
  # CONFIG_FIREWIRE is not set
  # CONFIG_IEEE1394 is not set
  # CONFIG_I2O is not set
  CONFIG_NETDEVICES=y
  # CONFIG_NETDEVICES_MULTIQUEUE is not set
  # CONFIG_DUMMY is not set
  CONFIG_NETDEVICES=y
  # CONFIG_NETDEVICES_MULTIQUEUE is not set
  # CONFIG_DUMMY is not set
-@@ -736,19 +738,7 @@
+@@ -736,19 +738,7 @@ CONFIG_DEBUGGER=y
  # CONFIG_KGDB is not set
  # CONFIG_XMON is not set
  # CONFIG_BDI_SWITCH is not set
  # CONFIG_KGDB is not set
  # CONFIG_XMON is not set
  # CONFIG_BDI_SWITCH is not set
  # Security options
 --- a/arch/powerpc/configs/celleb_defconfig
 +++ b/arch/powerpc/configs/celleb_defconfig
  # Security options
 --- a/arch/powerpc/configs/celleb_defconfig
 +++ b/arch/powerpc/configs/celleb_defconfig
-@@ -50,7 +50,8 @@
+@@ -50,7 +50,8 @@ CONFIG_AUDIT_ARCH=y
  CONFIG_GENERIC_BUG=y
  # CONFIG_DEFAULT_UIMAGE is not set
  # CONFIG_PPC_DCR_NATIVE is not set
  CONFIG_GENERIC_BUG=y
  # CONFIG_DEFAULT_UIMAGE is not set
  # CONFIG_PPC_DCR_NATIVE is not set
  CONFIG_PPC_OF_PLATFORM_PCI=y
  CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
  
  CONFIG_PPC_OF_PLATFORM_PCI=y
  CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
  
-@@ -148,7 +149,7 @@
+@@ -148,7 +149,7 @@ CONFIG_PPC_MULTIPLATFORM=y
  CONFIG_PPC_CELLEB=y
  # CONFIG_PPC_PS3 is not set
  CONFIG_PPC_CELL=y
  CONFIG_PPC_CELLEB=y
  # CONFIG_PPC_PS3 is not set
  CONFIG_PPC_CELL=y
  # CONFIG_PPC_IBM_CELL_BLADE is not set
  
  #
  # CONFIG_PPC_IBM_CELL_BLADE is not set
  
  #
-@@ -157,13 +158,19 @@
+@@ -157,13 +158,19 @@ CONFIG_PPC_CELL=y
  CONFIG_SPU_FS=y
  CONFIG_SPU_FS_64K_LS=y
  CONFIG_SPU_BASE=y
  CONFIG_SPU_FS=y
  CONFIG_SPU_FS_64K_LS=y
  CONFIG_SPU_BASE=y
  # CONFIG_MMIO_NVRAM is not set
  # CONFIG_PPC_MPC106 is not set
  # CONFIG_PPC_970_NAP is not set
  # CONFIG_MMIO_NVRAM is not set
  # CONFIG_PPC_MPC106 is not set
  # CONFIG_PPC_970_NAP is not set
-@@ -593,10 +600,11 @@
+@@ -593,10 +600,11 @@ CONFIG_MII=y
  # CONFIG_NET_VENDOR_3COM is not set
  # CONFIG_NET_TULIP is not set
  # CONFIG_HP100 is not set
  # CONFIG_NET_VENDOR_3COM is not set
  # CONFIG_NET_TULIP is not set
  # CONFIG_HP100 is not set
  # CONFIG_NET_PCI is not set
  # CONFIG_B44 is not set
  CONFIG_NETDEV_1000=y
  # CONFIG_NET_PCI is not set
  # CONFIG_B44 is not set
  CONFIG_NETDEV_1000=y
-@@ -741,6 +749,7 @@
+@@ -741,6 +749,7 @@ CONFIG_SERIAL_TXX9_CONSOLE=y
  CONFIG_UNIX98_PTYS=y
  # CONFIG_LEGACY_PTYS is not set
  CONFIG_HVC_DRIVER=y
  CONFIG_UNIX98_PTYS=y
  # CONFIG_LEGACY_PTYS is not set
  CONFIG_HVC_DRIVER=y
  CONFIG_HVC_BEAT=y
  # CONFIG_IPMI_HANDLER is not set
  # CONFIG_HW_RANDOM is not set
  CONFIG_HVC_BEAT=y
  # CONFIG_IPMI_HANDLER is not set
  # CONFIG_HW_RANDOM is not set
-@@ -822,6 +831,7 @@
+@@ -822,6 +831,7 @@ CONFIG_WATCHDOG=y
  # Watchdog Device Drivers
  #
  # CONFIG_SOFT_WATCHDOG is not set
  # Watchdog Device Drivers
  #
  # CONFIG_SOFT_WATCHDOG is not set
  
  #
  # PCI-based Watchdog Cards
  
  #
  # PCI-based Watchdog Cards
-@@ -1245,17 +1255,7 @@
+@@ -1245,17 +1255,7 @@ CONFIG_XMON_DISASSEMBLY=y
  CONFIG_IRQSTACKS=y
  # CONFIG_VIRQ_DEBUG is not set
  # CONFIG_BOOTX_TEXT is not set
  CONFIG_IRQSTACKS=y
  # CONFIG_VIRQ_DEBUG is not set
  # CONFIG_BOOTX_TEXT is not set
  #
  # CONFIG_PPC64 is not set
  
  #
  # CONFIG_PPC64 is not set
  
-@@ -130,6 +130,7 @@
+@@ -130,6 +130,7 @@ CONFIG_DEFAULT_AS=y
  # CONFIG_DEFAULT_CFQ is not set
  # CONFIG_DEFAULT_NOOP is not set
  CONFIG_DEFAULT_IOSCHED="anticipatory"
  # CONFIG_DEFAULT_CFQ is not set
  # CONFIG_DEFAULT_NOOP is not set
  CONFIG_DEFAULT_IOSCHED="anticipatory"
  
  #
  # Platform support
  
  #
  # Platform support
-@@ -142,6 +143,9 @@
+@@ -142,6 +143,9 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
  # CONFIG_BAMBOO is not set
  CONFIG_EBONY=y
  # CONFIG_SEQUOIA is not set
  # CONFIG_BAMBOO is not set
  CONFIG_EBONY=y
  # CONFIG_SEQUOIA is not set
  #
  # CONFIG_PPC64 is not set
  
  #
  # CONFIG_PPC64 is not set
  
-@@ -40,7 +40,7 @@
+@@ -40,7 +40,7 @@ CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
  CONFIG_ARCH_MAY_HAVE_PC_FDC=y
  CONFIG_PPC_OF=y
  CONFIG_OF=y
  CONFIG_ARCH_MAY_HAVE_PC_FDC=y
  CONFIG_PPC_OF=y
  CONFIG_OF=y
  # CONFIG_GENERIC_TBSYNC is not set
  CONFIG_AUDIT_ARCH=y
  CONFIG_GENERIC_BUG=y
  # CONFIG_GENERIC_TBSYNC is not set
  CONFIG_AUDIT_ARCH=y
  CONFIG_GENERIC_BUG=y
-@@ -125,6 +125,7 @@
+@@ -125,6 +125,7 @@ CONFIG_DEFAULT_AS=y
  # CONFIG_DEFAULT_CFQ is not set
  # CONFIG_DEFAULT_NOOP is not set
  CONFIG_DEFAULT_IOSCHED="anticipatory"
  # CONFIG_DEFAULT_CFQ is not set
  # CONFIG_DEFAULT_NOOP is not set
  CONFIG_DEFAULT_IOSCHED="anticipatory"
  
  #
  # Platform support
  
  #
  # Platform support
-@@ -134,9 +135,12 @@
+@@ -134,9 +135,12 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
  # CONFIG_PPC_CELL is not set
  # CONFIG_PPC_CELL_NATIVE is not set
  # CONFIG_PQ2ADS is not set
  # CONFIG_PPC_CELL is not set
  # CONFIG_PPC_CELL_NATIVE is not set
  # CONFIG_PQ2ADS is not set
  # CONFIG_MPIC is not set
  # CONFIG_MPIC_WEIRD is not set
  # CONFIG_PPC_I8259 is not set
  # CONFIG_MPIC is not set
  # CONFIG_MPIC_WEIRD is not set
  # CONFIG_PPC_I8259 is not set
-@@ -199,11 +203,17 @@
+@@ -199,11 +203,17 @@ CONFIG_ISA_DMA_API=y
  # Bus options
  #
  CONFIG_ZONE_DMA=y
  # Bus options
  #
  CONFIG_ZONE_DMA=y
  
  #
  # Advanced setup
  
  #
  # Advanced setup
-@@ -368,11 +378,13 @@
+@@ -368,11 +378,13 @@ CONFIG_MTD_CFI_UTIL=y
  # CONFIG_MTD_COMPLEX_MAPPINGS is not set
  # CONFIG_MTD_PHYSMAP is not set
  CONFIG_MTD_PHYSMAP_OF=y
  # CONFIG_MTD_COMPLEX_MAPPINGS is not set
  # CONFIG_MTD_PHYSMAP is not set
  CONFIG_MTD_PHYSMAP_OF=y
  # CONFIG_MTD_SLRAM is not set
  # CONFIG_MTD_PHRAM is not set
  # CONFIG_MTD_MTDRAM is not set
  # CONFIG_MTD_SLRAM is not set
  # CONFIG_MTD_PHRAM is not set
  # CONFIG_MTD_MTDRAM is not set
-@@ -395,9 +407,14 @@
+@@ -395,9 +407,14 @@ CONFIG_OF_DEVICE=y
  # CONFIG_PARPORT is not set
  CONFIG_BLK_DEV=y
  # CONFIG_BLK_DEV_FD is not set
  # CONFIG_PARPORT is not set
  CONFIG_BLK_DEV=y
  # CONFIG_BLK_DEV_FD is not set
  CONFIG_BLK_DEV_RAM=y
  CONFIG_BLK_DEV_RAM_COUNT=16
  CONFIG_BLK_DEV_RAM_SIZE=35000
  CONFIG_BLK_DEV_RAM=y
  CONFIG_BLK_DEV_RAM_COUNT=16
  CONFIG_BLK_DEV_RAM_SIZE=35000
-@@ -417,6 +434,14 @@
+@@ -417,6 +434,14 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
  # CONFIG_SCSI_NETLINK is not set
  # CONFIG_ATA is not set
  # CONFIG_MD is not set
  # CONFIG_SCSI_NETLINK is not set
  # CONFIG_ATA is not set
  # CONFIG_MD is not set
  # CONFIG_MACINTOSH_DRIVERS is not set
  CONFIG_NETDEVICES=y
  # CONFIG_NETDEVICES_MULTIQUEUE is not set
  # CONFIG_MACINTOSH_DRIVERS is not set
  CONFIG_NETDEVICES=y
  # CONFIG_NETDEVICES_MULTIQUEUE is not set
-@@ -426,9 +451,33 @@
+@@ -426,9 +451,33 @@ CONFIG_NETDEVICES=y
  # CONFIG_EQUALIZER is not set
  # CONFIG_TUN is not set
  # CONFIG_VETH is not set
  # CONFIG_EQUALIZER is not set
  # CONFIG_TUN is not set
  # CONFIG_VETH is not set
  
  #
  # Wireless LAN
  
  #
  # Wireless LAN
-@@ -436,6 +485,8 @@
+@@ -436,6 +485,8 @@ CONFIG_NETDEVICES=y
  # CONFIG_WLAN_PRE80211 is not set
  # CONFIG_WLAN_80211 is not set
  # CONFIG_WAN is not set
  # CONFIG_WLAN_PRE80211 is not set
  # CONFIG_WLAN_80211 is not set
  # CONFIG_WAN is not set
  # CONFIG_PPP is not set
  # CONFIG_SLIP is not set
  # CONFIG_SHAPER is not set
  # CONFIG_PPP is not set
  # CONFIG_SLIP is not set
  # CONFIG_SHAPER is not set
-@@ -467,6 +518,7 @@
+@@ -467,6 +518,7 @@ CONFIG_NETDEVICES=y
  #
  CONFIG_SERIAL_8250=y
  CONFIG_SERIAL_8250_CONSOLE=y
  #
  CONFIG_SERIAL_8250=y
  CONFIG_SERIAL_8250_CONSOLE=y
  CONFIG_SERIAL_8250_NR_UARTS=4
  CONFIG_SERIAL_8250_RUNTIME_UARTS=4
  CONFIG_SERIAL_8250_EXTENDED=y
  CONFIG_SERIAL_8250_NR_UARTS=4
  CONFIG_SERIAL_8250_RUNTIME_UARTS=4
  CONFIG_SERIAL_8250_EXTENDED=y
-@@ -481,6 +533,7 @@
+@@ -481,6 +533,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
  # CONFIG_SERIAL_UARTLITE is not set
  CONFIG_SERIAL_CORE=y
  CONFIG_SERIAL_CORE_CONSOLE=y
  # CONFIG_SERIAL_UARTLITE is not set
  CONFIG_SERIAL_CORE=y
  CONFIG_SERIAL_CORE_CONSOLE=y
  CONFIG_SERIAL_OF_PLATFORM=y
  CONFIG_UNIX98_PTYS=y
  CONFIG_LEGACY_PTYS=y
  CONFIG_SERIAL_OF_PLATFORM=y
  CONFIG_UNIX98_PTYS=y
  CONFIG_LEGACY_PTYS=y
-@@ -490,8 +543,10 @@
+@@ -490,8 +543,10 @@ CONFIG_LEGACY_PTY_COUNT=256
  # CONFIG_NVRAM is not set
  # CONFIG_GEN_RTC is not set
  # CONFIG_R3964 is not set
  # CONFIG_NVRAM is not set
  # CONFIG_GEN_RTC is not set
  # CONFIG_R3964 is not set
  # CONFIG_I2C is not set
  
  #
  # CONFIG_I2C is not set
  
  #
-@@ -525,6 +580,8 @@
+@@ -525,6 +580,8 @@ CONFIG_SSB_POSSIBLE=y
  #
  # Graphics support
  #
  #
  # Graphics support
  #
  # CONFIG_VGASTATE is not set
  # CONFIG_VIDEO_OUTPUT_CONTROL is not set
  # CONFIG_FB is not set
  # CONFIG_VGASTATE is not set
  # CONFIG_VIDEO_OUTPUT_CONTROL is not set
  # CONFIG_FB is not set
-@@ -542,6 +599,7 @@
+@@ -542,6 +599,7 @@ CONFIG_SSB_POSSIBLE=y
  # CONFIG_USB_SUPPORT is not set
  # CONFIG_MMC is not set
  # CONFIG_NEW_LEDS is not set
  # CONFIG_USB_SUPPORT is not set
  # CONFIG_MMC is not set
  # CONFIG_NEW_LEDS is not set
  #
  # CONFIG_PPC64 is not set
  
  #
  # CONFIG_PPC64 is not set
  
-@@ -144,6 +144,7 @@
+@@ -144,6 +144,7 @@ CONFIG_MPC8313_RDB=y
  # CONFIG_MPC834x_MDS is not set
  # CONFIG_MPC834x_ITX is not set
  # CONFIG_MPC836x_MDS is not set
  # CONFIG_MPC834x_MDS is not set
  # CONFIG_MPC834x_ITX is not set
  # CONFIG_MPC836x_MDS is not set
  CONFIG_PPC_MPC831x=y
  # CONFIG_MPIC is not set
  # CONFIG_MPIC_WEIRD is not set
  CONFIG_PPC_MPC831x=y
  # CONFIG_MPIC is not set
  # CONFIG_MPIC_WEIRD is not set
-@@ -336,15 +337,16 @@
+@@ -336,15 +337,16 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
  CONFIG_MTD=y
  # CONFIG_MTD_DEBUG is not set
  # CONFIG_MTD_CONCAT is not set
  CONFIG_MTD=y
  # CONFIG_MTD_DEBUG is not set
  # CONFIG_MTD_CONCAT is not set
  # CONFIG_FTL is not set
  # CONFIG_NFTL is not set
  # CONFIG_INFTL is not set
  # CONFIG_FTL is not set
  # CONFIG_NFTL is not set
  # CONFIG_INFTL is not set
-@@ -381,11 +383,8 @@
+@@ -381,11 +383,8 @@ CONFIG_MTD_CFI_UTIL=y
  # Mapping drivers for chip access
  #
  # CONFIG_MTD_COMPLEX_MAPPINGS is not set
  # Mapping drivers for chip access
  #
  # CONFIG_MTD_COMPLEX_MAPPINGS is not set
  # CONFIG_MTD_INTEL_VR_NOR is not set
  # CONFIG_MTD_PLATRAM is not set
  
  # CONFIG_MTD_INTEL_VR_NOR is not set
  # CONFIG_MTD_PLATRAM is not set
  
-@@ -406,7 +405,16 @@
+@@ -406,7 +405,16 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
  # CONFIG_MTD_DOC2000 is not set
  # CONFIG_MTD_DOC2001 is not set
  # CONFIG_MTD_DOC2001PLUS is not set
  # CONFIG_MTD_DOC2000 is not set
  # CONFIG_MTD_DOC2001 is not set
  # CONFIG_MTD_DOC2001PLUS is not set
  # CONFIG_MTD_ONENAND is not set
  
  #
  # CONFIG_MTD_ONENAND is not set
  
  #
-@@ -1178,7 +1186,17 @@
+@@ -1178,7 +1186,17 @@ CONFIG_TMPFS=y
  # CONFIG_BEFS_FS is not set
  # CONFIG_BFS_FS is not set
  # CONFIG_EFS_FS is not set
  # CONFIG_BEFS_FS is not set
  # CONFIG_BFS_FS is not set
  # CONFIG_EFS_FS is not set
  # CONFIG_CRAMFS is not set
  # CONFIG_VXFS_FS is not set
  # CONFIG_HPFS_FS is not set
  # CONFIG_CRAMFS is not set
  # CONFIG_VXFS_FS is not set
  # CONFIG_HPFS_FS is not set
-@@ -1242,6 +1260,8 @@
+@@ -1242,6 +1260,8 @@ CONFIG_BITREVERSE=y
  CONFIG_CRC32=y
  # CONFIG_CRC7 is not set
  # CONFIG_LIBCRC32C is not set
  CONFIG_CRC32=y
  # CONFIG_CRC7 is not set
  # CONFIG_LIBCRC32C is not set
  CONFIG_HAS_IOPORT=y
 --- a/arch/powerpc/configs/mpc834x_itx_defconfig
 +++ b/arch/powerpc/configs/mpc834x_itx_defconfig
  CONFIG_HAS_IOPORT=y
 --- a/arch/powerpc/configs/mpc834x_itx_defconfig
 +++ b/arch/powerpc/configs/mpc834x_itx_defconfig
-@@ -570,7 +570,8 @@
+@@ -570,7 +570,8 @@ CONFIG_SATA_SIL=y
  # CONFIG_PATA_SIS is not set
  # CONFIG_PATA_VIA is not set
  # CONFIG_PATA_WINBOND is not set
  # CONFIG_PATA_SIS is not set
  # CONFIG_PATA_VIA is not set
  # CONFIG_PATA_WINBOND is not set
 +CONFIG_CRYPTO_HW=y
 --- a/arch/powerpc/configs/mpc8610_hpcd_defconfig
 +++ b/arch/powerpc/configs/mpc8610_hpcd_defconfig
 +CONFIG_CRYPTO_HW=y
 --- a/arch/powerpc/configs/mpc8610_hpcd_defconfig
 +++ b/arch/powerpc/configs/mpc8610_hpcd_defconfig
-@@ -696,7 +696,7 @@
+@@ -696,7 +696,7 @@ CONFIG_SERIAL_8250_RSA=y
  CONFIG_SERIAL_CORE=y
  CONFIG_SERIAL_CORE_CONSOLE=y
  # CONFIG_SERIAL_JSM is not set
  CONFIG_SERIAL_CORE=y
  CONFIG_SERIAL_CORE_CONSOLE=y
  # CONFIG_SERIAL_JSM is not set
  CONFIG_UNIX98_PTYS=y
  # CONFIG_LEGACY_PTYS is not set
  # CONFIG_IPMI_HANDLER is not set
  CONFIG_UNIX98_PTYS=y
  # CONFIG_LEGACY_PTYS is not set
  # CONFIG_IPMI_HANDLER is not set
-@@ -708,7 +708,60 @@
+@@ -708,7 +708,60 @@ CONFIG_UNIX98_PTYS=y
  # CONFIG_RAW_DRIVER is not set
  # CONFIG_TCG_TPM is not set
  CONFIG_DEVPORT=y
  # CONFIG_RAW_DRIVER is not set
  # CONFIG_TCG_TPM is not set
  CONFIG_DEVPORT=y
  
  #
  # SPI support
  
  #
  # SPI support
-@@ -763,7 +816,119 @@
+@@ -763,7 +816,119 @@ CONFIG_DUMMY_CONSOLE=y
  #
  # Sound
  #
  #
  # Sound
  #
  #
  CONFIG_PPC64=y
  
  #
  CONFIG_PPC64=y
  
-@@ -152,7 +152,6 @@
+@@ -152,7 +152,6 @@ CONFIG_PPC_PASEMI=y
  CONFIG_PPC_PASEMI_IOMMU=y
  # CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set
  CONFIG_PPC_PASEMI_MDIO=y
  CONFIG_PPC_PASEMI_IOMMU=y
  # CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set
  CONFIG_PPC_PASEMI_MDIO=y
  # CONFIG_PPC_CELLEB is not set
  # CONFIG_PPC_PS3 is not set
  # CONFIG_PPC_CELL is not set
  # CONFIG_PPC_CELLEB is not set
  # CONFIG_PPC_PS3 is not set
  # CONFIG_PPC_CELL is not set
-@@ -256,7 +255,7 @@
+@@ -256,7 +255,7 @@ CONFIG_PCI_DOMAINS=y
  CONFIG_PCI_SYSCALL=y
  # CONFIG_PCIEPORTBUS is not set
  CONFIG_ARCH_SUPPORTS_MSI=y
  CONFIG_PCI_SYSCALL=y
  # CONFIG_PCIEPORTBUS is not set
  CONFIG_ARCH_SUPPORTS_MSI=y
  CONFIG_PCI_LEGACY=y
  # CONFIG_PCI_DEBUG is not set
  CONFIG_PCCARD=y
  CONFIG_PCI_LEGACY=y
  # CONFIG_PCI_DEBUG is not set
  CONFIG_PCCARD=y
-@@ -663,7 +662,26 @@
+@@ -663,7 +662,26 @@ CONFIG_PATA_PCMCIA=y
  # CONFIG_PATA_VIA is not set
  # CONFIG_PATA_WINBOND is not set
  CONFIG_PATA_PLATFORM=y
  # CONFIG_PATA_VIA is not set
  # CONFIG_PATA_WINBOND is not set
  CONFIG_PATA_PLATFORM=y
  # CONFIG_FUSION is not set
  
  #
  # CONFIG_FUSION is not set
  
  #
-@@ -1686,6 +1704,10 @@
+@@ -1686,6 +1704,10 @@ CONFIG_XMON_DISASSEMBLY=y
  # CONFIG_KEYS is not set
  # CONFIG_SECURITY is not set
  # CONFIG_SECURITY_FILE_CAPABILITIES is not set
  # CONFIG_KEYS is not set
  # CONFIG_SECURITY is not set
  # CONFIG_SECURITY_FILE_CAPABILITIES is not set
  #
  CONFIG_PPC64=y
  
  #
  CONFIG_PPC64=y
  
-@@ -211,7 +211,7 @@
+@@ -211,7 +211,7 @@ CONFIG_MMIO_NVRAM=y
  CONFIG_MPIC_U3_HT_IRQS=y
  CONFIG_MPIC_BROKEN_REGREAD=y
  CONFIG_IBMVIO=y
  CONFIG_MPIC_U3_HT_IRQS=y
  CONFIG_MPIC_BROKEN_REGREAD=y
  CONFIG_IBMVIO=y
  # CONFIG_PPC_MPC106 is not set
  CONFIG_PPC_970_NAP=y
  CONFIG_PPC_INDIRECT_IO=y
  # CONFIG_PPC_MPC106 is not set
  CONFIG_PPC_970_NAP=y
  CONFIG_PPC_INDIRECT_IO=y
-@@ -375,7 +375,7 @@
+@@ -375,7 +375,7 @@ CONFIG_INET_TUNNEL=y
  CONFIG_INET_XFRM_MODE_TRANSPORT=y
  CONFIG_INET_XFRM_MODE_TUNNEL=y
  CONFIG_INET_XFRM_MODE_BEET=y
  CONFIG_INET_XFRM_MODE_TRANSPORT=y
  CONFIG_INET_XFRM_MODE_TUNNEL=y
  CONFIG_INET_XFRM_MODE_BEET=y
  CONFIG_INET_DIAG=y
  CONFIG_INET_TCP_DIAG=y
  # CONFIG_TCP_CONG_ADVANCED is not set
  CONFIG_INET_DIAG=y
  CONFIG_INET_TCP_DIAG=y
  # CONFIG_TCP_CONG_ADVANCED is not set
-@@ -929,6 +929,7 @@
+@@ -929,6 +929,7 @@ CONFIG_SPIDER_NET=m
  CONFIG_NETDEV_10000=y
  # CONFIG_CHELSIO_T1 is not set
  # CONFIG_CHELSIO_T3 is not set
  CONFIG_NETDEV_10000=y
  # CONFIG_CHELSIO_T1 is not set
  # CONFIG_CHELSIO_T3 is not set
  # CONFIG_IXGBE is not set
  CONFIG_IXGB=m
  # CONFIG_IXGB_NAPI is not set
  # CONFIG_IXGBE is not set
  CONFIG_IXGB=m
  # CONFIG_IXGB_NAPI is not set
-@@ -1558,6 +1559,7 @@
+@@ -1558,6 +1559,7 @@ CONFIG_INFINIBAND_ADDR_TRANS=y
  CONFIG_INFINIBAND_MTHCA=m
  CONFIG_INFINIBAND_MTHCA_DEBUG=y
  # CONFIG_INFINIBAND_IPATH is not set
  CONFIG_INFINIBAND_MTHCA=m
  CONFIG_INFINIBAND_MTHCA_DEBUG=y
  # CONFIG_INFINIBAND_IPATH is not set
  #
  CONFIG_PPC64=y
  
  #
  CONFIG_PPC64=y
  
-@@ -103,6 +103,7 @@
+@@ -103,6 +103,7 @@ CONFIG_VM_EVENT_COUNTERS=y
  CONFIG_SLAB=y
  # CONFIG_SLUB is not set
  # CONFIG_SLOB is not set
  CONFIG_SLAB=y
  # CONFIG_SLUB is not set
  # CONFIG_SLOB is not set
  CONFIG_RT_MUTEXES=y
  # CONFIG_TINY_SHMEM is not set
  CONFIG_BASE_SMALL=0
  CONFIG_RT_MUTEXES=y
  # CONFIG_TINY_SHMEM is not set
  CONFIG_BASE_SMALL=0
-@@ -154,7 +155,6 @@
+@@ -154,7 +155,6 @@ CONFIG_PPC_PS3=y
  # CONFIG_PS3_ADVANCED is not set
  CONFIG_PS3_HTAB_SIZE=20
  # CONFIG_PS3_DYNAMIC_DMA is not set
  # CONFIG_PS3_ADVANCED is not set
  CONFIG_PS3_HTAB_SIZE=20
  # CONFIG_PS3_DYNAMIC_DMA is not set
  CONFIG_PS3_VUART=y
  CONFIG_PS3_PS3AV=y
  CONFIG_PS3_SYS_MANAGER=y
  CONFIG_PS3_VUART=y
  CONFIG_PS3_PS3AV=y
  CONFIG_PS3_SYS_MANAGER=y
-@@ -162,6 +162,7 @@
+@@ -162,6 +162,7 @@ CONFIG_PS3_STORAGE=y
  CONFIG_PS3_DISK=y
  CONFIG_PS3_ROM=y
  CONFIG_PS3_FLASH=y
  CONFIG_PS3_DISK=y
  CONFIG_PS3_ROM=y
  CONFIG_PS3_FLASH=y
  CONFIG_PPC_CELL=y
  # CONFIG_PPC_CELL_NATIVE is not set
  # CONFIG_PPC_IBM_CELL_BLADE is not set
  CONFIG_PPC_CELL=y
  # CONFIG_PPC_CELL_NATIVE is not set
  # CONFIG_PPC_IBM_CELL_BLADE is not set
-@@ -225,7 +226,7 @@
+@@ -225,7 +226,7 @@ CONFIG_HAVE_MEMORY_PRESENT=y
  # CONFIG_SPARSEMEM_STATIC is not set
  CONFIG_SPARSEMEM_EXTREME=y
  CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
  # CONFIG_SPARSEMEM_STATIC is not set
  CONFIG_SPARSEMEM_EXTREME=y
  CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
  CONFIG_MEMORY_HOTPLUG=y
  CONFIG_MEMORY_HOTPLUG_SPARSE=y
  CONFIG_SPLIT_PTLOCK_CPUS=4
  CONFIG_MEMORY_HOTPLUG=y
  CONFIG_MEMORY_HOTPLUG_SPARSE=y
  CONFIG_SPLIT_PTLOCK_CPUS=4
-@@ -338,7 +339,26 @@
+@@ -338,7 +339,26 @@ CONFIG_IPV6_SIT=y
  # CONFIG_NET_PKTGEN is not set
  # CONFIG_HAMRADIO is not set
  # CONFIG_IRDA is not set
  # CONFIG_NET_PKTGEN is not set
  # CONFIG_HAMRADIO is not set
  # CONFIG_IRDA is not set
  # CONFIG_AF_RXRPC is not set
  
  #
  # CONFIG_AF_RXRPC is not set
  
  #
-@@ -666,14 +686,14 @@
+@@ -666,14 +686,14 @@ CONFIG_LOGO_LINUX_CLUT224=y
  #
  # Sound
  #
  #
  # Sound
  #
  # CONFIG_SND_SEQUENCER is not set
  # CONFIG_SND_MIXER_OSS is not set
  # CONFIG_SND_PCM_OSS is not set
  # CONFIG_SND_SEQUENCER is not set
  # CONFIG_SND_MIXER_OSS is not set
  # CONFIG_SND_PCM_OSS is not set
-@@ -702,7 +722,7 @@
+@@ -702,7 +722,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
  #
  # ALSA PowerPC devices
  #
  #
  # ALSA PowerPC devices
  #
  CONFIG_SND_PS3_DEFAULT_START_DELAY=2000
  
  #
  CONFIG_SND_PS3_DEFAULT_START_DELAY=2000
  
  #
-@@ -747,7 +767,7 @@
+@@ -747,7 +767,7 @@ CONFIG_USB_SUPPORT=y
  CONFIG_USB_ARCH_HAS_HCD=y
  CONFIG_USB_ARCH_HAS_OHCI=y
  CONFIG_USB_ARCH_HAS_EHCI=y
  CONFIG_USB_ARCH_HAS_HCD=y
  CONFIG_USB_ARCH_HAS_OHCI=y
  CONFIG_USB_ARCH_HAS_EHCI=y
  # CONFIG_USB_DEBUG is not set
  
  #
  # CONFIG_USB_DEBUG is not set
  
  #
-@@ -761,13 +781,13 @@
+@@ -761,13 +781,13 @@ CONFIG_USB_DEVICEFS=y
  #
  # USB Host Controller Drivers
  #
  #
  # USB Host Controller Drivers
  #
  # CONFIG_USB_OHCI_HCD_PPC_OF is not set
  # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
  CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
  # CONFIG_USB_OHCI_HCD_PPC_OF is not set
  # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
  CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
-@@ -1033,7 +1053,8 @@
+@@ -1033,7 +1053,8 @@ CONFIG_HAS_IOMEM=y
  CONFIG_HAS_IOPORT=y
  CONFIG_HAS_DMA=y
  CONFIG_INSTRUMENTATION=y
  CONFIG_HAS_IOPORT=y
  CONFIG_HAS_DMA=y
  CONFIG_INSTRUMENTATION=y
  #
  # CONFIG_PPC64 is not set
  
  #
  # CONFIG_PPC64 is not set
  
-@@ -129,6 +129,7 @@
+@@ -129,6 +129,7 @@ CONFIG_DEFAULT_AS=y
  # CONFIG_DEFAULT_CFQ is not set
  # CONFIG_DEFAULT_NOOP is not set
  CONFIG_DEFAULT_IOSCHED="anticipatory"
  # CONFIG_DEFAULT_CFQ is not set
  # CONFIG_DEFAULT_NOOP is not set
  CONFIG_DEFAULT_IOSCHED="anticipatory"
  
  #
  # Platform support
  
  #
  # Platform support
-@@ -141,8 +142,10 @@
+@@ -141,8 +142,10 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
  # CONFIG_BAMBOO is not set
  # CONFIG_EBONY is not set
  CONFIG_SEQUOIA=y
  # CONFIG_BAMBOO is not set
  # CONFIG_EBONY is not set
  CONFIG_SEQUOIA=y
  # CONFIG_MPIC is not set
  # CONFIG_MPIC_WEIRD is not set
  # CONFIG_PPC_I8259 is not set
  # CONFIG_MPIC is not set
  # CONFIG_MPIC_WEIRD is not set
  # CONFIG_PPC_I8259 is not set
-@@ -446,9 +449,7 @@
+@@ -446,9 +449,7 @@ CONFIG_MISC_DEVICES=y
  # CONFIG_FIREWIRE is not set
  # CONFIG_IEEE1394 is not set
  # CONFIG_I2O is not set
  # CONFIG_FIREWIRE is not set
  # CONFIG_IEEE1394 is not set
  # CONFIG_I2O is not set
  CONFIG_NETDEVICES=y
  # CONFIG_NETDEVICES_MULTIQUEUE is not set
  # CONFIG_DUMMY is not set
  CONFIG_NETDEVICES=y
  # CONFIG_NETDEVICES_MULTIQUEUE is not set
  # CONFIG_DUMMY is not set
-@@ -459,10 +460,28 @@
+@@ -459,10 +460,28 @@ CONFIG_NETDEVICES=y
  # CONFIG_VETH is not set
  # CONFIG_IP1000 is not set
  # CONFIG_ARCNET is not set
  # CONFIG_VETH is not set
  # CONFIG_IP1000 is not set
  # CONFIG_ARCNET is not set
  CONFIG_NETDEV_1000=y
  # CONFIG_ACENIC is not set
  # CONFIG_DL2K is not set
  CONFIG_NETDEV_1000=y
  # CONFIG_ACENIC is not set
  # CONFIG_DL2K is not set
-@@ -811,6 +830,7 @@
+@@ -811,6 +830,7 @@ CONFIG_PPC_EARLY_DEBUG=y
  # CONFIG_PPC_EARLY_DEBUG_PAS_REALMODE is not set
  # CONFIG_PPC_EARLY_DEBUG_BEAT is not set
  CONFIG_PPC_EARLY_DEBUG_44x=y
  # CONFIG_PPC_EARLY_DEBUG_PAS_REALMODE is not set
  # CONFIG_PPC_EARLY_DEBUG_BEAT is not set
  CONFIG_PPC_EARLY_DEBUG_44x=y
  #
  # CONFIG_PPC64 is not set
  
  #
  # CONFIG_PPC64 is not set
  
-@@ -40,7 +40,7 @@
+@@ -40,7 +40,7 @@ CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
  CONFIG_ARCH_MAY_HAVE_PC_FDC=y
  CONFIG_PPC_OF=y
  CONFIG_OF=y
  CONFIG_ARCH_MAY_HAVE_PC_FDC=y
  CONFIG_PPC_OF=y
  CONFIG_OF=y
  # CONFIG_GENERIC_TBSYNC is not set
  CONFIG_AUDIT_ARCH=y
  CONFIG_GENERIC_BUG=y
  # CONFIG_GENERIC_TBSYNC is not set
  CONFIG_AUDIT_ARCH=y
  CONFIG_GENERIC_BUG=y
-@@ -127,6 +127,7 @@
+@@ -127,6 +127,7 @@ CONFIG_DEFAULT_AS=y
  # CONFIG_DEFAULT_CFQ is not set
  # CONFIG_DEFAULT_NOOP is not set
  CONFIG_DEFAULT_IOSCHED="anticipatory"
  # CONFIG_DEFAULT_CFQ is not set
  # CONFIG_DEFAULT_NOOP is not set
  CONFIG_DEFAULT_IOSCHED="anticipatory"
  
  #
  # Platform support
  
  #
  # Platform support
-@@ -136,7 +137,9 @@
+@@ -136,7 +137,9 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
  # CONFIG_PPC_CELL is not set
  # CONFIG_PPC_CELL_NATIVE is not set
  # CONFIG_PQ2ADS is not set
  # CONFIG_PPC_CELL is not set
  # CONFIG_PPC_CELL_NATIVE is not set
  # CONFIG_PQ2ADS is not set
  CONFIG_WALNUT=y
  # CONFIG_XILINX_VIRTEX_GENERIC_BOARD is not set
  CONFIG_405GP=y
  CONFIG_WALNUT=y
  # CONFIG_XILINX_VIRTEX_GENERIC_BOARD is not set
  CONFIG_405GP=y
-@@ -204,11 +207,17 @@
+@@ -204,11 +207,17 @@ CONFIG_ISA_DMA_API=y
  # Bus options
  #
  CONFIG_ZONE_DMA=y
  # Bus options
  #
  CONFIG_ZONE_DMA=y
  
  #
  # Advanced setup
  
  #
  # Advanced setup
-@@ -373,11 +382,13 @@
+@@ -373,11 +382,13 @@ CONFIG_MTD_CFI_UTIL=y
  # CONFIG_MTD_COMPLEX_MAPPINGS is not set
  # CONFIG_MTD_PHYSMAP is not set
  CONFIG_MTD_PHYSMAP_OF=y
  # CONFIG_MTD_COMPLEX_MAPPINGS is not set
  # CONFIG_MTD_PHYSMAP is not set
  CONFIG_MTD_PHYSMAP_OF=y
  # CONFIG_MTD_SLRAM is not set
  # CONFIG_MTD_PHRAM is not set
  # CONFIG_MTD_MTDRAM is not set
  # CONFIG_MTD_SLRAM is not set
  # CONFIG_MTD_PHRAM is not set
  # CONFIG_MTD_MTDRAM is not set
-@@ -400,9 +411,14 @@
+@@ -400,9 +411,14 @@ CONFIG_OF_DEVICE=y
  # CONFIG_PARPORT is not set
  CONFIG_BLK_DEV=y
  # CONFIG_BLK_DEV_FD is not set
  # CONFIG_PARPORT is not set
  CONFIG_BLK_DEV=y
  # CONFIG_BLK_DEV_FD is not set
  CONFIG_BLK_DEV_RAM=y
  CONFIG_BLK_DEV_RAM_COUNT=16
  CONFIG_BLK_DEV_RAM_SIZE=35000
  CONFIG_BLK_DEV_RAM=y
  CONFIG_BLK_DEV_RAM_COUNT=16
  CONFIG_BLK_DEV_RAM_SIZE=35000
-@@ -411,7 +427,10 @@
+@@ -411,7 +427,10 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
  # CONFIG_ATA_OVER_ETH is not set
  # CONFIG_XILINX_SYSACE is not set
  CONFIG_MISC_DEVICES=y
  # CONFIG_ATA_OVER_ETH is not set
  # CONFIG_XILINX_SYSACE is not set
  CONFIG_MISC_DEVICES=y
  # CONFIG_IDE is not set
  
  #
  # CONFIG_IDE is not set
  
  #
-@@ -423,6 +442,14 @@
+@@ -423,6 +442,14 @@ CONFIG_MISC_DEVICES=y
  # CONFIG_SCSI_NETLINK is not set
  # CONFIG_ATA is not set
  # CONFIG_MD is not set
  # CONFIG_SCSI_NETLINK is not set
  # CONFIG_ATA is not set
  # CONFIG_MD is not set
  # CONFIG_MACINTOSH_DRIVERS is not set
  CONFIG_NETDEVICES=y
  # CONFIG_NETDEVICES_MULTIQUEUE is not set
  # CONFIG_MACINTOSH_DRIVERS is not set
  CONFIG_NETDEVICES=y
  # CONFIG_NETDEVICES_MULTIQUEUE is not set
-@@ -432,9 +459,17 @@
+@@ -432,9 +459,17 @@ CONFIG_NETDEVICES=y
  # CONFIG_EQUALIZER is not set
  # CONFIG_TUN is not set
  # CONFIG_VETH is not set
  # CONFIG_EQUALIZER is not set
  # CONFIG_TUN is not set
  # CONFIG_VETH is not set
  CONFIG_IBM_NEW_EMAC=y
  CONFIG_IBM_NEW_EMAC_RXB=128
  CONFIG_IBM_NEW_EMAC_TXB=64
  CONFIG_IBM_NEW_EMAC=y
  CONFIG_IBM_NEW_EMAC_RXB=128
  CONFIG_IBM_NEW_EMAC_TXB=64
-@@ -446,9 +481,38 @@
+@@ -446,9 +481,38 @@ CONFIG_IBM_NEW_EMAC_ZMII=y
  # CONFIG_IBM_NEW_EMAC_RGMII is not set
  # CONFIG_IBM_NEW_EMAC_TAH is not set
  # CONFIG_IBM_NEW_EMAC_EMAC4 is not set
  # CONFIG_IBM_NEW_EMAC_RGMII is not set
  # CONFIG_IBM_NEW_EMAC_TAH is not set
  # CONFIG_IBM_NEW_EMAC_EMAC4 is not set
  
  #
  # Wireless LAN
  
  #
  # Wireless LAN
-@@ -456,6 +520,8 @@
+@@ -456,6 +520,8 @@ CONFIG_NETDEV_10000=y
  # CONFIG_WLAN_PRE80211 is not set
  # CONFIG_WLAN_80211 is not set
  # CONFIG_WAN is not set
  # CONFIG_WLAN_PRE80211 is not set
  # CONFIG_WLAN_80211 is not set
  # CONFIG_WAN is not set
  # CONFIG_PPP is not set
  # CONFIG_SLIP is not set
  # CONFIG_SHAPER is not set
  # CONFIG_PPP is not set
  # CONFIG_SLIP is not set
  # CONFIG_SHAPER is not set
-@@ -487,6 +553,7 @@
+@@ -487,6 +553,7 @@ CONFIG_NETDEV_10000=y
  #
  CONFIG_SERIAL_8250=y
  CONFIG_SERIAL_8250_CONSOLE=y
  #
  CONFIG_SERIAL_8250=y
  CONFIG_SERIAL_8250_CONSOLE=y
  CONFIG_SERIAL_8250_NR_UARTS=4
  CONFIG_SERIAL_8250_RUNTIME_UARTS=4
  CONFIG_SERIAL_8250_EXTENDED=y
  CONFIG_SERIAL_8250_NR_UARTS=4
  CONFIG_SERIAL_8250_RUNTIME_UARTS=4
  CONFIG_SERIAL_8250_EXTENDED=y
-@@ -501,6 +568,7 @@
+@@ -501,6 +568,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
  # CONFIG_SERIAL_UARTLITE is not set
  CONFIG_SERIAL_CORE=y
  CONFIG_SERIAL_CORE_CONSOLE=y
  # CONFIG_SERIAL_UARTLITE is not set
  CONFIG_SERIAL_CORE=y
  CONFIG_SERIAL_CORE_CONSOLE=y
  CONFIG_SERIAL_OF_PLATFORM=y
  CONFIG_UNIX98_PTYS=y
  CONFIG_LEGACY_PTYS=y
  CONFIG_SERIAL_OF_PLATFORM=y
  CONFIG_UNIX98_PTYS=y
  CONFIG_LEGACY_PTYS=y
-@@ -510,8 +578,10 @@
+@@ -510,8 +578,10 @@ CONFIG_LEGACY_PTY_COUNT=256
  # CONFIG_NVRAM is not set
  # CONFIG_GEN_RTC is not set
  # CONFIG_R3964 is not set
  # CONFIG_NVRAM is not set
  # CONFIG_GEN_RTC is not set
  # CONFIG_R3964 is not set
  # CONFIG_I2C is not set
  
  #
  # CONFIG_I2C is not set
  
  #
-@@ -545,6 +615,8 @@
+@@ -545,6 +615,8 @@ CONFIG_SSB_POSSIBLE=y
  #
  # Graphics support
  #
  #
  # Graphics support
  #
  # CONFIG_VGASTATE is not set
  CONFIG_VIDEO_OUTPUT_CONTROL=m
  # CONFIG_FB is not set
  # CONFIG_VGASTATE is not set
  CONFIG_VIDEO_OUTPUT_CONTROL=m
  # CONFIG_FB is not set
-@@ -560,9 +632,10 @@
+@@ -560,9 +632,10 @@ CONFIG_VIDEO_OUTPUT_CONTROL=m
  #
  # CONFIG_SOUND is not set
  CONFIG_USB_SUPPORT=y
  #
  # CONFIG_SOUND is not set
  CONFIG_USB_SUPPORT=y
  
  #
  # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
  
  #
  # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-@@ -574,6 +647,7 @@
+@@ -574,6 +647,7 @@ CONFIG_USB_SUPPORT=y
  # CONFIG_USB_GADGET is not set
  # CONFIG_MMC is not set
  # CONFIG_NEW_LEDS is not set
  # CONFIG_USB_GADGET is not set
  # CONFIG_MMC is not set
  # CONFIG_NEW_LEDS is not set
  endif
  ifeq ($(CONFIG_PPC32),y)
  CFLAGS_prom_init.o      += -fPIC
  endif
  ifeq ($(CONFIG_PPC32),y)
  CFLAGS_prom_init.o      += -fPIC
-@@ -70,6 +70,7 @@
+@@ -70,6 +70,7 @@ pci64-$(CONFIG_PPC64)                += pci_dn.o isa-b
  obj-$(CONFIG_PCI)             += pci_$(CONFIG_WORD_SIZE).o $(pci64-y) \
                                   pci-common.o
  obj-$(CONFIG_PCI_MSI)         += msi.o
  obj-$(CONFIG_PCI)             += pci_$(CONFIG_WORD_SIZE).o $(pci64-y) \
                                   pci-common.o
  obj-$(CONFIG_PCI_MSI)         += msi.o
  obj-$(CONFIG_KEXEC)           += machine_kexec.o crash.o \
                                   machine_kexec_$(CONFIG_WORD_SIZE).o
  obj-$(CONFIG_AUDIT)           += audit.o
  obj-$(CONFIG_KEXEC)           += machine_kexec.o crash.o \
                                   machine_kexec_$(CONFIG_WORD_SIZE).o
  obj-$(CONFIG_AUDIT)           += audit.o
-@@ -91,3 +92,13 @@
+@@ -91,3 +92,13 @@ obj-$(CONFIG_PPC64)         += $(obj64-y)
  
  extra-$(CONFIG_PPC_FPU)               += fpu.o
  extra-$(CONFIG_PPC64)         += entry_64.o
  
  extra-$(CONFIG_PPC_FPU)               += fpu.o
  extra-$(CONFIG_PPC64)         += entry_64.o
 +      $(call cmd,systbl_chk)
 --- a/arch/powerpc/kernel/btext.c
 +++ b/arch/powerpc/kernel/btext.c
 +      $(call cmd,systbl_chk)
 --- a/arch/powerpc/kernel/btext.c
 +++ b/arch/powerpc/kernel/btext.c
-@@ -236,7 +236,7 @@
+@@ -236,7 +236,7 @@ int __init btext_find_display(int allow_
        if (rc == 0 || !allow_nonstdout)
                return rc;
  
        if (rc == 0 || !allow_nonstdout)
                return rc;
  
                        rc = btext_initialize(np);
 --- a/arch/powerpc/kernel/cpu_setup_44x.S
 +++ b/arch/powerpc/kernel/cpu_setup_44x.S
                        rc = btext_initialize(np);
 --- a/arch/powerpc/kernel/cpu_setup_44x.S
 +++ b/arch/powerpc/kernel/cpu_setup_44x.S
-@@ -23,11 +23,24 @@
+@@ -23,11 +23,24 @@ _GLOBAL(__setup_cpu_440epx)
        mflr    r4
        bl      __init_fpu_44x
        bl      __plb_disable_wrp
        mflr    r4
        bl      __init_fpu_44x
        bl      __plb_disable_wrp
  _GLOBAL(__init_fpu_44x)
 --- a/arch/powerpc/kernel/cputable.c
 +++ b/arch/powerpc/kernel/cputable.c
  _GLOBAL(__init_fpu_44x)
 --- a/arch/powerpc/kernel/cputable.c
 +++ b/arch/powerpc/kernel/cputable.c
-@@ -33,7 +33,9 @@
+@@ -33,7 +33,9 @@ EXPORT_SYMBOL(cur_cpu_spec);
  #ifdef CONFIG_PPC32
  extern void __setup_cpu_440ep(unsigned long offset, struct cpu_spec* spec);
  extern void __setup_cpu_440epx(unsigned long offset, struct cpu_spec* spec);
  #ifdef CONFIG_PPC32
  extern void __setup_cpu_440ep(unsigned long offset, struct cpu_spec* spec);
  extern void __setup_cpu_440epx(unsigned long offset, struct cpu_spec* spec);
  extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec);
  extern void __setup_cpu_604(unsigned long offset, struct cpu_spec* spec);
  extern void __setup_cpu_750(unsigned long offset, struct cpu_spec* spec);
  extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec);
  extern void __setup_cpu_604(unsigned long offset, struct cpu_spec* spec);
  extern void __setup_cpu_750(unsigned long offset, struct cpu_spec* spec);
-@@ -85,6 +87,7 @@
+@@ -85,6 +87,7 @@ static struct cpu_spec __initdata cpu_sp
                .pmc_type               = PPC_PMC_IBM,
                .oprofile_cpu_type      = "ppc64/power3",
                .oprofile_type          = PPC_OPROFILE_RS64,
                .pmc_type               = PPC_PMC_IBM,
                .oprofile_cpu_type      = "ppc64/power3",
                .oprofile_type          = PPC_OPROFILE_RS64,
                .platform               = "power3",
        },
        {       /* Power3+ */
                .platform               = "power3",
        },
        {       /* Power3+ */
-@@ -99,6 +102,7 @@
+@@ -99,6 +102,7 @@ static struct cpu_spec __initdata cpu_sp
                .pmc_type               = PPC_PMC_IBM,
                .oprofile_cpu_type      = "ppc64/power3",
                .oprofile_type          = PPC_OPROFILE_RS64,
                .pmc_type               = PPC_PMC_IBM,
                .oprofile_cpu_type      = "ppc64/power3",
                .oprofile_type          = PPC_OPROFILE_RS64,
                .platform               = "power3",
        },
        {       /* Northstar */
                .platform               = "power3",
        },
        {       /* Northstar */
-@@ -113,6 +117,7 @@
+@@ -113,6 +117,7 @@ static struct cpu_spec __initdata cpu_sp
                .pmc_type               = PPC_PMC_IBM,
                .oprofile_cpu_type      = "ppc64/rs64",
                .oprofile_type          = PPC_OPROFILE_RS64,
                .pmc_type               = PPC_PMC_IBM,
                .oprofile_cpu_type      = "ppc64/rs64",
                .oprofile_type          = PPC_OPROFILE_RS64,
                .platform               = "rs64",
        },
        {       /* Pulsar */
                .platform               = "rs64",
        },
        {       /* Pulsar */
-@@ -127,6 +132,7 @@
+@@ -127,6 +132,7 @@ static struct cpu_spec __initdata cpu_sp
                .pmc_type               = PPC_PMC_IBM,
                .oprofile_cpu_type      = "ppc64/rs64",
                .oprofile_type          = PPC_OPROFILE_RS64,
                .pmc_type               = PPC_PMC_IBM,
                .oprofile_cpu_type      = "ppc64/rs64",
                .oprofile_type          = PPC_OPROFILE_RS64,
                .platform               = "rs64",
        },
        {       /* I-star */
                .platform               = "rs64",
        },
        {       /* I-star */
-@@ -141,6 +147,7 @@
+@@ -141,6 +147,7 @@ static struct cpu_spec __initdata cpu_sp
                .pmc_type               = PPC_PMC_IBM,
                .oprofile_cpu_type      = "ppc64/rs64",
                .oprofile_type          = PPC_OPROFILE_RS64,
                .pmc_type               = PPC_PMC_IBM,
                .oprofile_cpu_type      = "ppc64/rs64",
                .oprofile_type          = PPC_OPROFILE_RS64,
                .platform               = "rs64",
        },
        {       /* S-star */
                .platform               = "rs64",
        },
        {       /* S-star */
-@@ -155,6 +162,7 @@
+@@ -155,6 +162,7 @@ static struct cpu_spec __initdata cpu_sp
                .pmc_type               = PPC_PMC_IBM,
                .oprofile_cpu_type      = "ppc64/rs64",
                .oprofile_type          = PPC_OPROFILE_RS64,
                .pmc_type               = PPC_PMC_IBM,
                .oprofile_cpu_type      = "ppc64/rs64",
                .oprofile_type          = PPC_OPROFILE_RS64,
                .platform               = "rs64",
        },
        {       /* Power4 */
                .platform               = "rs64",
        },
        {       /* Power4 */
-@@ -169,6 +177,7 @@
+@@ -169,6 +177,7 @@ static struct cpu_spec __initdata cpu_sp
                .pmc_type               = PPC_PMC_IBM,
                .oprofile_cpu_type      = "ppc64/power4",
                .oprofile_type          = PPC_OPROFILE_POWER4,
                .pmc_type               = PPC_PMC_IBM,
                .oprofile_cpu_type      = "ppc64/power4",
                .oprofile_type          = PPC_OPROFILE_POWER4,
                .platform               = "power4",
        },
        {       /* Power4+ */
                .platform               = "power4",
        },
        {       /* Power4+ */
-@@ -183,6 +192,7 @@
+@@ -183,6 +192,7 @@ static struct cpu_spec __initdata cpu_sp
                .pmc_type               = PPC_PMC_IBM,
                .oprofile_cpu_type      = "ppc64/power4",
                .oprofile_type          = PPC_OPROFILE_POWER4,
                .pmc_type               = PPC_PMC_IBM,
                .oprofile_cpu_type      = "ppc64/power4",
                .oprofile_type          = PPC_OPROFILE_POWER4,
                .platform               = "power4",
        },
        {       /* PPC970 */
                .platform               = "power4",
        },
        {       /* PPC970 */
-@@ -200,6 +210,7 @@
+@@ -200,6 +210,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_restore            = __restore_cpu_ppc970,
                .oprofile_cpu_type      = "ppc64/970",
                .oprofile_type          = PPC_OPROFILE_POWER4,
                .cpu_restore            = __restore_cpu_ppc970,
                .oprofile_cpu_type      = "ppc64/970",
                .oprofile_type          = PPC_OPROFILE_POWER4,
                .platform               = "ppc970",
        },
        {       /* PPC970FX */
                .platform               = "ppc970",
        },
        {       /* PPC970FX */
-@@ -217,6 +228,7 @@
+@@ -217,6 +228,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_restore            = __restore_cpu_ppc970,
                .oprofile_cpu_type      = "ppc64/970",
                .oprofile_type          = PPC_OPROFILE_POWER4,
                .cpu_restore            = __restore_cpu_ppc970,
                .oprofile_cpu_type      = "ppc64/970",
                .oprofile_type          = PPC_OPROFILE_POWER4,
                .platform               = "ppc970",
        },
        {       /* PPC970MP DD1.0 - no DEEPNAP, use regular 970 init */
                .platform               = "ppc970",
        },
        {       /* PPC970MP DD1.0 - no DEEPNAP, use regular 970 init */
-@@ -234,6 +246,7 @@
+@@ -234,6 +246,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_restore            = __restore_cpu_ppc970,
                .oprofile_cpu_type      = "ppc64/970MP",
                .oprofile_type          = PPC_OPROFILE_POWER4,
                .cpu_restore            = __restore_cpu_ppc970,
                .oprofile_cpu_type      = "ppc64/970MP",
                .oprofile_type          = PPC_OPROFILE_POWER4,
                .platform               = "ppc970",
        },
        {       /* PPC970MP */
                .platform               = "ppc970",
        },
        {       /* PPC970MP */
-@@ -251,6 +264,7 @@
+@@ -251,6 +264,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_restore            = __restore_cpu_ppc970,
                .oprofile_cpu_type      = "ppc64/970MP",
                .oprofile_type          = PPC_OPROFILE_POWER4,
                .cpu_restore            = __restore_cpu_ppc970,
                .oprofile_cpu_type      = "ppc64/970MP",
                .oprofile_type          = PPC_OPROFILE_POWER4,
                .platform               = "ppc970",
        },
        {       /* PPC970GX */
                .platform               = "ppc970",
        },
        {       /* PPC970GX */
-@@ -267,6 +281,7 @@
+@@ -267,6 +281,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_setup              = __setup_cpu_ppc970,
                .oprofile_cpu_type      = "ppc64/970",
                .oprofile_type          = PPC_OPROFILE_POWER4,
                .cpu_setup              = __setup_cpu_ppc970,
                .oprofile_cpu_type      = "ppc64/970",
                .oprofile_type          = PPC_OPROFILE_POWER4,
                .platform               = "ppc970",
        },
        {       /* Power5 GR */
                .platform               = "ppc970",
        },
        {       /* Power5 GR */
-@@ -286,6 +301,7 @@
+@@ -286,6 +301,7 @@ static struct cpu_spec __initdata cpu_sp
                 */
                .oprofile_mmcra_sihv    = MMCRA_SIHV,
                .oprofile_mmcra_sipr    = MMCRA_SIPR,
                 */
                .oprofile_mmcra_sihv    = MMCRA_SIHV,
                .oprofile_mmcra_sipr    = MMCRA_SIPR,
                .platform               = "power5",
        },
        {       /* Power5++ */
                .platform               = "power5",
        },
        {       /* Power5++ */
-@@ -301,6 +317,7 @@
+@@ -301,6 +317,7 @@ static struct cpu_spec __initdata cpu_sp
                .oprofile_type          = PPC_OPROFILE_POWER4,
                .oprofile_mmcra_sihv    = MMCRA_SIHV,
                .oprofile_mmcra_sipr    = MMCRA_SIPR,
                .oprofile_type          = PPC_OPROFILE_POWER4,
                .oprofile_mmcra_sihv    = MMCRA_SIHV,
                .oprofile_mmcra_sipr    = MMCRA_SIPR,
                .platform               = "power5+",
        },
        {       /* Power5 GS */
                .platform               = "power5+",
        },
        {       /* Power5 GS */
-@@ -317,6 +334,7 @@
+@@ -317,6 +334,7 @@ static struct cpu_spec __initdata cpu_sp
                .oprofile_type          = PPC_OPROFILE_POWER4,
                .oprofile_mmcra_sihv    = MMCRA_SIHV,
                .oprofile_mmcra_sipr    = MMCRA_SIPR,
                .oprofile_type          = PPC_OPROFILE_POWER4,
                .oprofile_mmcra_sihv    = MMCRA_SIHV,
                .oprofile_mmcra_sipr    = MMCRA_SIPR,
                .platform               = "power5+",
        },
        {       /* POWER6 in P5+ mode; 2.04-compliant processor */
                .platform               = "power5+",
        },
        {       /* POWER6 in P5+ mode; 2.04-compliant processor */
-@@ -327,6 +345,7 @@
+@@ -327,6 +345,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_user_features      = COMMON_USER_POWER5_PLUS,
                .icache_bsize           = 128,
                .dcache_bsize           = 128,
                .cpu_user_features      = COMMON_USER_POWER5_PLUS,
                .icache_bsize           = 128,
                .dcache_bsize           = 128,
                .platform               = "power5+",
        },
        {       /* Power6 */
                .platform               = "power5+",
        },
        {       /* Power6 */
-@@ -346,6 +365,7 @@
+@@ -346,6 +365,7 @@ static struct cpu_spec __initdata cpu_sp
                .oprofile_mmcra_sipr    = POWER6_MMCRA_SIPR,
                .oprofile_mmcra_clear   = POWER6_MMCRA_THRM |
                        POWER6_MMCRA_OTHER,
                .oprofile_mmcra_sipr    = POWER6_MMCRA_SIPR,
                .oprofile_mmcra_clear   = POWER6_MMCRA_THRM |
                        POWER6_MMCRA_OTHER,
                .platform               = "power6x",
        },
        {       /* 2.05-compliant processor, i.e. Power6 "architected" mode */
                .platform               = "power6x",
        },
        {       /* 2.05-compliant processor, i.e. Power6 "architected" mode */
-@@ -356,6 +376,7 @@
+@@ -356,6 +376,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_user_features      = COMMON_USER_POWER6,
                .icache_bsize           = 128,
                .dcache_bsize           = 128,
                .cpu_user_features      = COMMON_USER_POWER6,
                .icache_bsize           = 128,
                .dcache_bsize           = 128,
                .platform               = "power6",
        },
        {       /* Cell Broadband Engine */
                .platform               = "power6",
        },
        {       /* Cell Broadband Engine */
-@@ -372,6 +393,7 @@
+@@ -372,6 +393,7 @@ static struct cpu_spec __initdata cpu_sp
                .pmc_type               = PPC_PMC_IBM,
                .oprofile_cpu_type      = "ppc64/cell-be",
                .oprofile_type          = PPC_OPROFILE_CELL,
                .pmc_type               = PPC_PMC_IBM,
                .oprofile_cpu_type      = "ppc64/cell-be",
                .oprofile_type          = PPC_OPROFILE_CELL,
                .platform               = "ppc-cell-be",
        },
        {       /* PA Semi PA6T */
                .platform               = "ppc-cell-be",
        },
        {       /* PA Semi PA6T */
-@@ -388,6 +410,7 @@
+@@ -388,6 +410,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_restore            = __restore_cpu_pa6t,
                .oprofile_cpu_type      = "ppc64/pa6t",
                .oprofile_type          = PPC_OPROFILE_PA6T,
                .cpu_restore            = __restore_cpu_pa6t,
                .oprofile_cpu_type      = "ppc64/pa6t",
                .oprofile_type          = PPC_OPROFILE_PA6T,
                .platform               = "pa6t",
        },
        {       /* default match */
                .platform               = "pa6t",
        },
        {       /* default match */
-@@ -400,6 +423,7 @@
+@@ -400,6 +423,7 @@ static struct cpu_spec __initdata cpu_sp
                .dcache_bsize           = 128,
                .num_pmcs               = 6,
                .pmc_type               = PPC_PMC_IBM,
                .dcache_bsize           = 128,
                .num_pmcs               = 6,
                .pmc_type               = PPC_PMC_IBM,
                .platform               = "power4",
        }
  #endif        /* CONFIG_PPC64 */
                .platform               = "power4",
        }
  #endif        /* CONFIG_PPC64 */
-@@ -414,6 +438,7 @@
+@@ -414,6 +438,7 @@ static struct cpu_spec __initdata cpu_sp
                        PPC_FEATURE_UNIFIED_CACHE | PPC_FEATURE_NO_TB,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                        PPC_FEATURE_UNIFIED_CACHE | PPC_FEATURE_NO_TB,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .platform               = "ppc601",
        },
        {       /* 603 */
                .platform               = "ppc601",
        },
        {       /* 603 */
-@@ -425,6 +450,7 @@
+@@ -425,6 +450,7 @@ static struct cpu_spec __initdata cpu_sp
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_setup              = __setup_cpu_603,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_setup              = __setup_cpu_603,
                .platform               = "ppc603",
        },
        {       /* 603e */
                .platform               = "ppc603",
        },
        {       /* 603e */
-@@ -436,6 +462,7 @@
+@@ -436,6 +462,7 @@ static struct cpu_spec __initdata cpu_sp
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_setup              = __setup_cpu_603,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_setup              = __setup_cpu_603,
                .platform               = "ppc603",
        },
        {       /* 603ev */
                .platform               = "ppc603",
        },
        {       /* 603ev */
-@@ -447,6 +474,7 @@
+@@ -447,6 +474,7 @@ static struct cpu_spec __initdata cpu_sp
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_setup              = __setup_cpu_603,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_setup              = __setup_cpu_603,
                .platform               = "ppc603",
        },
        {       /* 604 */
                .platform               = "ppc603",
        },
        {       /* 604 */
-@@ -459,6 +487,7 @@
+@@ -459,6 +487,7 @@ static struct cpu_spec __initdata cpu_sp
                .dcache_bsize           = 32,
                .num_pmcs               = 2,
                .cpu_setup              = __setup_cpu_604,
                .dcache_bsize           = 32,
                .num_pmcs               = 2,
                .cpu_setup              = __setup_cpu_604,
                .platform               = "ppc604",
        },
        {       /* 604e */
                .platform               = "ppc604",
        },
        {       /* 604e */
-@@ -471,6 +500,7 @@
+@@ -471,6 +500,7 @@ static struct cpu_spec __initdata cpu_sp
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_604,
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_604,
                .platform               = "ppc604",
        },
        {       /* 604r */
                .platform               = "ppc604",
        },
        {       /* 604r */
-@@ -483,6 +513,7 @@
+@@ -483,6 +513,7 @@ static struct cpu_spec __initdata cpu_sp
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_604,
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_604,
                .platform               = "ppc604",
        },
        {       /* 604ev */
                .platform               = "ppc604",
        },
        {       /* 604ev */
-@@ -495,6 +526,7 @@
+@@ -495,6 +526,7 @@ static struct cpu_spec __initdata cpu_sp
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_604,
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_604,
                .platform               = "ppc604",
        },
        {       /* 740/750 (0x4202, don't support TAU ?) */
                .platform               = "ppc604",
        },
        {       /* 740/750 (0x4202, don't support TAU ?) */
-@@ -507,6 +539,7 @@
+@@ -507,6 +539,7 @@ static struct cpu_spec __initdata cpu_sp
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_750,
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_750,
                .platform               = "ppc750",
        },
        {       /* 750CX (80100 and 8010x?) */
                .platform               = "ppc750",
        },
        {       /* 750CX (80100 and 8010x?) */
-@@ -519,6 +552,7 @@
+@@ -519,6 +552,7 @@ static struct cpu_spec __initdata cpu_sp
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_750cx,
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_750cx,
                .platform               = "ppc750",
        },
        {       /* 750CX (82201 and 82202) */
                .platform               = "ppc750",
        },
        {       /* 750CX (82201 and 82202) */
-@@ -531,6 +565,7 @@
+@@ -531,6 +565,7 @@ static struct cpu_spec __initdata cpu_sp
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_750cx,
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_750cx,
                .platform               = "ppc750",
        },
        {       /* 750CXe (82214) */
                .platform               = "ppc750",
        },
        {       /* 750CXe (82214) */
-@@ -543,6 +578,7 @@
+@@ -543,6 +578,7 @@ static struct cpu_spec __initdata cpu_sp
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_750cx,
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_750cx,
                .platform               = "ppc750",
        },
        {       /* 750CXe "Gekko" (83214) */
                .platform               = "ppc750",
        },
        {       /* 750CXe "Gekko" (83214) */
-@@ -555,6 +591,7 @@
+@@ -555,6 +591,7 @@ static struct cpu_spec __initdata cpu_sp
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_750cx,
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_750cx,
                .platform               = "ppc750",
        },
        {       /* 750CL */
                .platform               = "ppc750",
        },
        {       /* 750CL */
-@@ -567,6 +604,7 @@
+@@ -567,6 +604,7 @@ static struct cpu_spec __initdata cpu_sp
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_750,
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_750,
                .platform               = "ppc750",
        },
        {       /* 745/755 */
                .platform               = "ppc750",
        },
        {       /* 745/755 */
-@@ -579,6 +617,7 @@
+@@ -579,6 +617,7 @@ static struct cpu_spec __initdata cpu_sp
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_750,
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_750,
                .platform               = "ppc750",
        },
        {       /* 750FX rev 1.x */
                .platform               = "ppc750",
        },
        {       /* 750FX rev 1.x */
-@@ -591,6 +630,7 @@
+@@ -591,6 +630,7 @@ static struct cpu_spec __initdata cpu_sp
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_750,
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_750,
                .platform               = "ppc750",
        },
        {       /* 750FX rev 2.0 must disable HID0[DPM] */
                .platform               = "ppc750",
        },
        {       /* 750FX rev 2.0 must disable HID0[DPM] */
-@@ -603,6 +643,7 @@
+@@ -603,6 +643,7 @@ static struct cpu_spec __initdata cpu_sp
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_750,
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_750,
                .platform               = "ppc750",
        },
        {       /* 750FX (All revs except 2.0) */
                .platform               = "ppc750",
        },
        {       /* 750FX (All revs except 2.0) */
-@@ -615,6 +656,7 @@
+@@ -615,6 +656,7 @@ static struct cpu_spec __initdata cpu_sp
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_750fx,
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_750fx,
                .platform               = "ppc750",
        },
        {       /* 750GX */
                .platform               = "ppc750",
        },
        {       /* 750GX */
-@@ -627,6 +669,7 @@
+@@ -627,6 +669,7 @@ static struct cpu_spec __initdata cpu_sp
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_750fx,
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_750fx,
                .platform               = "ppc750",
        },
        {       /* 740/750 (L2CR bit need fixup for 740) */
                .platform               = "ppc750",
        },
        {       /* 740/750 (L2CR bit need fixup for 740) */
-@@ -639,6 +682,7 @@
+@@ -639,6 +682,7 @@ static struct cpu_spec __initdata cpu_sp
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_750,
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_750,
                .platform               = "ppc750",
        },
        {       /* 7400 rev 1.1 ? (no TAU) */
                .platform               = "ppc750",
        },
        {       /* 7400 rev 1.1 ? (no TAU) */
-@@ -652,6 +696,7 @@
+@@ -652,6 +696,7 @@ static struct cpu_spec __initdata cpu_sp
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_7400,
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_7400,
                .platform               = "ppc7400",
        },
        {       /* 7400 */
                .platform               = "ppc7400",
        },
        {       /* 7400 */
-@@ -665,6 +710,7 @@
+@@ -665,6 +710,7 @@ static struct cpu_spec __initdata cpu_sp
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_7400,
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_7400,
                .platform               = "ppc7400",
        },
        {       /* 7410 */
                .platform               = "ppc7400",
        },
        {       /* 7410 */
-@@ -678,6 +724,7 @@
+@@ -678,6 +724,7 @@ static struct cpu_spec __initdata cpu_sp
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_7410,
                .dcache_bsize           = 32,
                .num_pmcs               = 4,
                .cpu_setup              = __setup_cpu_7410,
                .platform               = "ppc7400",
        },
        {       /* 7450 2.0 - no doze/nap */
                .platform               = "ppc7400",
        },
        {       /* 7450 2.0 - no doze/nap */
-@@ -693,6 +740,7 @@
+@@ -693,6 +740,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_setup              = __setup_cpu_745x,
                .oprofile_cpu_type      = "ppc/7450",
                .oprofile_type          = PPC_OPROFILE_G4,
                .cpu_setup              = __setup_cpu_745x,
                .oprofile_cpu_type      = "ppc/7450",
                .oprofile_type          = PPC_OPROFILE_G4,
                .platform               = "ppc7450",
        },
        {       /* 7450 2.1 */
                .platform               = "ppc7450",
        },
        {       /* 7450 2.1 */
-@@ -708,6 +756,7 @@
+@@ -708,6 +756,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_setup              = __setup_cpu_745x,
                .oprofile_cpu_type      = "ppc/7450",
                .oprofile_type          = PPC_OPROFILE_G4,
                .cpu_setup              = __setup_cpu_745x,
                .oprofile_cpu_type      = "ppc/7450",
                .oprofile_type          = PPC_OPROFILE_G4,
                .platform               = "ppc7450",
        },
        {       /* 7450 2.3 and newer */
                .platform               = "ppc7450",
        },
        {       /* 7450 2.3 and newer */
-@@ -723,6 +772,7 @@
+@@ -723,6 +772,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_setup              = __setup_cpu_745x,
                .oprofile_cpu_type      = "ppc/7450",
                .oprofile_type          = PPC_OPROFILE_G4,
                .cpu_setup              = __setup_cpu_745x,
                .oprofile_cpu_type      = "ppc/7450",
                .oprofile_type          = PPC_OPROFILE_G4,
                .platform               = "ppc7450",
        },
        {       /* 7455 rev 1.x */
                .platform               = "ppc7450",
        },
        {       /* 7455 rev 1.x */
-@@ -738,6 +788,7 @@
+@@ -738,6 +788,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_setup              = __setup_cpu_745x,
                .oprofile_cpu_type      = "ppc/7450",
                .oprofile_type          = PPC_OPROFILE_G4,
                .cpu_setup              = __setup_cpu_745x,
                .oprofile_cpu_type      = "ppc/7450",
                .oprofile_type          = PPC_OPROFILE_G4,
                .platform               = "ppc7450",
        },
        {       /* 7455 rev 2.0 */
                .platform               = "ppc7450",
        },
        {       /* 7455 rev 2.0 */
-@@ -753,6 +804,7 @@
+@@ -753,6 +804,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_setup              = __setup_cpu_745x,
                .oprofile_cpu_type      = "ppc/7450",
                .oprofile_type          = PPC_OPROFILE_G4,
                .cpu_setup              = __setup_cpu_745x,
                .oprofile_cpu_type      = "ppc/7450",
                .oprofile_type          = PPC_OPROFILE_G4,
                .platform               = "ppc7450",
        },
        {       /* 7455 others */
                .platform               = "ppc7450",
        },
        {       /* 7455 others */
-@@ -768,6 +820,7 @@
+@@ -768,6 +820,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_setup              = __setup_cpu_745x,
                .oprofile_cpu_type      = "ppc/7450",
                .oprofile_type          = PPC_OPROFILE_G4,
                .cpu_setup              = __setup_cpu_745x,
                .oprofile_cpu_type      = "ppc/7450",
                .oprofile_type          = PPC_OPROFILE_G4,
                .platform               = "ppc7450",
        },
        {       /* 7447/7457 Rev 1.0 */
                .platform               = "ppc7450",
        },
        {       /* 7447/7457 Rev 1.0 */
-@@ -783,6 +836,7 @@
+@@ -783,6 +836,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_setup              = __setup_cpu_745x,
                .oprofile_cpu_type      = "ppc/7450",
                .oprofile_type          = PPC_OPROFILE_G4,
                .cpu_setup              = __setup_cpu_745x,
                .oprofile_cpu_type      = "ppc/7450",
                .oprofile_type          = PPC_OPROFILE_G4,
                .platform               = "ppc7450",
        },
        {       /* 7447/7457 Rev 1.1 */
                .platform               = "ppc7450",
        },
        {       /* 7447/7457 Rev 1.1 */
-@@ -798,6 +852,7 @@
+@@ -798,6 +852,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_setup              = __setup_cpu_745x,
                .oprofile_cpu_type      = "ppc/7450",
                .oprofile_type          = PPC_OPROFILE_G4,
                .cpu_setup              = __setup_cpu_745x,
                .oprofile_cpu_type      = "ppc/7450",
                .oprofile_type          = PPC_OPROFILE_G4,
                .platform               = "ppc7450",
        },
        {       /* 7447/7457 Rev 1.2 and later */
                .platform               = "ppc7450",
        },
        {       /* 7447/7457 Rev 1.2 and later */
-@@ -812,6 +867,7 @@
+@@ -812,6 +867,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_setup              = __setup_cpu_745x,
                .oprofile_cpu_type      = "ppc/7450",
                .oprofile_type          = PPC_OPROFILE_G4,
                .cpu_setup              = __setup_cpu_745x,
                .oprofile_cpu_type      = "ppc/7450",
                .oprofile_type          = PPC_OPROFILE_G4,
                .platform               = "ppc7450",
        },
        {       /* 7447A */
                .platform               = "ppc7450",
        },
        {       /* 7447A */
-@@ -827,6 +883,7 @@
+@@ -827,6 +883,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_setup              = __setup_cpu_745x,
                .oprofile_cpu_type      = "ppc/7450",
                .oprofile_type          = PPC_OPROFILE_G4,
                .cpu_setup              = __setup_cpu_745x,
                .oprofile_cpu_type      = "ppc/7450",
                .oprofile_type          = PPC_OPROFILE_G4,
                .platform               = "ppc7450",
        },
        {       /* 7448 */
                .platform               = "ppc7450",
        },
        {       /* 7448 */
-@@ -842,6 +899,7 @@
+@@ -842,6 +899,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_setup              = __setup_cpu_745x,
                .oprofile_cpu_type      = "ppc/7450",
                .oprofile_type          = PPC_OPROFILE_G4,
                .cpu_setup              = __setup_cpu_745x,
                .oprofile_cpu_type      = "ppc/7450",
                .oprofile_type          = PPC_OPROFILE_G4,
                .platform               = "ppc7450",
        },
        {       /* 82xx (8240, 8245, 8260 are all 603e cores) */
                .platform               = "ppc7450",
        },
        {       /* 82xx (8240, 8245, 8260 are all 603e cores) */
-@@ -853,6 +911,7 @@
+@@ -853,6 +911,7 @@ static struct cpu_spec __initdata cpu_sp
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_setup              = __setup_cpu_603,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_setup              = __setup_cpu_603,
                .platform               = "ppc603",
        },
        {       /* All G2_LE (603e core, plus some) have the same pvr */
                .platform               = "ppc603",
        },
        {       /* All G2_LE (603e core, plus some) have the same pvr */
-@@ -864,6 +923,7 @@
+@@ -864,6 +923,7 @@ static struct cpu_spec __initdata cpu_sp
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_setup              = __setup_cpu_603,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_setup              = __setup_cpu_603,
                .platform               = "ppc603",
        },
        {       /* e300c1 (a 603e core, plus some) on 83xx */
                .platform               = "ppc603",
        },
        {       /* e300c1 (a 603e core, plus some) on 83xx */
-@@ -875,6 +935,7 @@
+@@ -875,6 +935,7 @@ static struct cpu_spec __initdata cpu_sp
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_setup              = __setup_cpu_603,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_setup              = __setup_cpu_603,
                .platform               = "ppc603",
        },
        {       /* e300c2 (an e300c1 core, plus some, minus FPU) on 83xx */
                .platform               = "ppc603",
        },
        {       /* e300c2 (an e300c1 core, plus some, minus FPU) on 83xx */
-@@ -886,9 +947,10 @@
+@@ -886,9 +947,10 @@ static struct cpu_spec __initdata cpu_sp
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_setup              = __setup_cpu_603,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_setup              = __setup_cpu_603,
                .pvr_mask               = 0x7fff0000,
                .pvr_value              = 0x00850000,
                .cpu_name               = "e300c3",
                .pvr_mask               = 0x7fff0000,
                .pvr_value              = 0x00850000,
                .cpu_name               = "e300c3",
-@@ -899,6 +961,18 @@
+@@ -899,6 +961,18 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_setup              = __setup_cpu_603,
                .platform               = "ppc603",
        },
                .cpu_setup              = __setup_cpu_603,
                .platform               = "ppc603",
        },
        {       /* default match, we assume split I/D cache & TB (non-601)... */
                .pvr_mask               = 0x00000000,
                .pvr_value              = 0x00000000,
        {       /* default match, we assume split I/D cache & TB (non-601)... */
                .pvr_mask               = 0x00000000,
                .pvr_value              = 0x00000000,
-@@ -907,6 +981,7 @@
+@@ -907,6 +981,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_user_features      = COMMON_USER,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_user_features      = COMMON_USER,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .platform               = "ppc603",
        },
  #endif /* CLASSIC_PPC */
                .platform               = "ppc603",
        },
  #endif /* CLASSIC_PPC */
-@@ -933,6 +1008,7 @@
+@@ -933,6 +1008,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_user_features      = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
                .icache_bsize           = 16,
                .dcache_bsize           = 16,
                .cpu_user_features      = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
                .icache_bsize           = 16,
                .dcache_bsize           = 16,
                .platform               = "ppc403",
        },
        {       /* 403GCX */
                .platform               = "ppc403",
        },
        {       /* 403GCX */
-@@ -944,6 +1020,7 @@
+@@ -944,6 +1020,7 @@ static struct cpu_spec __initdata cpu_sp
                        PPC_FEATURE_HAS_MMU | PPC_FEATURE_NO_TB,
                .icache_bsize           = 16,
                .dcache_bsize           = 16,
                        PPC_FEATURE_HAS_MMU | PPC_FEATURE_NO_TB,
                .icache_bsize           = 16,
                .dcache_bsize           = 16,
                .platform               = "ppc403",
        },
        {       /* 403G ?? */
                .platform               = "ppc403",
        },
        {       /* 403G ?? */
-@@ -954,6 +1031,7 @@
+@@ -954,6 +1031,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_user_features      = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
                .icache_bsize           = 16,
                .dcache_bsize           = 16,
                .cpu_user_features      = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
                .icache_bsize           = 16,
                .dcache_bsize           = 16,
                .platform               = "ppc403",
        },
        {       /* 405GP */
                .platform               = "ppc403",
        },
        {       /* 405GP */
-@@ -965,6 +1043,7 @@
+@@ -965,6 +1043,7 @@ static struct cpu_spec __initdata cpu_sp
                        PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                        PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .platform               = "ppc405",
        },
        {       /* STB 03xxx */
                .platform               = "ppc405",
        },
        {       /* STB 03xxx */
-@@ -976,6 +1055,7 @@
+@@ -976,6 +1055,7 @@ static struct cpu_spec __initdata cpu_sp
                        PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                        PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .platform               = "ppc405",
        },
        {       /* STB 04xxx */
                .platform               = "ppc405",
        },
        {       /* STB 04xxx */
-@@ -987,6 +1067,7 @@
+@@ -987,6 +1067,7 @@ static struct cpu_spec __initdata cpu_sp
                        PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                        PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .platform               = "ppc405",
        },
        {       /* NP405L */
                .platform               = "ppc405",
        },
        {       /* NP405L */
-@@ -998,6 +1079,7 @@
+@@ -998,6 +1079,7 @@ static struct cpu_spec __initdata cpu_sp
                        PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                        PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .platform               = "ppc405",
        },
        {       /* NP4GS3 */
                .platform               = "ppc405",
        },
        {       /* NP4GS3 */
-@@ -1009,6 +1091,7 @@
+@@ -1009,6 +1091,7 @@ static struct cpu_spec __initdata cpu_sp
                        PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                        PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .platform               = "ppc405",
        },
        {   /* NP405H */
                .platform               = "ppc405",
        },
        {   /* NP405H */
-@@ -1020,6 +1103,7 @@
+@@ -1020,6 +1103,7 @@ static struct cpu_spec __initdata cpu_sp
                        PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                        PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .platform               = "ppc405",
        },
        {       /* 405GPr */
                .platform               = "ppc405",
        },
        {       /* 405GPr */
-@@ -1031,6 +1115,7 @@
+@@ -1031,6 +1115,7 @@ static struct cpu_spec __initdata cpu_sp
                        PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                        PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .platform               = "ppc405",
        },
        {   /* STBx25xx */
                .platform               = "ppc405",
        },
        {   /* STBx25xx */
-@@ -1042,6 +1127,7 @@
+@@ -1042,6 +1127,7 @@ static struct cpu_spec __initdata cpu_sp
                        PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                        PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .platform               = "ppc405",
        },
        {       /* 405LP */
                .platform               = "ppc405",
        },
        {       /* 405LP */
-@@ -1052,6 +1138,7 @@
+@@ -1052,6 +1138,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_user_features      = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_user_features      = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .platform               = "ppc405",
        },
        {       /* Xilinx Virtex-II Pro  */
                .platform               = "ppc405",
        },
        {       /* Xilinx Virtex-II Pro  */
-@@ -1063,6 +1150,7 @@
+@@ -1063,6 +1150,7 @@ static struct cpu_spec __initdata cpu_sp
                        PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                        PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .platform               = "ppc405",
        },
        {       /* Xilinx Virtex-4 FX */
                .platform               = "ppc405",
        },
        {       /* Xilinx Virtex-4 FX */
-@@ -1074,6 +1162,7 @@
+@@ -1074,6 +1162,7 @@ static struct cpu_spec __initdata cpu_sp
                        PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                        PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .platform               = "ppc405",
        },
        {       /* 405EP */
                .platform               = "ppc405",
        },
        {       /* 405EP */
-@@ -1085,17 +1174,31 @@
+@@ -1085,17 +1174,31 @@ static struct cpu_spec __initdata cpu_sp
                        PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                        PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .platform               = "ppc405",
        },
  
                .platform               = "ppc405",
        },
  
-@@ -1109,6 +1212,7 @@
+@@ -1109,6 +1212,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_user_features      = COMMON_USER_BOOKE,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_user_features      = COMMON_USER_BOOKE,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .platform               = "ppc440",
        },
        { /* Use logical PVR for 440EP (logical pvr = pvr | 0x8) */
                .platform               = "ppc440",
        },
        { /* Use logical PVR for 440EP (logical pvr = pvr | 0x8) */
-@@ -1120,6 +1224,7 @@
+@@ -1120,6 +1224,7 @@ static struct cpu_spec __initdata cpu_sp
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_setup              = __setup_cpu_440ep,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_setup              = __setup_cpu_440ep,
                .platform               = "ppc440",
        },
        {
                .platform               = "ppc440",
        },
        {
-@@ -1130,6 +1235,19 @@
+@@ -1130,6 +1235,19 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_user_features      = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_user_features      = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .platform               = "ppc440",
        },
        { /* Use logical PVR for 440EP (logical pvr = pvr | 0x8) */
                .platform               = "ppc440",
        },
        { /* Use logical PVR for 440EP (logical pvr = pvr | 0x8) */
-@@ -1141,6 +1259,7 @@
+@@ -1141,6 +1259,7 @@ static struct cpu_spec __initdata cpu_sp
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_setup              = __setup_cpu_440ep,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_setup              = __setup_cpu_440ep,
                .platform               = "ppc440",
        },
        { /* 440GRX */
                .platform               = "ppc440",
        },
        { /* 440GRX */
-@@ -1152,6 +1271,7 @@
+@@ -1152,6 +1271,7 @@ static struct cpu_spec __initdata cpu_sp
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_setup              = __setup_cpu_440grx,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_setup              = __setup_cpu_440grx,
                .platform               = "ppc440",
        },
        { /* Use logical PVR for 440EPx (logical pvr = pvr | 0x8) */
                .platform               = "ppc440",
        },
        { /* Use logical PVR for 440EPx (logical pvr = pvr | 0x8) */
-@@ -1163,6 +1283,7 @@
+@@ -1163,6 +1283,7 @@ static struct cpu_spec __initdata cpu_sp
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_setup              = __setup_cpu_440epx,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_setup              = __setup_cpu_440epx,
                .platform               = "ppc440",
        },
        {       /* 440GP Rev. B */
                .platform               = "ppc440",
        },
        {       /* 440GP Rev. B */
-@@ -1173,6 +1294,7 @@
+@@ -1173,6 +1294,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_user_features      = COMMON_USER_BOOKE,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_user_features      = COMMON_USER_BOOKE,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .platform               = "ppc440gp",
        },
        {       /* 440GP Rev. C */
                .platform               = "ppc440gp",
        },
        {       /* 440GP Rev. C */
-@@ -1183,6 +1305,7 @@
+@@ -1183,6 +1305,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_user_features      = COMMON_USER_BOOKE,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_user_features      = COMMON_USER_BOOKE,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .platform               = "ppc440gp",
        },
        { /* 440GX Rev. A */
                .platform               = "ppc440gp",
        },
        { /* 440GX Rev. A */
-@@ -1193,6 +1316,8 @@
+@@ -1193,6 +1316,8 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_user_features      = COMMON_USER_BOOKE,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_user_features      = COMMON_USER_BOOKE,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .platform               = "ppc440",
        },
        { /* 440GX Rev. B */
                .platform               = "ppc440",
        },
        { /* 440GX Rev. B */
-@@ -1203,6 +1328,8 @@
+@@ -1203,6 +1328,8 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_user_features      = COMMON_USER_BOOKE,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_user_features      = COMMON_USER_BOOKE,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .platform               = "ppc440",
        },
        { /* 440GX Rev. C */
                .platform               = "ppc440",
        },
        { /* 440GX Rev. C */
-@@ -1213,6 +1340,8 @@
+@@ -1213,6 +1340,8 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_user_features      = COMMON_USER_BOOKE,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_user_features      = COMMON_USER_BOOKE,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .platform               = "ppc440",
        },
        { /* 440GX Rev. F */
                .platform               = "ppc440",
        },
        { /* 440GX Rev. F */
-@@ -1223,6 +1352,8 @@
+@@ -1223,6 +1352,8 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_user_features      = COMMON_USER_BOOKE,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_user_features      = COMMON_USER_BOOKE,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .platform               = "ppc440",
        },
        { /* 440SP Rev. A */
                .platform               = "ppc440",
        },
        { /* 440SP Rev. A */
-@@ -1233,6 +1364,7 @@
+@@ -1233,6 +1364,7 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_user_features      = COMMON_USER_BOOKE,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_user_features      = COMMON_USER_BOOKE,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .platform               = "ppc440",
        },
        { /* 440SPe Rev. A */
                .platform               = "ppc440",
        },
        { /* 440SPe Rev. A */
-@@ -1243,6 +1375,8 @@
+@@ -1243,6 +1375,8 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_user_features      = COMMON_USER_BOOKE,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_user_features      = COMMON_USER_BOOKE,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .platform               = "ppc440",
        },
        { /* 440SPe Rev. B */
                .platform               = "ppc440",
        },
        { /* 440SPe Rev. B */
-@@ -1253,10 +1387,13 @@
+@@ -1253,10 +1387,13 @@ static struct cpu_spec __initdata cpu_sp
                .cpu_user_features      = COMMON_USER_BOOKE,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
                .cpu_user_features      = COMMON_USER_BOOKE,
                .icache_bsize           = 32,
                .dcache_bsize           = 32,
        {       /* e200z5 */
                .pvr_mask               = 0xfff00000,
                .pvr_value              = 0x81000000,
        {       /* e200z5 */
                .pvr_mask               = 0xfff00000,
                .pvr_value              = 0x81000000,
-@@ -1267,6 +1404,7 @@
+@@ -1267,6 +1404,7 @@ static struct cpu_spec __initdata cpu_sp
                        PPC_FEATURE_HAS_EFP_SINGLE |
                        PPC_FEATURE_UNIFIED_CACHE,
                .dcache_bsize           = 32,
                        PPC_FEATURE_HAS_EFP_SINGLE |
                        PPC_FEATURE_UNIFIED_CACHE,
                .dcache_bsize           = 32,
                .platform               = "ppc5554",
        },
        {       /* e200z6 */
                .platform               = "ppc5554",
        },
        {       /* e200z6 */
-@@ -1280,8 +1418,10 @@
+@@ -1280,8 +1418,10 @@ static struct cpu_spec __initdata cpu_sp
                        PPC_FEATURE_HAS_EFP_SINGLE_COMP |
                        PPC_FEATURE_UNIFIED_CACHE,
                .dcache_bsize           = 32,
                        PPC_FEATURE_HAS_EFP_SINGLE_COMP |
                        PPC_FEATURE_UNIFIED_CACHE,
                .dcache_bsize           = 32,
        {       /* e500 */
                .pvr_mask               = 0xffff0000,
                .pvr_value              = 0x80200000,
        {       /* e500 */
                .pvr_mask               = 0xffff0000,
                .pvr_value              = 0x80200000,
-@@ -1296,6 +1436,7 @@
+@@ -1296,6 +1436,7 @@ static struct cpu_spec __initdata cpu_sp
                .num_pmcs               = 4,
                .oprofile_cpu_type      = "ppc/e500",
                .oprofile_type          = PPC_OPROFILE_BOOKE,
                .num_pmcs               = 4,
                .oprofile_cpu_type      = "ppc/e500",
                .oprofile_type          = PPC_OPROFILE_BOOKE,
                .platform               = "ppc8540",
        },
        {       /* e500v2 */
                .platform               = "ppc8540",
        },
        {       /* e500v2 */
-@@ -1313,9 +1454,11 @@
+@@ -1313,9 +1454,11 @@ static struct cpu_spec __initdata cpu_sp
                .num_pmcs               = 4,
                .oprofile_cpu_type      = "ppc/e500",
                .oprofile_type          = PPC_OPROFILE_BOOKE,
                .num_pmcs               = 4,
                .oprofile_cpu_type      = "ppc/e500",
                .oprofile_type          = PPC_OPROFILE_BOOKE,
  
  #ifdef DEBUG
  #include <asm/udbg.h>
  
  #ifdef DEBUG
  #include <asm/udbg.h>
-@@ -45,6 +47,11 @@
+@@ -45,6 +47,11 @@ int crashing_cpu = -1;
  static cpumask_t cpus_in_crash = CPU_MASK_NONE;
  cpumask_t cpus_in_sr = CPU_MASK_NONE;
  
  static cpumask_t cpus_in_crash = CPU_MASK_NONE;
  cpumask_t cpus_in_sr = CPU_MASK_NONE;
  
  #ifdef CONFIG_SMP
  static atomic_t enter_on_soft_reset = ATOMIC_INIT(0);
  
  #ifdef CONFIG_SMP
  static atomic_t enter_on_soft_reset = ATOMIC_INIT(0);
  
-@@ -285,9 +292,72 @@
+@@ -285,9 +292,72 @@ static inline void crash_kexec_stop_spus
  }
  #endif /* CONFIG_SPU_BASE */
  
  }
  #endif /* CONFIG_SPU_BASE */
  
  
        /*
         * This function is only called after the system
  
        /*
         * This function is only called after the system
-@@ -301,15 +371,36 @@
+@@ -301,15 +371,36 @@ void default_machine_crash_shutdown(stru
         */
        hard_irq_disable();
  
         */
        hard_irq_disable();
  
         * Make a note of crashing cpu. Will be used in machine_kexec
 --- a/arch/powerpc/kernel/dma_64.c
 +++ b/arch/powerpc/kernel/dma_64.c
         * Make a note of crashing cpu. Will be used in machine_kexec
 --- a/arch/powerpc/kernel/dma_64.c
 +++ b/arch/powerpc/kernel/dma_64.c
-@@ -112,10 +112,16 @@
+@@ -112,10 +112,16 @@ EXPORT_SYMBOL(dma_iommu_ops);
  /*
   * Generic direct DMA implementation
   *
  /*
   * Generic direct DMA implementation
   *
  
  static void *dma_direct_alloc_coherent(struct device *dev, size_t size,
                                       dma_addr_t *dma_handle, gfp_t flag)
  
  static void *dma_direct_alloc_coherent(struct device *dev, size_t size,
                                       dma_addr_t *dma_handle, gfp_t flag)
-@@ -124,13 +130,12 @@
+@@ -124,13 +130,12 @@ static void *dma_direct_alloc_coherent(s
        void *ret;
        int node = dev->archdata.numa_node;
  
        void *ret;
        int node = dev->archdata.numa_node;
  
  
        return ret;
  }
  
        return ret;
  }
-@@ -145,7 +150,7 @@
+@@ -145,7 +150,7 @@ static dma_addr_t dma_direct_map_single(
                                        size_t size,
                                        enum dma_data_direction direction)
  {
                                        size_t size,
                                        enum dma_data_direction direction)
  {
  }
  
  static void dma_direct_unmap_single(struct device *dev, dma_addr_t dma_addr,
  }
  
  static void dma_direct_unmap_single(struct device *dev, dma_addr_t dma_addr,
-@@ -161,7 +166,7 @@
+@@ -161,7 +166,7 @@ static int dma_direct_map_sg(struct devi
        int i;
  
        for_each_sg(sgl, sg, nents, i) {
        int i;
  
        for_each_sg(sgl, sg, nents, i) {
  
 --- a/arch/powerpc/kernel/head_44x.S
 +++ b/arch/powerpc/kernel/head_44x.S
  
 --- a/arch/powerpc/kernel/head_44x.S
 +++ b/arch/powerpc/kernel/head_44x.S
-@@ -289,11 +289,8 @@
+@@ -289,11 +289,8 @@ interrupt_base:
        CRITICAL_EXCEPTION(0x0100, CriticalInput, unknown_exception)
  
        /* Machine Check Interrupt */
        CRITICAL_EXCEPTION(0x0100, CriticalInput, unknown_exception)
  
        /* Machine Check Interrupt */
  
        /* Data Storage Interrupt */
        START_EXCEPTION(DataStorage)
  
        /* Data Storage Interrupt */
        START_EXCEPTION(DataStorage)
-@@ -674,6 +671,15 @@
+@@ -674,6 +671,15 @@ finish_tlb_load:
   */
  
  /*
   */
  
  /*
   * The 44x core does not have an AltiVec unit.
 --- a/arch/powerpc/kernel/head_booke.h
 +++ b/arch/powerpc/kernel/head_booke.h
   * The 44x core does not have an AltiVec unit.
 --- a/arch/powerpc/kernel/head_booke.h
 +++ b/arch/powerpc/kernel/head_booke.h
-@@ -166,7 +166,7 @@
+@@ -166,7 +166,7 @@ label:
        mfspr   r5,SPRN_ESR;                                    \
        stw     r5,_ESR(r11);                                   \
        addi    r3,r1,STACK_FRAME_OVERHEAD;                     \
        mfspr   r5,SPRN_ESR;                                    \
        stw     r5,_ESR(r11);                                   \
        addi    r3,r1,STACK_FRAME_OVERHEAD;                     \
  
 --- a/arch/powerpc/kernel/head_fsl_booke.S
 +++ b/arch/powerpc/kernel/head_fsl_booke.S
  
 --- a/arch/powerpc/kernel/head_fsl_booke.S
 +++ b/arch/powerpc/kernel/head_fsl_booke.S
-@@ -73,8 +73,8 @@
+@@ -73,8 +73,8 @@ _ENTRY(_start);
  /* We try to not make any assumptions about how the boot loader
   * setup or used the TLBs.  We invalidate all mappings from the
   * boot loader and load a single entry in TLB1[0] to map the
  /* We try to not make any assumptions about how the boot loader
   * setup or used the TLBs.  We invalidate all mappings from the
   * boot loader and load a single entry in TLB1[0] to map the
   *
   * Requirement on bootloader:
   *  - The page we're executing in needs to reside in TLB1 and
   *
   * Requirement on bootloader:
   *  - The page we're executing in needs to reside in TLB1 and
-@@ -167,7 +167,7 @@
+@@ -167,7 +167,7 @@ skpinv:    addi    r6,r6,1                         /* Increment */
        mtspr   SPRN_MAS0,r7
        tlbre
  
        mtspr   SPRN_MAS0,r7
        tlbre
  
        lis     r7,0x1000       /* Set MAS0(TLBSEL) = 1 */
        rlwimi  r7,r5,16,4,15   /* Setup MAS0 = TLBSEL | ESEL(r5) */
        mtspr   SPRN_MAS0,r7
        lis     r7,0x1000       /* Set MAS0(TLBSEL) = 1 */
        rlwimi  r7,r5,16,4,15   /* Setup MAS0 = TLBSEL | ESEL(r5) */
        mtspr   SPRN_MAS0,r7
-@@ -177,9 +177,12 @@
+@@ -177,9 +177,12 @@ skpinv:   addi    r6,r6,1                         /* Increment */
        ori     r6,r6,(MAS1_TSIZE(BOOKE_PAGESZ_4K))@l
        mtspr   SPRN_MAS1,r6
        mfspr   r6,SPRN_MAS2
        ori     r6,r6,(MAS1_TSIZE(BOOKE_PAGESZ_4K))@l
        mtspr   SPRN_MAS1,r6
        mfspr   r6,SPRN_MAS2
        tlbwe
  
        xori    r6,r4,1
        tlbwe
  
        xori    r6,r4,1
-@@ -222,11 +225,11 @@
+@@ -222,11 +225,11 @@ skpinv:  addi    r6,r6,1                         /* Increment */
        lis     r6,0x1000               /* Set MAS0(TLBSEL) = TLB1(1), ESEL = 0 */
        mtspr   SPRN_MAS0,r6
        lis     r6,(MAS1_VALID|MAS1_IPROT)@h
        lis     r6,0x1000               /* Set MAS0(TLBSEL) = TLB1(1), ESEL = 0 */
        mtspr   SPRN_MAS0,r6
        lis     r6,(MAS1_VALID|MAS1_IPROT)@h
        rlwimi  r6,r7,0,20,31
        mtspr   SPRN_MAS2,r6
        li      r7,(MAS3_SX|MAS3_SW|MAS3_SR)
        rlwimi  r6,r7,0,20,31
        mtspr   SPRN_MAS2,r6
        li      r7,(MAS3_SX|MAS3_SW|MAS3_SR)
-@@ -234,6 +237,9 @@
+@@ -234,6 +237,9 @@ skpinv:    addi    r6,r6,1                         /* Increment */
        tlbwe
  
  /* 7. Jump to KERNELBASE mapping */
        tlbwe
  
  /* 7. Jump to KERNELBASE mapping */
  #include <linux/of_platform.h>
  #include <asm/ibmebus.h>
  #include <asm/abs_addr.h>
  #include <linux/of_platform.h>
  #include <asm/ibmebus.h>
  #include <asm/abs_addr.h>
-@@ -52,7 +53,7 @@
+@@ -52,7 +53,7 @@ static struct device ibmebus_bus_device 
  struct bus_type ibmebus_bus_type;
  
  /* These devices will automatically be added to the bus during init */
  struct bus_type ibmebus_bus_type;
  
  /* These devices will automatically be added to the bus during init */
        { .compatible = "IBM,lhca" },
        { .compatible = "IBM,lhea" },
        {},
        { .compatible = "IBM,lhca" },
        { .compatible = "IBM,lhea" },
        {},
-@@ -171,7 +172,7 @@
+@@ -171,7 +172,7 @@ static int ibmebus_create_devices(const 
  
        root = of_find_node_by_path("/");
  
  
        root = of_find_node_by_path("/");
  
                if (!of_match_node(matches, child))
                        continue;
  
                if (!of_match_node(matches, child))
                        continue;
  
-@@ -197,16 +198,13 @@
+@@ -197,16 +198,13 @@ int ibmebus_register_driver(struct of_pl
        /* If the driver uses devices that ibmebus doesn't know, add them */
        ibmebus_create_devices(drv->match_table);
  
        /* If the driver uses devices that ibmebus doesn't know, add them */
        ibmebus_create_devices(drv->match_table);
  
  
 --- a/arch/powerpc/kernel/iommu.c
 +++ b/arch/powerpc/kernel/iommu.c
  
 --- a/arch/powerpc/kernel/iommu.c
 +++ b/arch/powerpc/kernel/iommu.c
-@@ -532,16 +532,14 @@
+@@ -532,16 +532,14 @@ struct iommu_table *iommu_init_table(str
        return tbl;
  }
  
        return tbl;
  }
  
                return;
        }
  
                return;
        }
  
-@@ -550,7 +548,7 @@
+@@ -550,7 +548,7 @@ void iommu_free_table(struct device_node
        for (i = 0; i < (tbl->it_size/64); i++) {
                if (tbl->it_map[i] != 0) {
                        printk(KERN_WARNING "%s: Unexpected TCEs for %s\n",
        for (i = 0; i < (tbl->it_size/64); i++) {
                if (tbl->it_map[i] != 0) {
                        printk(KERN_WARNING "%s: Unexpected TCEs for %s\n",
        }
 --- a/arch/powerpc/kernel/isa-bridge.c
 +++ b/arch/powerpc/kernel/isa-bridge.c
        }
 --- a/arch/powerpc/kernel/isa-bridge.c
 +++ b/arch/powerpc/kernel/isa-bridge.c
-@@ -108,7 +108,7 @@
+@@ -108,7 +108,7 @@ static void __devinit pci_process_ISA_OF
        if (size > 0x10000)
                size = 0x10000;
  
        if (size > 0x10000)
                size = 0x10000;
  
               "mapping 64k\n");
  
        __ioremap_at(phb_io_base_phys, (void *)ISA_IO_BASE,
               "mapping 64k\n");
  
        __ioremap_at(phb_io_base_phys, (void *)ISA_IO_BASE,
-@@ -116,7 +116,7 @@
+@@ -116,7 +116,7 @@ static void __devinit pci_process_ISA_OF
        return;
  
  inval_range:
        return;
  
  inval_range:
               "mapping 64k\n");
        __ioremap_at(phb_io_base_phys, (void *)ISA_IO_BASE,
                     0x10000, _PAGE_NO_CACHE|_PAGE_GUARDED);
               "mapping 64k\n");
        __ioremap_at(phb_io_base_phys, (void *)ISA_IO_BASE,
                     0x10000, _PAGE_NO_CACHE|_PAGE_GUARDED);
-@@ -145,7 +145,7 @@
+@@ -145,7 +145,7 @@ void __init isa_bridge_find_early(struct
        for_each_node_by_type(np, "isa") {
                /* Look for our hose being a parent */
                for (parent = of_get_parent(np); parent;) {
        for_each_node_by_type(np, "isa") {
                /* Look for our hose being a parent */
                for (parent = of_get_parent(np); parent;) {
                        }
 --- a/arch/powerpc/kernel/legacy_serial.c
 +++ b/arch/powerpc/kernel/legacy_serial.c
                        }
 --- a/arch/powerpc/kernel/legacy_serial.c
 +++ b/arch/powerpc/kernel/legacy_serial.c
-@@ -307,7 +307,7 @@
+@@ -307,7 +307,7 @@ void __init find_legacy_serial_ports(voi
        }
  
        /* First fill our array with SOC ports */
        }
  
        /* First fill our array with SOC ports */
                struct device_node *soc = of_get_parent(np);
                if (soc && !strcmp(soc->type, "soc")) {
                        index = add_legacy_soc_port(np, np);
                struct device_node *soc = of_get_parent(np);
                if (soc && !strcmp(soc->type, "soc")) {
                        index = add_legacy_soc_port(np, np);
-@@ -318,7 +318,7 @@
+@@ -318,7 +318,7 @@ void __init find_legacy_serial_ports(voi
        }
  
        /* First fill our array with ISA ports */
        }
  
        /* First fill our array with ISA ports */
                struct device_node *isa = of_get_parent(np);
                if (isa && !strcmp(isa->name, "isa")) {
                        index = add_legacy_isa_port(np, isa);
                struct device_node *isa = of_get_parent(np);
                if (isa && !strcmp(isa->name, "isa")) {
                        index = add_legacy_isa_port(np, isa);
-@@ -329,7 +329,7 @@
+@@ -329,7 +329,7 @@ void __init find_legacy_serial_ports(voi
        }
  
        /* First fill our array with tsi-bridge ports */
        }
  
        /* First fill our array with tsi-bridge ports */
                struct device_node *tsi = of_get_parent(np);
                if (tsi && !strcmp(tsi->type, "tsi-bridge")) {
                        index = add_legacy_soc_port(np, np);
                struct device_node *tsi = of_get_parent(np);
                if (tsi && !strcmp(tsi->type, "tsi-bridge")) {
                        index = add_legacy_soc_port(np, np);
-@@ -340,7 +340,7 @@
+@@ -340,7 +340,7 @@ void __init find_legacy_serial_ports(voi
        }
  
        /* First fill our array with opb bus ports */
        }
  
        /* First fill our array with opb bus ports */
                struct device_node *opb = of_get_parent(np);
                if (opb && (!strcmp(opb->type, "opb") ||
                            of_device_is_compatible(opb, "ibm,opb"))) {
                struct device_node *opb = of_get_parent(np);
                if (opb && (!strcmp(opb->type, "opb") ||
                            of_device_is_compatible(opb, "ibm,opb"))) {
-@@ -474,7 +474,7 @@
+@@ -474,7 +474,7 @@ static int __init serial_dev_init(void)
  
        /*
         * Before we register the platfrom serial devices, we need
  
        /*
         * Before we register the platfrom serial devices, we need
  
  /*
   * Track sum of all purrs across all processors. This is used to further
  
  /*
   * Track sum of all purrs across all processors. This is used to further
-@@ -595,13 +594,6 @@
+@@ -595,13 +594,6 @@ int __init lparcfg_init(void)
        ent = create_proc_entry("ppc64/lparcfg", mode, NULL);
        if (ent) {
                ent->proc_fops = &lparcfg_fops;
        ent = create_proc_entry("ppc64/lparcfg", mode, NULL);
        if (ent) {
                ent->proc_fops = &lparcfg_fops;
        } else {
                printk(KERN_ERR "Failed to create ppc64/lparcfg\n");
                return -EIO;
        } else {
                printk(KERN_ERR "Failed to create ppc64/lparcfg\n");
                return -EIO;
-@@ -613,10 +605,8 @@
+@@ -613,10 +605,8 @@ int __init lparcfg_init(void)
  
  void __exit lparcfg_cleanup(void)
  {
  
  void __exit lparcfg_cleanup(void)
  {
  
        .text
  
  
        .text
  
-@@ -43,3 +48,71 @@
+@@ -43,3 +48,71 @@ _GLOBAL(add_reloc_offset)
        add     r3,r3,r5
        mtlr    r0
        blr
        add     r3,r3,r5
        mtlr    r0
        blr
 +      blr
 --- a/arch/powerpc/kernel/misc_32.S
 +++ b/arch/powerpc/kernel/misc_32.S
 +      blr
 --- a/arch/powerpc/kernel/misc_32.S
 +++ b/arch/powerpc/kernel/misc_32.S
-@@ -206,6 +206,45 @@
+@@ -206,6 +206,45 @@ _GLOBAL(_nmask_and_or_msr)
        isync
        blr                     /* Done */
  
        isync
        blr                     /* Done */
  
  
  /*
   * Flush MMU TLB
  
  /*
   * Flush MMU TLB
-@@ -793,13 +832,6 @@
+@@ -793,13 +832,6 @@ _GLOBAL(kernel_thread)
        addi    r1,r1,16
        blr
  
        addi    r1,r1,16
        blr
  
   */
 --- a/arch/powerpc/kernel/misc_64.S
 +++ b/arch/powerpc/kernel/misc_64.S
   */
 --- a/arch/powerpc/kernel/misc_64.S
 +++ b/arch/powerpc/kernel/misc_64.S
-@@ -518,13 +518,6 @@
+@@ -518,13 +518,6 @@ _GLOBAL(giveup_altivec)
  
  #endif /* CONFIG_ALTIVEC */
  
  
  #endif /* CONFIG_ALTIVEC */
  
  
  #include "setup.h"
  
  
  #include "setup.h"
  
-@@ -54,22 +55,60 @@
+@@ -54,22 +55,60 @@ void module_free(struct module *mod, voi
     addend) */
  static unsigned int count_relocs(const Elf32_Rela *rela, unsigned int num)
  {
     addend) */
  static unsigned int count_relocs(const Elf32_Rela *rela, unsigned int num)
  {
  }
  
  /* Get the potential trampolines size required of the init and
  }
  
  /* Get the potential trampolines size required of the init and
-@@ -100,6 +139,16 @@
+@@ -100,6 +139,16 @@ static unsigned long get_plt_size(const 
                        DEBUGP("Ptr: %p.  Number: %u\n",
                               (void *)hdr + sechdrs[i].sh_offset,
                               sechdrs[i].sh_size / sizeof(Elf32_Rela));
                        DEBUGP("Ptr: %p.  Number: %u\n",
                               (void *)hdr + sechdrs[i].sh_offset,
                               sechdrs[i].sh_size / sizeof(Elf32_Rela));
  
  #include "setup.h"
  
  
  #include "setup.h"
  
-@@ -81,25 +82,23 @@
+@@ -81,25 +82,23 @@ static struct ppc64_stub_entry ppc64_stu
     different addend) */
  static unsigned int count_relocs(const Elf64_Rela *rela, unsigned int num)
  {
     different addend) */
  static unsigned int count_relocs(const Elf64_Rela *rela, unsigned int num)
  {
  }
  
  void *module_alloc(unsigned long size)
  }
  
  void *module_alloc(unsigned long size)
-@@ -118,6 +117,44 @@
+@@ -118,6 +117,44 @@ void module_free(struct module *mod, voi
             table entries. */
  }
  
             table entries. */
  }
  
  /* Get size of potential trampolines required. */
  static unsigned long get_stubs_size(const Elf64_Ehdr *hdr,
                                    const Elf64_Shdr *sechdrs)
  /* Get size of potential trampolines required. */
  static unsigned long get_stubs_size(const Elf64_Ehdr *hdr,
                                    const Elf64_Shdr *sechdrs)
-@@ -133,6 +170,16 @@
+@@ -133,6 +170,16 @@ static unsigned long get_stubs_size(cons
                        DEBUGP("Ptr: %p.  Number: %lu\n",
                               (void *)sechdrs[i].sh_addr,
                               sechdrs[i].sh_size / sizeof(Elf64_Rela));
                        DEBUGP("Ptr: %p.  Number: %lu\n",
                               (void *)sechdrs[i].sh_addr,
                               sechdrs[i].sh_size / sizeof(Elf64_Rela));
                        relocs += count_relocs((void *)sechdrs[i].sh_addr,
                                               sechdrs[i].sh_size
                                               / sizeof(Elf64_Rela));
                        relocs += count_relocs((void *)sechdrs[i].sh_addr,
                                               sechdrs[i].sh_size
                                               / sizeof(Elf64_Rela));
-@@ -343,7 +390,7 @@
+@@ -343,7 +390,7 @@ int apply_relocate_add(Elf64_Shdr *sechd
                        /* Simply set it */
                        *(u32 *)location = value;
                        break;
                        /* Simply set it */
                        *(u32 *)location = value;
                        break;
                case R_PPC64_ADDR64:
                        /* Simply set it */
                        *(unsigned long *)location = value;
                case R_PPC64_ADDR64:
                        /* Simply set it */
                        *(unsigned long *)location = value;
-@@ -399,7 +446,7 @@
+@@ -399,7 +446,7 @@ int apply_relocate_add(Elf64_Shdr *sechd
                        }
  
                        /* Only replace bits 2 through 26 */
                        }
  
                        /* Only replace bits 2 through 26 */
        { .type = "soc", },
        { .compatible = "soc", },
        { .type = "spider", },
        { .type = "soc", },
        { .compatible = "soc", },
        { .type = "spider", },
-@@ -64,26 +65,6 @@
+@@ -64,26 +65,6 @@ static int __init of_bus_driver_init(voi
  
  postcore_initcall(of_bus_driver_init);
  
  
  postcore_initcall(of_bus_driver_init);
  
  struct of_device* of_platform_device_create(struct device_node *np,
                                            const char *bus_id,
                                            struct device *parent)
  struct of_device* of_platform_device_create(struct device_node *np,
                                            const char *bus_id,
                                            struct device *parent)
-@@ -120,15 +101,15 @@
+@@ -120,15 +101,15 @@ EXPORT_SYMBOL(of_platform_device_create)
   * @matches: match table, NULL to use the default, OF_NO_DEEP_PROBE to
   * disallow recursive creation of child busses
   */
   * @matches: match table, NULL to use the default, OF_NO_DEEP_PROBE to
   * disallow recursive creation of child busses
   */
                pr_debug("   create child: %s\n", child->full_name);
                dev = of_platform_device_create(child, NULL, parent);
                if (dev == NULL)
                pr_debug("   create child: %s\n", child->full_name);
                dev = of_platform_device_create(child, NULL, parent);
                if (dev == NULL)
-@@ -157,7 +138,7 @@
+@@ -157,7 +138,7 @@ static int of_platform_bus_create(struct
   */
  
  int of_platform_bus_probe(struct device_node *root,
   */
  
  int of_platform_bus_probe(struct device_node *root,
                          struct device *parent)
  {
        struct device_node *child;
                          struct device *parent)
  {
        struct device_node *child;
-@@ -190,7 +171,7 @@
+@@ -190,7 +171,7 @@ int of_platform_bus_probe(struct device_
                rc = of_platform_bus_create(root, matches, &dev->dev);
                goto bail;
        }
                rc = of_platform_bus_create(root, matches, &dev->dev);
                goto bail;
        }
        phb->is_dynamic = mem_init_done;
  #ifdef CONFIG_PPC64
        if (dev) {
        phb->is_dynamic = mem_init_done;
  #ifdef CONFIG_PPC64
        if (dev) {
-@@ -126,15 +120,10 @@
+@@ -126,15 +120,10 @@ int pcibios_vaddr_is_ioport(void __iomem
   */
  int pci_domain_nr(struct pci_bus *bus)
  {
   */
  int pci_domain_nr(struct pci_bus *bus)
  {
  EXPORT_SYMBOL(pci_domain_nr);
  
  #ifdef CONFIG_PPC_OF
  EXPORT_SYMBOL(pci_domain_nr);
  
  #ifdef CONFIG_PPC_OF
-@@ -153,7 +142,7 @@
+@@ -153,7 +142,7 @@ struct pci_controller* pci_find_hose_for
        while(node) {
                struct pci_controller *hose, *tmp;
                list_for_each_entry_safe(hose, tmp, &hose_list, list_node)
        while(node) {
                struct pci_controller *hose, *tmp;
                list_for_each_entry_safe(hose, tmp, &hose_list, list_node)
                                return hose;
                node = node->parent;
        }
                                return hose;
                node = node->parent;
        }
-@@ -201,6 +190,20 @@
+@@ -201,6 +190,20 @@ int pci_read_irq_line(struct pci_dev *pc
        struct of_irq oirq;
        unsigned int virq;
  
        struct of_irq oirq;
        unsigned int virq;
  
        DBG("Try to map irq for %s...\n", pci_name(pci_dev));
  
  #ifdef DEBUG
        DBG("Try to map irq for %s...\n", pci_name(pci_dev));
  
  #ifdef DEBUG
-@@ -222,10 +225,11 @@
+@@ -222,10 +225,11 @@ int pci_read_irq_line(struct pci_dev *pc
                if (pin == 0)
                        return -1;
                if (pci_read_config_byte(pci_dev, PCI_INTERRUPT_LINE, &line) ||
                if (pin == 0)
                        return -1;
                if (pci_read_config_byte(pci_dev, PCI_INTERRUPT_LINE, &line) ||
  
                virq = irq_create_mapping(NULL, line);
                if (virq != NO_IRQ)
  
                virq = irq_create_mapping(NULL, line);
                if (virq != NO_IRQ)
-@@ -475,3 +479,717 @@
+@@ -475,3 +479,717 @@ void pci_resource_to_user(const struct p
        *start = rsrc->start - offset;
        *end = rsrc->end - offset;
  }
        *start = rsrc->start - offset;
        *end = rsrc->end - offset;
  }
  static void fixup_cpc710_pci64(struct pci_dev* dev);
  #ifdef CONFIG_PPC_OF
  static u8* pci_to_OF_bus_map;
  static void fixup_cpc710_pci64(struct pci_dev* dev);
  #ifdef CONFIG_PPC_OF
  static u8* pci_to_OF_bus_map;
-@@ -53,7 +47,7 @@
+@@ -53,7 +47,7 @@ static u8* pci_to_OF_bus_map;
  /* By default, we don't re-assign bus numbers. We do this only on
   * some pmacs
   */
  /* By default, we don't re-assign bus numbers. We do this only on
   * some pmacs
   */
  
  LIST_HEAD(hose_list);
  
  
  LIST_HEAD(hose_list);
  
-@@ -100,505 +94,6 @@
+@@ -100,505 +94,6 @@ fixup_cpc710_pci64(struct pci_dev* dev)
  }
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_IBM,   PCI_DEVICE_ID_IBM_CPC710_PCI64, fixup_cpc710_pci64);
  
  }
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_IBM,   PCI_DEVICE_ID_IBM_CPC710_PCI64, fixup_cpc710_pci64);
  
  #ifdef CONFIG_PPC_OF
  /*
   * Functions below are used on OpenFirmware machines.
  #ifdef CONFIG_PPC_OF
  /*
   * Functions below are used on OpenFirmware machines.
-@@ -619,7 +114,7 @@
+@@ -619,7 +114,7 @@ make_one_node_map(struct device_node* no
        } else
                pci_to_OF_bus_map[pci_bus] = bus_range[0];
  
        } else
                pci_to_OF_bus_map[pci_bus] = bus_range[0];
  
                struct pci_dev* dev;
                const unsigned int *class_code, *reg;
        
                struct pci_dev* dev;
                const unsigned int *class_code, *reg;
        
-@@ -662,8 +157,8 @@
+@@ -662,8 +157,8 @@ pcibios_make_OF_bus_map(void)
  
        /* For each hose, we begin searching bridges */
        list_for_each_entry_safe(hose, tmp, &hose_list, list_node) {
  
        /* For each hose, we begin searching bridges */
        list_for_each_entry_safe(hose, tmp, &hose_list, list_node) {
                if (!node)
                        continue;
                make_one_node_map(node, hose->first_busno);
                if (!node)
                        continue;
                make_one_node_map(node, hose->first_busno);
-@@ -688,15 +183,18 @@
+@@ -688,15 +183,18 @@ pcibios_make_OF_bus_map(void)
  typedef int (*pci_OF_scan_iterator)(struct device_node* node, void* data);
  
  static struct device_node*
  typedef int (*pci_OF_scan_iterator)(struct device_node* node, void* data);
  
  static struct device_node*
  
                /* For PCI<->PCI bridges or CardBus bridges, we go down
                 * Note: some OFs create a parent node "multifunc-device" as
  
                /* For PCI<->PCI bridges or CardBus bridges, we go down
                 * Note: some OFs create a parent node "multifunc-device" as
-@@ -708,9 +206,11 @@
+@@ -708,9 +206,11 @@ scan_OF_pci_childs(struct device_node* n
                        (*class_code >> 8) != PCI_CLASS_BRIDGE_CARDBUS)) &&
                        strcmp(node->name, "multifunc-device"))
                        continue;
                        (*class_code >> 8) != PCI_CLASS_BRIDGE_CARDBUS)) &&
                        strcmp(node->name, "multifunc-device"))
                        continue;
        }
        return NULL;
  }
        }
        return NULL;
  }
-@@ -718,11 +218,11 @@
+@@ -718,11 +218,11 @@ scan_OF_pci_childs(struct device_node* n
  static struct device_node *scan_OF_for_pci_dev(struct device_node *parent,
                                               unsigned int devfn)
  {
  static struct device_node *scan_OF_for_pci_dev(struct device_node *parent,
                                               unsigned int devfn)
  {
                reg = of_get_property(np, "reg", &psize);
                if (reg == NULL || psize < 4)
                        continue;
                reg = of_get_property(np, "reg", &psize);
                if (reg == NULL || psize < 4)
                        continue;
-@@ -742,7 +242,7 @@
+@@ -742,7 +242,7 @@ static struct device_node *scan_OF_for_p
                struct pci_controller *hose = pci_bus_to_host(bus);
                if (hose == NULL)
                        return NULL;
                struct pci_controller *hose = pci_bus_to_host(bus);
                if (hose == NULL)
                        return NULL;
        }
  
        /* not a root bus, we need to get our parent */
        }
  
        /* not a root bus, we need to get our parent */
-@@ -812,9 +312,9 @@
+@@ -812,9 +312,9 @@ pci_device_from_OF_node(struct device_no
                return -ENODEV;
        /* Make sure it's really a PCI device */
        hose = pci_find_hose_for_OF_device(node);
                return -ENODEV;
        /* Make sure it's really a PCI device */
        hose = pci_find_hose_for_OF_device(node);
                        find_OF_pci_device_filter, (void *)node))
                return -ENODEV;
        reg = of_get_property(node, "reg", NULL);
                        find_OF_pci_device_filter, (void *)node))
                return -ENODEV;
        reg = of_get_property(node, "reg", NULL);
-@@ -843,120 +343,6 @@
+@@ -843,120 +343,6 @@ pci_device_from_OF_node(struct device_no
  }
  EXPORT_SYMBOL(pci_device_from_OF_node);
  
  }
  EXPORT_SYMBOL(pci_device_from_OF_node);
  
  /* We create the "pci-OF-bus-map" property now so it appears in the
   * /proc device tree
   */
  /* We create the "pci-OF-bus-map" property now so it appears in the
   * /proc device tree
   */
-@@ -986,219 +372,7 @@
+@@ -986,219 +372,7 @@ void pcibios_make_OF_bus_map(void)
  }
  #endif /* CONFIG_PPC_OF */
  
  }
  #endif /* CONFIG_PPC_OF */
  
  {
        struct pci_controller *hose, *tmp;
        struct pci_bus *bus;
  {
        struct pci_controller *hose, *tmp;
        struct pci_bus *bus;
-@@ -1206,6 +380,9 @@
+@@ -1206,6 +380,9 @@ pcibios_init(void)
  
        printk(KERN_INFO "PCI: Probing PCI hardware\n");
  
  
        printk(KERN_INFO "PCI: Probing PCI hardware\n");
  
        /* Scan all of the recorded PCI controllers.  */
        list_for_each_entry_safe(hose, tmp, &hose_list, list_node) {
                if (pci_assign_all_buses)
        /* Scan all of the recorded PCI controllers.  */
        list_for_each_entry_safe(hose, tmp, &hose_list, list_node) {
                if (pci_assign_all_buses)
-@@ -1213,9 +390,10 @@
+@@ -1213,9 +390,10 @@ pcibios_init(void)
                hose->last_busno = 0xff;
                bus = pci_scan_bus_parented(hose->parent, hose->first_busno,
                                            hose->ops, hose);
                hose->last_busno = 0xff;
                bus = pci_scan_bus_parented(hose->parent, hose->first_busno,
                                            hose->ops, hose);
                if (pci_assign_all_buses || next_busno <= hose->last_busno)
                        next_busno = hose->last_busno + pcibios_assign_bus_offset;
        }
                if (pci_assign_all_buses || next_busno <= hose->last_busno)
                        next_busno = hose->last_busno + pcibios_assign_bus_offset;
        }
-@@ -1228,18 +406,8 @@
+@@ -1228,18 +406,8 @@ pcibios_init(void)
        if (pci_assign_all_buses && have_of)
                pcibios_make_OF_bus_map();
  
        if (pci_assign_all_buses && have_of)
                pcibios_make_OF_bus_map();
  
  
        /* Call machine dependent post-init code */
        if (ppc_md.pcibios_after_init)
  
        /* Call machine dependent post-init code */
        if (ppc_md.pcibios_after_init)
-@@ -1250,14 +418,14 @@
+@@ -1250,14 +418,14 @@ pcibios_init(void)
  
  subsys_initcall(pcibios_init);
  
  
  subsys_initcall(pcibios_init);
  
        io_offset = (unsigned long)hose->io_base_virt - isa_io_base;
        if (bus->parent == NULL) {
                /* This is a host bridge - fill in its resources */
        io_offset = (unsigned long)hose->io_base_virt - isa_io_base;
        if (bus->parent == NULL) {
                /* This is a host bridge - fill in its resources */
-@@ -1272,8 +440,8 @@
+@@ -1272,8 +440,8 @@ void pcibios_fixup_bus(struct pci_bus *b
                        res->end = IO_SPACE_LIMIT;
                        res->flags = IORESOURCE_IO;
                }
                        res->end = IO_SPACE_LIMIT;
                        res->flags = IORESOURCE_IO;
                }
  
                for (i = 0; i < 3; ++i) {
                        res = &hose->mem_resources[i];
  
                for (i = 0; i < 3; ++i) {
                        res = &hose->mem_resources[i];
-@@ -1288,35 +456,6 @@
+@@ -1288,35 +456,6 @@ void pcibios_fixup_bus(struct pci_bus *b
                        }
                        bus->resource[i+1] = res;
                }
                        }
                        bus->resource[i+1] = res;
                }
        }
  }
  
        }
  }
  
-@@ -1328,37 +467,6 @@
+@@ -1328,37 +467,6 @@ pcibios_update_irq(struct pci_dev *dev, 
        /* XXX FIXME - update OF device tree node interrupt property */
  }
  
        /* XXX FIXME - update OF device tree node interrupt property */
  }
  
  static struct pci_controller*
  pci_bus_to_hose(int bus)
  {
  static struct pci_controller*
  pci_bus_to_hose(int bus)
  {
-@@ -1381,17 +489,6 @@
+@@ -1381,17 +489,6 @@ long sys_pciconfig_iobase(long which, un
        struct pci_controller* hose;
        long result = -EOPNOTSUPP;
  
        struct pci_controller* hose;
        long result = -EOPNOTSUPP;
  
  
  /* pci_io_base -- the base address from which io bars are offsets.
   * This is the lowest I/O base address (so bar values are always positive),
  
  /* pci_io_base -- the base address from which io bars are offsets.
   * This is the lowest I/O base address (so bar values are always positive),
-@@ -70,139 +65,31 @@
+@@ -70,139 +65,31 @@ struct dma_mapping_ops *get_pci_dma_ops(
  }
  EXPORT_SYMBOL(get_pci_dma_ops);
  
  }
  EXPORT_SYMBOL(get_pci_dma_ops);
  
  
  static u32 get_int_prop(struct device_node *np, const char *name, u32 def)
  {
  
  static u32 get_int_prop(struct device_node *np, const char *name, u32 def)
  {
-@@ -270,7 +157,6 @@
+@@ -270,7 +157,6 @@ static void pci_parse_of_addrs(struct de
                res->end = base + size - 1;
                res->flags = flags;
                res->name = pci_name(dev);
                res->end = base + size - 1;
                res->flags = flags;
                res->name = pci_name(dev);
        }
  }
  
        }
  }
  
-@@ -339,16 +225,17 @@
+@@ -339,16 +225,17 @@ struct pci_dev *of_create_pci_dev(struct
  EXPORT_SYMBOL(of_create_pci_dev);
  
  void __devinit of_scan_bus(struct device_node *node,
  EXPORT_SYMBOL(of_create_pci_dev);
  
  void __devinit of_scan_bus(struct device_node *node,
                DBG("  * %s\n", child->full_name);
                reg = of_get_property(child, "reg", &reglen);
                if (reg == NULL || reglen < 20)
                DBG("  * %s\n", child->full_name);
                reg = of_get_property(child, "reg", &reglen);
                if (reg == NULL || reglen < 20)
-@@ -359,19 +246,26 @@
+@@ -359,19 +246,26 @@ void __devinit of_scan_bus(struct device
                dev = of_create_pci_dev(child, bus, devfn);
                if (!dev)
                        continue;
                dev = of_create_pci_dev(child, bus, devfn);
                if (!dev)
                        continue;
  {
        struct pci_bus *bus;
        const u32 *busrange, *ranges;
  {
        struct pci_bus *bus;
        const u32 *busrange, *ranges;
-@@ -441,7 +335,6 @@
+@@ -441,7 +335,6 @@ void __devinit of_scan_pci_bridge(struct
                res->start = of_read_number(&ranges[1], 2);
                res->end = res->start + size - 1;
                res->flags = flags;
                res->start = of_read_number(&ranges[1], 2);
                res->end = res->start + size - 1;
                res->flags = flags;
        }
        sprintf(bus->name, "PCI Bus %04x:%02x", pci_domain_nr(bus),
                bus->number);
        }
        sprintf(bus->name, "PCI Bus %04x:%02x", pci_domain_nr(bus),
                bus->number);
-@@ -462,12 +355,12 @@
+@@ -462,12 +355,12 @@ EXPORT_SYMBOL(of_scan_pci_bridge);
  void __devinit scan_phb(struct pci_controller *hose)
  {
        struct pci_bus *bus;
  void __devinit scan_phb(struct pci_controller *hose)
  {
        struct pci_bus *bus;
        bus = pci_create_bus(hose->parent, hose->first_busno, hose->ops, node);
        if (bus == NULL) {
                printk(KERN_ERR "Failed to create bus for PCI domain %04x\n",
        bus = pci_create_bus(hose->parent, hose->first_busno, hose->ops, node);
        if (bus == NULL) {
                printk(KERN_ERR "Failed to create bus for PCI domain %04x\n",
-@@ -477,27 +370,27 @@
+@@ -477,27 +370,27 @@ void __devinit scan_phb(struct pci_contr
        bus->secondary = hose->first_busno;
        hose->bus = bus;
  
        bus->secondary = hose->first_busno;
        hose->bus = bus;
  
        if (node && ppc_md.pci_probe_mode)
                mode = ppc_md.pci_probe_mode(bus);
        DBG("    probe mode: %d\n", mode);
        if (node && ppc_md.pci_probe_mode)
                mode = ppc_md.pci_probe_mode(bus);
        DBG("    probe mode: %d\n", mode);
-@@ -514,15 +407,15 @@
+@@ -514,15 +407,15 @@ static int __init pcibios_init(void)
  {
        struct pci_controller *hose, *tmp;
  
  {
        struct pci_controller *hose, *tmp;
  
  
        /* Scan all of the recorded PCI controllers.  */
        list_for_each_entry_safe(hose, tmp, &hose_list, list_node) {
  
        /* Scan all of the recorded PCI controllers.  */
        list_for_each_entry_safe(hose, tmp, &hose_list, list_node) {
-@@ -530,19 +423,8 @@
+@@ -530,19 +423,8 @@ static int __init pcibios_init(void)
                pci_bus_add_devices(hose->bus);
        }
  
                pci_bus_add_devices(hose->bus);
        }
  
  
        printk(KERN_DEBUG "PCI: Probing PCI hardware done\n");
  
  
        printk(KERN_DEBUG "PCI: Probing PCI hardware done\n");
  
-@@ -551,141 +433,6 @@
+@@ -551,141 +433,6 @@ static int __init pcibios_init(void)
  
  subsys_initcall(pcibios_init);
  
  
  subsys_initcall(pcibios_init);
  
  #ifdef CONFIG_HOTPLUG
  
  int pcibios_unmap_io_space(struct pci_bus *bus)
  #ifdef CONFIG_HOTPLUG
  
  int pcibios_unmap_io_space(struct pci_bus *bus)
-@@ -719,8 +466,7 @@
+@@ -719,8 +466,7 @@ int pcibios_unmap_io_space(struct pci_bu
        if (hose->io_base_alloc == 0)
                return 0;
  
        if (hose->io_base_alloc == 0)
                return 0;
  
        DBG("  alloc=0x%p\n", hose->io_base_alloc);
  
        /* This is a PHB, we fully unmap the IO area */
        DBG("  alloc=0x%p\n", hose->io_base_alloc);
  
        /* This is a PHB, we fully unmap the IO area */
-@@ -779,8 +525,7 @@
+@@ -779,8 +525,7 @@ int __devinit pcibios_map_io_space(struc
        hose->io_base_virt = (void __iomem *)(area->addr +
                                              hose->io_base_phys - phys_page);
  
        hose->io_base_virt = (void __iomem *)(area->addr +
                                              hose->io_base_phys - phys_page);
  
        DBG("  phys=0x%016lx, virt=0x%p (alloc=0x%p)\n",
            hose->io_base_phys, hose->io_base_virt, hose->io_base_alloc);
        DBG("  size=0x%016lx (alloc=0x%016lx)\n",
        DBG("  phys=0x%016lx, virt=0x%p (alloc=0x%p)\n",
            hose->io_base_phys, hose->io_base_virt, hose->io_base_alloc);
        DBG("  size=0x%016lx (alloc=0x%016lx)\n",
-@@ -803,51 +548,13 @@
+@@ -803,51 +548,13 @@ int __devinit pcibios_map_io_space(struc
  }
  EXPORT_SYMBOL_GPL(pcibios_map_io_space);
  
  }
  EXPORT_SYMBOL_GPL(pcibios_map_io_space);
  
            sd->of_node ? sd->of_node->full_name : "<none>");
  
        sd->dma_ops = pci_dma_ops;
            sd->of_node ? sd->of_node->full_name : "<none>");
  
        sd->dma_ops = pci_dma_ops;
-@@ -861,7 +568,7 @@
+@@ -861,7 +568,7 @@ void __devinit pcibios_setup_new_device(
  }
  EXPORT_SYMBOL(pcibios_setup_new_device);
  
  }
  EXPORT_SYMBOL(pcibios_setup_new_device);
  
  {
        struct pci_dev *dev;
  
  {
        struct pci_dev *dev;
  
-@@ -870,42 +577,7 @@
+@@ -870,42 +577,7 @@ static void __devinit do_bus_setup(struc
  
        list_for_each_entry(dev, &bus->devices, bus_list)
                pcibios_setup_new_device(dev);
  
        list_for_each_entry(dev, &bus->devices, bus_list)
                pcibios_setup_new_device(dev);
  {
 --- a/arch/powerpc/kernel/pci_dn.c
 +++ b/arch/powerpc/kernel/pci_dn.c
  {
 --- a/arch/powerpc/kernel/pci_dn.c
 +++ b/arch/powerpc/kernel/pci_dn.c
-@@ -56,11 +56,6 @@
+@@ -56,11 +56,6 @@ static void * __devinit update_dn_pci_in
                pdn->busno = (regs[0] >> 16) & 0xff;
                pdn->devfn = (regs[0] >> 8) & 0xff;
        }
                pdn->busno = (regs[0] >> 16) & 0xff;
                pdn->devfn = (regs[0] >> 8) & 0xff;
        }
  
        pdn->pci_ext_config_space = (type && *type == 1);
        return NULL;
  
        pdn->pci_ext_config_space = (type && *type == 1);
        return NULL;
-@@ -133,7 +128,7 @@
+@@ -133,7 +128,7 @@ void *traverse_pci_devices(struct device
   */
  void __devinit pci_devs_phb_init_dynamic(struct pci_controller *phb)
  {
   */
  void __devinit pci_devs_phb_init_dynamic(struct pci_controller *phb)
  {
        /* PHB nodes themselves must not match */
 --- a/arch/powerpc/kernel/ppc_ksyms.c
 +++ b/arch/powerpc/kernel/ppc_ksyms.c
        /* PHB nodes themselves must not match */
 --- a/arch/powerpc/kernel/ppc_ksyms.c
 +++ b/arch/powerpc/kernel/ppc_ksyms.c
-@@ -59,6 +59,7 @@
+@@ -59,6 +59,7 @@ extern void single_step_exception(struct
  extern int sys_sigreturn(struct pt_regs *regs);
  
  EXPORT_SYMBOL(clear_pages);
  extern int sys_sigreturn(struct pt_regs *regs);
  
  EXPORT_SYMBOL(clear_pages);
  EXPORT_SYMBOL(DMA_MODE_WRITE);
 --- a/arch/powerpc/kernel/prom.c
 +++ b/arch/powerpc/kernel/prom.c
  EXPORT_SYMBOL(DMA_MODE_WRITE);
 --- a/arch/powerpc/kernel/prom.c
 +++ b/arch/powerpc/kernel/prom.c
-@@ -583,6 +583,20 @@
+@@ -583,6 +583,20 @@ static void __init check_cpu_pa_features
                      ibm_pa_features, ARRAY_SIZE(ibm_pa_features));
  }
  
                      ibm_pa_features, ARRAY_SIZE(ibm_pa_features));
  }
  
  static struct feature_property {
        const char *name;
        u32 min_value;
  static struct feature_property {
        const char *name;
        u32 min_value;
-@@ -600,6 +614,29 @@
+@@ -600,6 +614,29 @@ static struct feature_property {
  #endif /* CONFIG_PPC64 */
  };
  
  #endif /* CONFIG_PPC64 */
  };
  
  static void __init check_cpu_feature_properties(unsigned long node)
  {
        unsigned long i;
  static void __init check_cpu_feature_properties(unsigned long node)
  {
        unsigned long i;
-@@ -697,22 +734,13 @@
+@@ -697,22 +734,13 @@ static int __init early_init_dt_scan_cpu
                prop = of_get_flat_dt_prop(node, "cpu-version", NULL);
                if (prop && (*prop & 0xff000000) == 0x0f000000)
                        identify_cpu(0, *prop);
                prop = of_get_flat_dt_prop(node, "cpu-version", NULL);
                if (prop && (*prop & 0xff000000) == 0x0f000000)
                        identify_cpu(0, *prop);
        if (nthreads > 1)
 --- a/arch/powerpc/kernel/prom_parse.c
 +++ b/arch/powerpc/kernel/prom_parse.c
        if (nthreads > 1)
 --- a/arch/powerpc/kernel/prom_parse.c
 +++ b/arch/powerpc/kernel/prom_parse.c
-@@ -273,7 +273,7 @@
+@@ -273,7 +273,7 @@ int of_irq_map_pci(struct pci_dev *pdev,
  #else
                        struct pci_controller *host;
                        host = pci_bus_to_host(pdev->bus);
  #else
                        struct pci_controller *host;
                        host = pci_bus_to_host(pdev->bus);
  #endif
                        /* No node for host bridge ? give up */
                        if (ppnode == NULL)
  #endif
                        /* No node for host bridge ? give up */
                        if (ppnode == NULL)
-@@ -419,7 +419,7 @@
+@@ -419,7 +419,7 @@ static struct of_bus *of_match_bus(struc
  
  static int of_translate_one(struct device_node *parent, struct of_bus *bus,
                            struct of_bus *pbus, u32 *addr,
  
  static int of_translate_one(struct device_node *parent, struct of_bus *bus,
                            struct of_bus *pbus, u32 *addr,
  {
        const u32 *ranges;
        unsigned int rlen;
  {
        const u32 *ranges;
        unsigned int rlen;
-@@ -438,7 +438,7 @@
+@@ -438,7 +438,7 @@ static int of_translate_one(struct devic
         * to translate addresses that aren't supposed to be translated in
         * the first place. --BenH.
         */
         * to translate addresses that aren't supposed to be translated in
         * the first place. --BenH.
         */
        if (ranges == NULL || rlen == 0) {
                offset = of_read_number(addr, na);
                memset(addr, 0, pna * 4);
        if (ranges == NULL || rlen == 0) {
                offset = of_read_number(addr, na);
                memset(addr, 0, pna * 4);
-@@ -481,7 +481,8 @@
+@@ -481,7 +481,8 @@ static int of_translate_one(struct devic
   * that can be mapped to a cpu physical address). This is not really specified
   * that way, but this is traditionally the way IBM at least do things
   */
   * that can be mapped to a cpu physical address). This is not really specified
   * that way, but this is traditionally the way IBM at least do things
   */
  {
        struct device_node *parent = NULL;
        struct of_bus *bus, *pbus;
  {
        struct device_node *parent = NULL;
        struct of_bus *bus, *pbus;
-@@ -540,7 +541,7 @@
+@@ -540,7 +541,7 @@ u64 of_translate_address(struct device_n
                    pbus->name, pna, pns, parent->full_name);
  
                /* Apply bus translation */
                    pbus->name, pna, pns, parent->full_name);
  
                /* Apply bus translation */
                        break;
  
                /* Complete the move up one level */
                        break;
  
                /* Complete the move up one level */
-@@ -556,8 +557,19 @@
+@@ -556,8 +557,19 @@ u64 of_translate_address(struct device_n
  
        return result;
  }
  
        return result;
  }
 +subsys_initcall(ppc_rio_init);
 --- a/arch/powerpc/kernel/rtas_pci.c
 +++ b/arch/powerpc/kernel/rtas_pci.c
 +subsys_initcall(ppc_rio_init);
 --- a/arch/powerpc/kernel/rtas_pci.c
 +++ b/arch/powerpc/kernel/rtas_pci.c
-@@ -260,7 +260,7 @@
+@@ -260,7 +260,7 @@ static int phb_set_bus_ranges(struct dev
  
  int __devinit rtas_setup_phb(struct pci_controller *phb)
  {
  
  int __devinit rtas_setup_phb(struct pci_controller *phb)
  {
  
        if (is_python(dev))
                python_countermeasures(dev);
  
        if (is_python(dev))
                python_countermeasures(dev);
-@@ -280,10 +280,7 @@
+@@ -280,10 +280,7 @@ void __init find_and_init_phbs(void)
        struct pci_controller *phb;
        struct device_node *root = of_find_node_by_path("/");
  
        struct pci_controller *phb;
        struct device_node *root = of_find_node_by_path("/");
  
                if (node->type == NULL || (strcmp(node->type, "pci") != 0 &&
                                           strcmp(node->type, "pciex") != 0))
                        continue;
                if (node->type == NULL || (strcmp(node->type, "pci") != 0 &&
                                           strcmp(node->type, "pciex") != 0))
                        continue;
-@@ -311,10 +308,12 @@
+@@ -311,10 +308,12 @@ void __init find_and_init_phbs(void)
                if (prop)
                        pci_probe_only = *prop;
  
                if (prop)
                        pci_probe_only = *prop;
  
  
  #include "setup.h"
  
  
  #include "setup.h"
  
-@@ -327,6 +329,31 @@
+@@ -327,6 +329,31 @@ void __init check_for_initrd(void)
  
  #ifdef CONFIG_SMP
  
  
  #ifdef CONFIG_SMP
  
  /**
   * setup_cpu_maps - initialize the following cpu maps:
   *                  cpu_possible_map
  /**
   * setup_cpu_maps - initialize the following cpu maps:
   *                  cpu_possible_map
-@@ -350,22 +377,32 @@
+@@ -350,22 +377,32 @@ void __init smp_setup_cpu_maps(void)
  {
        struct device_node *dn = NULL;
        int cpu = 0;
  {
        struct device_node *dn = NULL;
        int cpu = 0;
                        cpu_set(cpu, cpu_present_map);
                        set_hard_smp_processor_id(cpu, intserv[j]);
                        cpu_set(cpu, cpu_possible_map);
                        cpu_set(cpu, cpu_present_map);
                        set_hard_smp_processor_id(cpu, intserv[j]);
                        cpu_set(cpu, cpu_possible_map);
-@@ -373,6 +410,12 @@
+@@ -373,6 +410,12 @@ void __init smp_setup_cpu_maps(void)
                }
        }
  
                }
        }
  
  #ifdef CONFIG_PPC64
        /*
         * On pSeries LPAR, we need to know how many cpus
  #ifdef CONFIG_PPC64
        /*
         * On pSeries LPAR, we need to know how many cpus
-@@ -395,7 +438,7 @@
+@@ -395,7 +438,7 @@ void __init smp_setup_cpu_maps(void)
  
                /* Double maxcpus for processors which have SMT capability */
                if (cpu_has_feature(CPU_FTR_SMT))
  
                /* Double maxcpus for processors which have SMT capability */
                if (cpu_has_feature(CPU_FTR_SMT))
  
                if (maxcpus > NR_CPUS) {
                        printk(KERN_WARNING
  
                if (maxcpus > NR_CPUS) {
                        printk(KERN_WARNING
-@@ -412,9 +455,16 @@
+@@ -412,9 +455,16 @@ void __init smp_setup_cpu_maps(void)
        out:
                of_node_put(dn);
        }
        out:
                of_node_put(dn);
        }
  }
  
  /*
  }
  
  /*
-@@ -424,17 +474,19 @@
+@@ -424,17 +474,19 @@ void __init smp_setup_cpu_maps(void)
   */
  void __init smp_setup_cpu_sibling_map(void)
  {
   */
  void __init smp_setup_cpu_sibling_map(void)
  {
  #include <linux/tty.h>
 --- a/arch/powerpc/kernel/smp.c
 +++ b/arch/powerpc/kernel/smp.c
  #include <linux/tty.h>
 --- a/arch/powerpc/kernel/smp.c
 +++ b/arch/powerpc/kernel/smp.c
-@@ -76,6 +76,8 @@
+@@ -76,6 +76,8 @@ void smp_call_function_interrupt(void);
  
  int smt_enabled_at_boot = 1;
  
  
  int smt_enabled_at_boot = 1;
  
  static void (*crash_ipi_function_ptr)(struct pt_regs *) = NULL;
  
  #ifdef CONFIG_PPC64
  static void (*crash_ipi_function_ptr)(struct pt_regs *) = NULL;
  
  #ifdef CONFIG_PPC64
-@@ -181,12 +183,13 @@
+@@ -181,12 +183,13 @@ static struct call_data_struct {
   * <wait> If true, wait (atomically) until function has completed on other CPUs.
   * [RETURNS] 0 on success, else a negative status code. Does not return until
   * remote CPUs are nearly ready to execute <<func>> or are or have executed.
   * <wait> If true, wait (atomically) until function has completed on other CPUs.
   * [RETURNS] 0 on success, else a negative status code. Does not return until
   * remote CPUs are nearly ready to execute <<func>> or are or have executed.
  {
        struct call_data_struct data;
        int ret = -1, num_cpus;
  {
        struct call_data_struct data;
        int ret = -1, num_cpus;
-@@ -203,8 +206,6 @@
+@@ -203,8 +206,6 @@ int smp_call_function_map(void (*func) (
        if (wait)
                atomic_set(&data.finished, 0);
  
        if (wait)
                atomic_set(&data.finished, 0);
  
        /* remove 'self' from the map */
        if (cpu_isset(smp_processor_id(), map))
                cpu_clear(smp_processor_id(), map);
        /* remove 'self' from the map */
        if (cpu_isset(smp_processor_id(), map))
                cpu_clear(smp_processor_id(), map);
-@@ -231,7 +232,8 @@
+@@ -231,7 +232,8 @@ int smp_call_function_map(void (*func) (
                        printk("smp_call_function on cpu %d: other cpus not "
                                "responding (%d)\n", smp_processor_id(),
                                atomic_read(&data.started));
                        printk("smp_call_function on cpu %d: other cpus not "
                                "responding (%d)\n", smp_processor_id(),
                                atomic_read(&data.started));
                        goto out;
                }
        }
                        goto out;
                }
        }
-@@ -258,14 +260,18 @@
+@@ -258,14 +260,18 @@ int smp_call_function_map(void (*func) (
   out:
        call_data = NULL;
        HMT_medium();
   out:
        call_data = NULL;
        HMT_medium();
  }
  
  int smp_call_function(void (*func) (void *info), void *info, int nonatomic,
  }
  
  int smp_call_function(void (*func) (void *info), void *info, int nonatomic,
-@@ -278,8 +284,8 @@
+@@ -278,8 +284,8 @@ int smp_call_function(void (*func) (void
  }
  EXPORT_SYMBOL(smp_call_function);
  
  }
  EXPORT_SYMBOL(smp_call_function);
  
  {
        cpumask_t map = CPU_MASK_NONE;
        int ret = 0;
  {
        cpumask_t map = CPU_MASK_NONE;
        int ret = 0;
-@@ -291,9 +297,11 @@
+@@ -291,9 +297,11 @@ int smp_call_function_single(int cpu, vo
                return -EINVAL;
  
        cpu_set(cpu, map);
                return -EINVAL;
  
        cpu_set(cpu, map);
                local_irq_disable();
                func(info);
                local_irq_enable();
                local_irq_disable();
                func(info);
                local_irq_enable();
-@@ -305,7 +313,22 @@
+@@ -305,7 +313,22 @@ EXPORT_SYMBOL(smp_call_function_single);
  
  void smp_send_stop(void)
  {
  
  void smp_send_stop(void)
  {
 +      }' "$1"
 --- a/arch/powerpc/kernel/time.c
 +++ b/arch/powerpc/kernel/time.c
 +      }' "$1"
 --- a/arch/powerpc/kernel/time.c
 +++ b/arch/powerpc/kernel/time.c
-@@ -116,9 +116,12 @@
+@@ -116,9 +116,12 @@ static struct clock_event_device decreme
         .features       = CLOCK_EVT_FEAT_ONESHOT,
  };
  
         .features       = CLOCK_EVT_FEAT_ONESHOT,
  };
  
  
  #ifdef CONFIG_PPC_ISERIES
  static unsigned long __initdata iSeries_recal_titan;
  
  #ifdef CONFIG_PPC_ISERIES
  static unsigned long __initdata iSeries_recal_titan;
-@@ -216,7 +219,11 @@
+@@ -216,7 +219,11 @@ static u64 read_purr(void)
   */
  static u64 read_spurr(u64 purr)
  {
   */
  static u64 read_spurr(u64 purr)
  {
                return mfspr(SPRN_SPURR);
        return purr;
  }
                return mfspr(SPRN_SPURR);
        return purr;
  }
-@@ -227,29 +234,30 @@
+@@ -227,29 +234,30 @@ static u64 read_spurr(u64 purr)
   */
  void account_system_vtime(struct task_struct *tsk)
  {
   */
  void account_system_vtime(struct task_struct *tsk)
  {
        get_paca()->spurrdelta = deltascaled;
        local_irq_restore(flags);
  }
        get_paca()->spurrdelta = deltascaled;
        local_irq_restore(flags);
  }
-@@ -326,11 +334,9 @@
+@@ -326,11 +334,9 @@ void calculate_steal_time(void)
        s64 stolen;
        struct cpu_purr_data *pme;
  
        s64 stolen;
        struct cpu_purr_data *pme;
  
        tb = mftb();
        purr = mfspr(SPRN_PURR);
        stolen = (tb - pme->tb) - (purr - pme->purr);
        tb = mftb();
        purr = mfspr(SPRN_PURR);
        stolen = (tb - pme->tb) - (purr - pme->purr);
-@@ -353,7 +359,7 @@
+@@ -353,7 +359,7 @@ static void snapshot_purr(void)
        if (!cpu_has_feature(CPU_FTR_PURR))
                return;
        local_irq_save(flags);
        if (!cpu_has_feature(CPU_FTR_PURR))
                return;
        local_irq_save(flags);
        pme->tb = mftb();
        pme->purr = mfspr(SPRN_PURR);
        pme->initialized = 1;
        pme->tb = mftb();
        pme->purr = mfspr(SPRN_PURR);
        pme->initialized = 1;
-@@ -556,8 +562,8 @@
+@@ -556,8 +562,8 @@ void __init iSeries_time_init_early(void
  void timer_interrupt(struct pt_regs * regs)
  {
        struct pt_regs *old_regs;
  void timer_interrupt(struct pt_regs * regs)
  {
        struct pt_regs *old_regs;
        u64 now;
  
        /* Ensure a positive value is written to the decrementer, or else
        u64 now;
  
        /* Ensure a positive value is written to the decrementer, or else
-@@ -570,9 +576,9 @@
+@@ -570,9 +576,9 @@ void timer_interrupt(struct pt_regs * re
  #endif
  
        now = get_tb_or_rtc();
  #endif
  
        now = get_tb_or_rtc();
                if (now <= DECREMENTER_MAX)
                        set_dec((int)now);
                return;
                if (now <= DECREMENTER_MAX)
                        set_dec((int)now);
                return;
-@@ -623,6 +629,45 @@
+@@ -623,6 +629,45 @@ void wakeup_decrementer(void)
        set_dec(ticks);
  }
  
        set_dec(ticks);
  }
  
  #ifdef CONFIG_SMP
  void __init smp_space_timers(unsigned int max_cpus)
  {
  #ifdef CONFIG_SMP
  void __init smp_space_timers(unsigned int max_cpus)
  {
-@@ -811,7 +856,7 @@
+@@ -811,7 +856,7 @@ void __init clocksource_init(void)
  static int decrementer_set_next_event(unsigned long evt,
                                      struct clock_event_device *dev)
  {
  static int decrementer_set_next_event(unsigned long evt,
                                      struct clock_event_device *dev)
  {
        set_dec(evt);
        return 0;
  }
        set_dec(evt);
        return 0;
  }
-@@ -825,7 +870,7 @@
+@@ -825,7 +870,7 @@ static void decrementer_set_mode(enum cl
  
  static void register_decrementer_clockevent(int cpu)
  {
  
  static void register_decrementer_clockevent(int cpu)
  {
  
        *dec = decrementer_clockevent;
        dec->cpumask = cpumask_of_cpu(cpu);
  
        *dec = decrementer_clockevent;
        dec->cpumask = cpumask_of_cpu(cpu);
-@@ -836,7 +881,7 @@
+@@ -836,7 +881,7 @@ static void register_decrementer_clockev
        clockevents_register_device(dec);
  }
  
        clockevents_register_device(dec);
  }
  
  
 --- a/arch/powerpc/kernel/traps.c
 +++ b/arch/powerpc/kernel/traps.c
  
 --- a/arch/powerpc/kernel/traps.c
 +++ b/arch/powerpc/kernel/traps.c
-@@ -334,18 +334,25 @@
+@@ -334,18 +334,25 @@ static inline int check_io_access(struct
  #define clear_single_step(regs)       ((regs)->msr &= ~MSR_SE)
  #endif
  
  #define clear_single_step(regs)       ((regs)->msr &= ~MSR_SE)
  #endif
  
        printk("Machine check in kernel mode.\n");
        if (reason & ESR_IMCP){
                printk("Instruction Synchronous Machine Check exception\n");
        printk("Machine check in kernel mode.\n");
        if (reason & ESR_IMCP){
                printk("Instruction Synchronous Machine Check exception\n");
-@@ -375,7 +382,13 @@
+@@ -375,7 +382,13 @@ static int generic_machine_check_excepti
                /* Clear MCSR */
                mtspr(SPRN_MCSR, mcsr);
        }
                /* Clear MCSR */
                mtspr(SPRN_MCSR, mcsr);
        }
        printk("Machine check in kernel mode.\n");
        printk("Caused by (from MCSR=%lx): ", reason);
  
        printk("Machine check in kernel mode.\n");
        printk("Caused by (from MCSR=%lx): ", reason);
  
-@@ -403,7 +416,14 @@
+@@ -403,7 +416,14 @@ static int generic_machine_check_excepti
                printk("Bus - Instruction Parity Error\n");
        if (reason & MCSR_BUS_RPERR)
                printk("Bus - Read Parity Error\n");
                printk("Bus - Instruction Parity Error\n");
        if (reason & MCSR_BUS_RPERR)
                printk("Bus - Read Parity Error\n");
        printk("Machine check in kernel mode.\n");
        printk("Caused by (from MCSR=%lx): ", reason);
  
        printk("Machine check in kernel mode.\n");
        printk("Caused by (from MCSR=%lx): ", reason);
  
-@@ -421,7 +441,14 @@
+@@ -421,7 +441,14 @@ static int generic_machine_check_excepti
                printk("Bus - Read Bus Error on data load\n");
        if (reason & MCSR_BUS_WRERR)
                printk("Bus - Write Bus Error on buffered store or cache line push\n");
                printk("Bus - Read Bus Error on data load\n");
        if (reason & MCSR_BUS_WRERR)
                printk("Bus - Write Bus Error on buffered store or cache line push\n");
        printk("Machine check in kernel mode.\n");
        printk("Caused by (from SRR1=%lx): ", reason);
        switch (reason & 0x601F0000) {
        printk("Machine check in kernel mode.\n");
        printk("Caused by (from SRR1=%lx): ", reason);
        switch (reason & 0x601F0000) {
-@@ -451,22 +478,26 @@
+@@ -451,22 +478,26 @@ static int generic_machine_check_excepti
        default:
                printk("Unknown values in msr\n");
        }
        default:
                printk("Unknown values in msr\n");
        }
                return;
  
        if (user_mode(regs)) {
                return;
  
        if (user_mode(regs)) {
-@@ -476,7 +507,12 @@
+@@ -476,7 +507,12 @@ void machine_check_exception(struct pt_r
        }
  
  #if defined(CONFIG_8xx) && defined(CONFIG_PCI)
        }
  
  #if defined(CONFIG_8xx) && defined(CONFIG_PCI)
        bad_page_fault(regs, regs->dar, SIGBUS);
        return;
  #endif
        bad_page_fault(regs, regs->dar, SIGBUS);
        return;
  #endif
-@@ -622,6 +658,9 @@
+@@ -622,6 +658,9 @@ static void parse_fpe(struct pt_regs *re
  #define INST_POPCNTB          0x7c0000f4
  #define INST_POPCNTB_MASK     0xfc0007fe
  
  #define INST_POPCNTB          0x7c0000f4
  #define INST_POPCNTB_MASK     0xfc0007fe
  
  static int emulate_string_inst(struct pt_regs *regs, u32 instword)
  {
        u8 rT = (instword >> 21) & 0x1f;
  static int emulate_string_inst(struct pt_regs *regs, u32 instword)
  {
        u8 rT = (instword >> 21) & 0x1f;
-@@ -707,6 +746,23 @@
+@@ -707,6 +746,23 @@ static int emulate_popcntb_inst(struct p
        return 0;
  }
  
        return 0;
  }
  
  static int emulate_instruction(struct pt_regs *regs)
  {
        u32 instword;
  static int emulate_instruction(struct pt_regs *regs)
  {
        u32 instword;
-@@ -749,6 +805,11 @@
+@@ -749,6 +805,11 @@ static int emulate_instruction(struct pt
                return emulate_popcntb_inst(regs, instword);
        }
  
                return emulate_popcntb_inst(regs, instword);
        }
  
  
 --- a/arch/powerpc/kernel/udbg.c
 +++ b/arch/powerpc/kernel/udbg.c
  
 --- a/arch/powerpc/kernel/udbg.c
 +++ b/arch/powerpc/kernel/udbg.c
-@@ -54,9 +54,16 @@
+@@ -54,9 +54,16 @@ void __init udbg_early_init(void)
  #elif defined(CONFIG_PPC_EARLY_DEBUG_44x)
        /* PPC44x debug */
        udbg_init_44x_as1();
  #elif defined(CONFIG_PPC_EARLY_DEBUG_44x)
        /* PPC44x debug */
        udbg_init_44x_as1();
  /* udbg library, used by xmon et al */
 --- a/arch/powerpc/kernel/udbg_16550.c
 +++ b/arch/powerpc/kernel/udbg_16550.c
  /* udbg library, used by xmon et al */
 --- a/arch/powerpc/kernel/udbg_16550.c
 +++ b/arch/powerpc/kernel/udbg_16550.c
-@@ -46,7 +46,7 @@
+@@ -46,7 +46,7 @@ struct NS16550 {
  
  #define LCR_DLAB 0x80
  
  
  #define LCR_DLAB 0x80
  
  
  static void udbg_550_putc(char c)
  {
  
  static void udbg_550_putc(char c)
  {
-@@ -117,7 +117,7 @@
+@@ -117,7 +117,7 @@ unsigned int udbg_probe_uart_speed(void 
  {
        unsigned int dll, dlm, divisor, prescaler, speed;
        u8 old_lcr;
  {
        unsigned int dll, dlm, divisor, prescaler, speed;
        u8 old_lcr;
  
        old_lcr = in_8(&port->lcr);
  
  
        old_lcr = in_8(&port->lcr);
  
-@@ -162,7 +162,7 @@
+@@ -162,7 +162,7 @@ void udbg_maple_real_putc(char c)
  
  void __init udbg_init_maple_realmode(void)
  {
  
  void __init udbg_init_maple_realmode(void)
  {
  
        udbg_putc = udbg_maple_real_putc;
        udbg_getc = NULL;
  
        udbg_putc = udbg_maple_real_putc;
        udbg_getc = NULL;
-@@ -184,7 +184,7 @@
+@@ -184,7 +184,7 @@ void udbg_pas_real_putc(char c)
  
  void udbg_init_pas_realmode(void)
  {
  
  void udbg_init_pas_realmode(void)
  {
  
        udbg_putc = udbg_pas_real_putc;
        udbg_getc = NULL;
  
        udbg_putc = udbg_pas_real_putc;
        udbg_getc = NULL;
-@@ -219,9 +219,42 @@
+@@ -219,9 +219,42 @@ static int udbg_44x_as1_getc(void)
  void __init udbg_init_44x_as1(void)
  {
        udbg_comport =
  void __init udbg_init_44x_as1(void)
  {
        udbg_comport =
  #ifndef __FP_FRAC_ADDI_4
 --- a/arch/powerpc/mm/fault.c
 +++ b/arch/powerpc/mm/fault.c
  #ifndef __FP_FRAC_ADDI_4
 --- a/arch/powerpc/mm/fault.c
 +++ b/arch/powerpc/mm/fault.c
-@@ -167,10 +167,8 @@
+@@ -167,10 +167,8 @@ int __kprobes do_page_fault(struct pt_re
        if (notify_page_fault(regs))
                return 0;
  
        if (notify_page_fault(regs))
                return 0;
  
  
        /* On a kernel SLB miss we can only check for a valid exception entry */
        if (!user_mode(regs) && (address >= TASK_SIZE))
  
        /* On a kernel SLB miss we can only check for a valid exception entry */
        if (!user_mode(regs) && (address >= TASK_SIZE))
-@@ -189,7 +187,7 @@
+@@ -189,7 +187,7 @@ int __kprobes do_page_fault(struct pt_re
                        return SIGSEGV;
                /* in_atomic() in user mode is really bad,
                   as is current->mm == NULL. */
                        return SIGSEGV;
                /* in_atomic() in user mode is really bad,
                   as is current->mm == NULL. */
                       regs->nip, regs->msr);
 --- a/arch/powerpc/mm/fsl_booke_mmu.c
 +++ b/arch/powerpc/mm/fsl_booke_mmu.c
                       regs->nip, regs->msr);
 --- a/arch/powerpc/mm/fsl_booke_mmu.c
 +++ b/arch/powerpc/mm/fsl_booke_mmu.c
-@@ -165,15 +165,15 @@
+@@ -165,15 +165,15 @@ void invalidate_tlbcam_entry(int index)
  void __init cam_mapin_ram(unsigned long cam0, unsigned long cam1,
                unsigned long cam2)
  {
  void __init cam_mapin_ram(unsigned long cam0, unsigned long cam1,
                unsigned long cam2)
  {
  
 --- a/arch/powerpc/mm/hash_utils_64.c
 +++ b/arch/powerpc/mm/hash_utils_64.c
  
 --- a/arch/powerpc/mm/hash_utils_64.c
 +++ b/arch/powerpc/mm/hash_utils_64.c
-@@ -96,6 +96,7 @@
+@@ -96,6 +96,7 @@ int mmu_vmalloc_psize = MMU_PAGE_4K;
  int mmu_io_psize = MMU_PAGE_4K;
  int mmu_kernel_ssize = MMU_SEGSIZE_256M;
  int mmu_highuser_ssize = MMU_SEGSIZE_256M;
  int mmu_io_psize = MMU_PAGE_4K;
  int mmu_kernel_ssize = MMU_SEGSIZE_256M;
  int mmu_highuser_ssize = MMU_SEGSIZE_256M;
  #ifdef CONFIG_HUGETLB_PAGE
  int mmu_huge_psize = MMU_PAGE_16M;
  unsigned int HPAGE_SHIFT;
  #ifdef CONFIG_HUGETLB_PAGE
  int mmu_huge_psize = MMU_PAGE_16M;
  unsigned int HPAGE_SHIFT;
-@@ -368,18 +369,11 @@
+@@ -368,18 +369,11 @@ static void __init htab_init_page_sizes(
         * on what is available
         */
        if (mmu_psize_defs[MMU_PAGE_16M].shift)
         * on what is available
         */
        if (mmu_psize_defs[MMU_PAGE_16M].shift)
  #define HUGEPD_SIZE           (1UL << HUGEPD_SHIFT)
  #define HUGEPD_MASK           (~(HUGEPD_SIZE-1))
  
  #define HUGEPD_SIZE           (1UL << HUGEPD_SHIFT)
  #define HUGEPD_MASK           (~(HUGEPD_SIZE-1))
  
-@@ -82,11 +81,35 @@
+@@ -82,11 +81,35 @@ static int __hugepte_alloc(struct mm_str
        return 0;
  }
  
        return 0;
  }
  
  
        BUG_ON(get_slice_psize(mm, addr) != mmu_huge_psize);
  
  
        BUG_ON(get_slice_psize(mm, addr) != mmu_huge_psize);
  
-@@ -96,14 +119,9 @@
+@@ -96,14 +119,9 @@ pte_t *huge_pte_offset(struct mm_struct 
        if (!pgd_none(*pg)) {
                pu = pud_offset(pg, addr);
                if (!pud_none(*pu)) {
        if (!pgd_none(*pg)) {
                pu = pud_offset(pg, addr);
                if (!pud_none(*pu)) {
                }
        }
  
                }
        }
  
-@@ -114,6 +132,7 @@
+@@ -114,6 +132,7 @@ pte_t *huge_pte_alloc(struct mm_struct *
  {
        pgd_t *pg;
        pud_t *pu;
  {
        pgd_t *pg;
        pud_t *pu;
        hugepd_t *hpdp = NULL;
  
        BUG_ON(get_slice_psize(mm, addr) != mmu_huge_psize);
        hugepd_t *hpdp = NULL;
  
        BUG_ON(get_slice_psize(mm, addr) != mmu_huge_psize);
-@@ -124,14 +143,9 @@
+@@ -124,14 +143,9 @@ pte_t *huge_pte_alloc(struct mm_struct *
        pu = pud_alloc(mm, pg, addr);
  
        if (pu) {
        pu = pud_alloc(mm, pg, addr);
  
        if (pu) {
        }
  
        if (! hpdp)
        }
  
        if (! hpdp)
-@@ -158,7 +172,6 @@
+@@ -158,7 +172,6 @@ static void free_hugepte_range(struct mm
                                                 PGF_CACHENUM_MASK));
  }
  
                                                 PGF_CACHENUM_MASK));
  }
  
  static void hugetlb_free_pmd_range(struct mmu_gather *tlb, pud_t *pud,
                                   unsigned long addr, unsigned long end,
                                   unsigned long floor, unsigned long ceiling)
  static void hugetlb_free_pmd_range(struct mmu_gather *tlb, pud_t *pud,
                                   unsigned long addr, unsigned long end,
                                   unsigned long floor, unsigned long ceiling)
-@@ -191,7 +204,6 @@
+@@ -191,7 +204,6 @@ static void hugetlb_free_pmd_range(struc
        pud_clear(pud);
        pmd_free_tlb(tlb, pmd);
  }
        pud_clear(pud);
        pmd_free_tlb(tlb, pmd);
  }
  
  static void hugetlb_free_pud_range(struct mmu_gather *tlb, pgd_t *pgd,
                                   unsigned long addr, unsigned long end,
  
  static void hugetlb_free_pud_range(struct mmu_gather *tlb, pgd_t *pgd,
                                   unsigned long addr, unsigned long end,
-@@ -210,9 +222,15 @@
+@@ -210,9 +222,15 @@ static void hugetlb_free_pud_range(struc
                        continue;
                hugetlb_free_pmd_range(tlb, pud, addr, next, floor, ceiling);
  #else
                        continue;
                hugetlb_free_pmd_range(tlb, pud, addr, next, floor, ceiling);
  #else
  #endif
        } while (pud++, addr = next, addr != end);
  
  #endif
        } while (pud++, addr = next, addr != end);
  
-@@ -526,6 +544,57 @@
+@@ -526,6 +544,57 @@ repeat:
        return err;
  }
  
        return err;
  }
  
        memset(addr, 0, kmem_cache_size(cache));
 --- a/arch/powerpc/mm/lmb.c
 +++ b/arch/powerpc/mm/lmb.c
        memset(addr, 0, kmem_cache_size(cache));
 --- a/arch/powerpc/mm/lmb.c
 +++ b/arch/powerpc/mm/lmb.c
-@@ -342,3 +342,16 @@
+@@ -342,3 +342,16 @@ void __init lmb_enforce_memory_limit(uns
                }
        }
  }
                }
        }
  }
 +}
 --- a/arch/powerpc/mm/mem.c
 +++ b/arch/powerpc/mm/mem.c
 +}
 --- a/arch/powerpc/mm/mem.c
 +++ b/arch/powerpc/mm/mem.c
-@@ -213,15 +213,30 @@
+@@ -213,15 +213,30 @@ void __init do_init_bootmem(void)
         */
  #ifdef CONFIG_HIGHMEM
        free_bootmem_with_active_regions(0, total_lowmem >> PAGE_SHIFT);
         */
  #ifdef CONFIG_HIGHMEM
        free_bootmem_with_active_regions(0, total_lowmem >> PAGE_SHIFT);
        /* XXX need to clip this if using highmem? */
        sparse_memory_present_with_active_regions(0);
  
        /* XXX need to clip this if using highmem? */
        sparse_memory_present_with_active_regions(0);
  
-@@ -334,11 +349,13 @@
+@@ -334,11 +349,13 @@ void __init mem_init(void)
                highmem_mapnr = total_lowmem >> PAGE_SHIFT;
                for (pfn = highmem_mapnr; pfn < max_mapnr; ++pfn) {
                        struct page *page = pfn_to_page(pfn);
                highmem_mapnr = total_lowmem >> PAGE_SHIFT;
                for (pfn = highmem_mapnr; pfn < max_mapnr; ++pfn) {
                        struct page *page = pfn_to_page(pfn);
                printk(KERN_DEBUG "High memory: %luk\n",
 --- a/arch/powerpc/mm/slb.c
 +++ b/arch/powerpc/mm/slb.c
                printk(KERN_DEBUG "High memory: %luk\n",
 --- a/arch/powerpc/mm/slb.c
 +++ b/arch/powerpc/mm/slb.c
-@@ -256,6 +256,7 @@
+@@ -256,6 +256,7 @@ void slb_initialize(void)
        static int slb_encoding_inited;
        extern unsigned int *slb_miss_kernel_load_linear;
        extern unsigned int *slb_miss_kernel_load_io;
        static int slb_encoding_inited;
        extern unsigned int *slb_miss_kernel_load_linear;
        extern unsigned int *slb_miss_kernel_load_io;
  
        /* Prepare our SLB miss handler based on our page size */
        linear_llp = mmu_psize_defs[mmu_linear_psize].sllp;
  
        /* Prepare our SLB miss handler based on our page size */
        linear_llp = mmu_psize_defs[mmu_linear_psize].sllp;
-@@ -269,6 +270,8 @@
+@@ -269,6 +270,8 @@ void slb_initialize(void)
                                   SLB_VSID_KERNEL | linear_llp);
                patch_slb_encoding(slb_miss_kernel_load_io,
                                   SLB_VSID_KERNEL | io_llp);
                                   SLB_VSID_KERNEL | linear_llp);
                patch_slb_encoding(slb_miss_kernel_load_io,
                                   SLB_VSID_KERNEL | io_llp);
                DBG("SLB: io      LLP = %04x\n", io_llp);
 --- a/arch/powerpc/mm/slb_low.S
 +++ b/arch/powerpc/mm/slb_low.S
                DBG("SLB: io      LLP = %04x\n", io_llp);
 --- a/arch/powerpc/mm/slb_low.S
 +++ b/arch/powerpc/mm/slb_low.S
-@@ -227,8 +227,9 @@
+@@ -227,8 +227,9 @@ END_FW_FTR_SECTION_IFSET(FW_FEATURE_ISER
  
  7:    ld      r10,PACASTABRR(r13)
        addi    r10,r10,1
  
  7:    ld      r10,PACASTABRR(r13)
        addi    r10,r10,1
        li      r10,SLB_NUM_BOLTED
 --- a/arch/powerpc/oprofile/op_model_cell.c
 +++ b/arch/powerpc/oprofile/op_model_cell.c
        li      r10,SLB_NUM_BOLTED
 --- a/arch/powerpc/oprofile/op_model_cell.c
 +++ b/arch/powerpc/oprofile/op_model_cell.c
-@@ -61,7 +61,7 @@
+@@ -61,7 +61,7 @@ static unsigned int spu_cycle_reset;
  #define NUM_THREADS 2         /* number of physical threads in
                               * physical processor
                               */
  #define NUM_THREADS 2         /* number of physical threads in
                               * physical processor
                               */
  #define NUM_INPUT_BUS_WORDS 2
  
  #define MAX_SPU_COUNT 0xFFFFFF        /* maximum 24 bit LFSR value */
  #define NUM_INPUT_BUS_WORDS 2
  
  #define MAX_SPU_COUNT 0xFFFFFF        /* maximum 24 bit LFSR value */
-@@ -169,7 +169,6 @@
+@@ -169,7 +169,6 @@ static DEFINE_SPINLOCK(virt_cntr_lock);
  
  static u32 ctr_enabled;
  
  
  static u32 ctr_enabled;
  
  static unsigned char input_bus[NUM_INPUT_BUS_WORDS];
  
  /*
  static unsigned char input_bus[NUM_INPUT_BUS_WORDS];
  
  /*
-@@ -298,7 +297,7 @@
+@@ -298,7 +297,7 @@ static void set_pm_event(u32 ctr, int ev
  
        p->signal_group = event / 100;
        p->bus_word = bus_word;
  
        p->signal_group = event / 100;
        p->bus_word = bus_word;
  
        pm_regs.pm07_cntrl[ctr] = 0;
        pm_regs.pm07_cntrl[ctr] |= PM07_CTR_COUNT_CYCLES(count_cycles);
  
        pm_regs.pm07_cntrl[ctr] = 0;
        pm_regs.pm07_cntrl[ctr] |= PM07_CTR_COUNT_CYCLES(count_cycles);
-@@ -334,16 +333,16 @@
+@@ -334,16 +333,16 @@ static void set_pm_event(u32 ctr, int ev
                p->bit = signal_bit;
        }
  
                p->bit = signal_bit;
        }
  
  
                                        break;
                                }
  
                                        break;
                                }
-@@ -450,6 +449,12 @@
+@@ -450,6 +449,12 @@ static void cell_virtual_cntr(unsigned l
        hdw_thread = 1 ^ hdw_thread;
        next_hdw_thread = hdw_thread;
  
        hdw_thread = 1 ^ hdw_thread;
        next_hdw_thread = hdw_thread;
  
        /*
         * There are some per thread events.  Must do the
         * set event, for the thread that is being started
        /*
         * There are some per thread events.  Must do the
         * set event, for the thread that is being started
-@@ -619,9 +624,6 @@
+@@ -619,9 +624,6 @@ static int cell_reg_setup(struct op_coun
                pmc_cntrl[1][i].vcntr = i;
        }
  
                pmc_cntrl[1][i].vcntr = i;
        }
  
  #config REDWOOD_5
  #     bool "Redwood-5"
  #     depends on 40x
  #config REDWOOD_5
  #     bool "Redwood-5"
  #     depends on 40x
-@@ -65,6 +71,7 @@
+@@ -65,6 +71,7 @@ config WALNUT
        depends on 40x
        default y
        select 405GP
        depends on 40x
        default y
        select 405GP
        help
          This option enables support for the IBM PPC405GP evaluation board.
  
        help
          This option enables support for the IBM PPC405GP evaluation board.
  
-@@ -105,6 +112,11 @@
+@@ -105,6 +112,11 @@ config 405GP
  config 405EP
        bool
  
  config 405EP
        bool
  
        { .compatible = "ibm,plb4", },
        { .compatible = "ibm,opb", },
        { .compatible = "ibm,ebc", },
        { .compatible = "ibm,plb4", },
        { .compatible = "ibm,opb", },
        { .compatible = "ibm,ebc", },
-@@ -29,14 +30,11 @@
+@@ -29,14 +30,11 @@ static struct of_device_id kilauea_of_bu
  
  static int __init kilauea_device_probe(void)
  {
  
  static int __init kilauea_device_probe(void)
  {
  
  static int __init kilauea_probe(void)
  {
  
  static int __init kilauea_probe(void)
  {
-@@ -45,6 +43,8 @@
+@@ -45,6 +43,8 @@ static int __init kilauea_probe(void)
        if (!of_flat_dt_is_compatible(root, "amcc,kilauea"))
                return 0;
  
        if (!of_flat_dt_is_compatible(root, "amcc,kilauea"))
                return 0;
  
        { .compatible = "ibm,plb3", },
        { .compatible = "ibm,opb", },
        { .compatible = "ibm,ebc", },
        { .compatible = "ibm,plb3", },
        { .compatible = "ibm,opb", },
        { .compatible = "ibm,ebc", },
-@@ -34,15 +35,12 @@
+@@ -34,15 +35,12 @@ static struct of_device_id walnut_of_bus
  
  static int __init walnut_device_probe(void)
  {
  
  static int __init walnut_device_probe(void)
  {
  
  static int __init walnut_probe(void)
  {
  
  static int __init walnut_probe(void)
  {
-@@ -51,6 +49,8 @@
+@@ -51,6 +49,8 @@ static int __init walnut_probe(void)
        if (!of_flat_dt_is_compatible(root, "ibm,walnut"))
                return 0;
  
        if (!of_flat_dt_is_compatible(root, "ibm,walnut"))
                return 0;
  
  
 --- a/arch/powerpc/platforms/44x/Kconfig
 +++ b/arch/powerpc/platforms/44x/Kconfig
  
 --- a/arch/powerpc/platforms/44x/Kconfig
 +++ b/arch/powerpc/platforms/44x/Kconfig
-@@ -3,6 +3,7 @@
+@@ -3,6 +3,7 @@ config BAMBOO
        depends on 44x
        default n
        select 440EP
        depends on 44x
        default n
        select 440EP
        help
          This option enables support for the IBM PPC440EP evaluation board.
  
        help
          This option enables support for the IBM PPC440EP evaluation board.
  
-@@ -11,6 +12,8 @@
+@@ -11,6 +12,8 @@ config EBONY
        depends on 44x
        default y
        select 440GP
        depends on 44x
        default y
        select 440GP
        help
          This option enables support for the IBM PPC440GP evaluation board.
  
        help
          This option enables support for the IBM PPC440GP evaluation board.
  
-@@ -22,6 +25,48 @@
+@@ -22,6 +25,48 @@ config SEQUOIA
        help
          This option enables support for the AMCC PPC440EPX evaluation board.
  
        help
          This option enables support for the AMCC PPC440EPX evaluation board.
  
  #config LUAN
  #     bool "Luan"
  #     depends on 44x
  #config LUAN
  #     bool "Luan"
  #     depends on 44x
-@@ -44,6 +89,7 @@
+@@ -44,6 +89,7 @@ config 440EP
        select PPC_FPU
        select IBM440EP_ERR42
        select IBM_NEW_EMAC_ZMII
        select PPC_FPU
        select IBM440EP_ERR42
        select IBM_NEW_EMAC_ZMII
  
  config 440EPX
        bool
  
  config 440EPX
        bool
-@@ -52,20 +98,29 @@
+@@ -52,20 +98,29 @@ config 440EPX
        select IBM_NEW_EMAC_RGMII
        select IBM_NEW_EMAC_ZMII
  
        select IBM_NEW_EMAC_RGMII
        select IBM_NEW_EMAC_ZMII
  
        { .compatible = "ibm,plb4", },
        { .compatible = "ibm,opb", },
        { .compatible = "ibm,ebc", },
        { .compatible = "ibm,plb4", },
        { .compatible = "ibm,opb", },
        { .compatible = "ibm,ebc", },
-@@ -32,14 +34,11 @@
+@@ -32,14 +34,11 @@ static struct of_device_id bamboo_of_bus
  
  static int __init bamboo_device_probe(void)
  {
  
  static int __init bamboo_device_probe(void)
  {
  
  static int __init bamboo_probe(void)
  {
  
  static int __init bamboo_probe(void)
  {
-@@ -48,6 +47,8 @@
+@@ -48,6 +47,8 @@ static int __init bamboo_probe(void)
        if (!of_flat_dt_is_compatible(root, "amcc,bamboo"))
                return 0;
  
        if (!of_flat_dt_is_compatible(root, "amcc,bamboo"))
                return 0;
  
        { .compatible = "ibm,plb4", },
        { .compatible = "ibm,opb", },
        { .compatible = "ibm,ebc", },
        { .compatible = "ibm,plb4", },
        { .compatible = "ibm,opb", },
        { .compatible = "ibm,ebc", },
-@@ -36,14 +38,12 @@
+@@ -36,14 +38,12 @@ static struct of_device_id ebony_of_bus[
  
  static int __init ebony_device_probe(void)
  {
  
  static int __init ebony_device_probe(void)
  {
  
  /*
   * Called very early, MMU is off, device-tree isn't unflattened
  
  /*
   * Called very early, MMU is off, device-tree isn't unflattened
-@@ -55,6 +55,8 @@
+@@ -55,6 +55,8 @@ static int __init ebony_probe(void)
        if (!of_flat_dt_is_compatible(root, "ibm,ebony"))
                return 0;
  
        if (!of_flat_dt_is_compatible(root, "ibm,ebony"))
                return 0;
  
        { .compatible = "ibm,plb4", },
        { .compatible = "ibm,opb", },
        { .compatible = "ibm,ebc", },
        { .compatible = "ibm,plb4", },
        { .compatible = "ibm,opb", },
        { .compatible = "ibm,ebc", },
-@@ -32,14 +34,11 @@
+@@ -32,14 +34,11 @@ static struct of_device_id sequoia_of_bu
  
  static int __init sequoia_device_probe(void)
  {
  
  static int __init sequoia_device_probe(void)
  {
  
  static int __init sequoia_probe(void)
  {
  
  static int __init sequoia_probe(void)
  {
-@@ -48,6 +47,8 @@
+@@ -48,6 +47,8 @@ static int __init sequoia_probe(void)
        if (!of_flat_dt_is_compatible(root, "amcc,sequoia"))
                return 0;
  
        if (!of_flat_dt_is_compatible(root, "amcc,sequoia"))
                return 0;
  
 +#endif
 --- a/arch/powerpc/platforms/52xx/Kconfig
 +++ b/arch/powerpc/platforms/52xx/Kconfig
 +#endif
 --- a/arch/powerpc/platforms/52xx/Kconfig
 +++ b/arch/powerpc/platforms/52xx/Kconfig
-@@ -19,6 +19,28 @@
+@@ -19,6 +19,28 @@ config PPC_MPC5200_BUGFIX
  
          It is safe to say 'Y' here
  
  
          It is safe to say 'Y' here
  
  config PPC_EFIKA
        bool "bPlan Efika 5k2. MPC5200B based computer"
        depends on PPC_MULTIPLATFORM && PPC32
  config PPC_EFIKA
        bool "bPlan Efika 5k2. MPC5200B based computer"
        depends on PPC_MULTIPLATFORM && PPC32
-@@ -31,8 +53,7 @@
+@@ -31,8 +53,7 @@ config PPC_EFIKA
  config PPC_LITE5200
        bool "Freescale Lite5200 Eval Board"
        depends on PPC_MULTIPLATFORM && PPC32
  config PPC_LITE5200
        bool "Freescale Lite5200 Eval Board"
        depends on PPC_MULTIPLATFORM && PPC32
 -
 --- a/arch/powerpc/platforms/52xx/Makefile
 +++ b/arch/powerpc/platforms/52xx/Makefile
 -
 --- a/arch/powerpc/platforms/52xx/Makefile
 +++ b/arch/powerpc/platforms/52xx/Makefile
-@@ -6,6 +6,7 @@
+@@ -6,6 +6,7 @@ obj-y                          += mpc52xx_pic.o mpc52xx_common
  obj-$(CONFIG_PCI)             += mpc52xx_pci.o
  endif
  
  obj-$(CONFIG_PCI)             += mpc52xx_pci.o
  endif
  
        if (!cdm) {
                printk(KERN_ERR "%s() failed; expect abnormal behaviour\n",
                       __FUNCTION__);
        if (!cdm) {
                printk(KERN_ERR "%s() failed; expect abnormal behaviour\n",
                       __FUNCTION__);
-@@ -74,10 +77,13 @@
+@@ -74,10 +77,13 @@ lite5200_fix_clock_config(void)
  static void __init
  lite5200_fix_port_config(void)
  {
  static void __init
  lite5200_fix_port_config(void)
  {
        if (!gpio) {
                printk(KERN_ERR "%s() failed. expect abnormal behavior\n",
                       __FUNCTION__);
        if (!gpio) {
                printk(KERN_ERR "%s() failed. expect abnormal behavior\n",
                       __FUNCTION__);
-@@ -131,10 +137,6 @@
+@@ -131,10 +137,6 @@ static void lite5200_resume_finish(void 
  
  static void __init lite5200_setup_arch(void)
  {
  
  static void __init lite5200_setup_arch(void)
  {
        if (ppc_md.progress)
                ppc_md.progress("lite5200_setup_arch()", 0);
  
        if (ppc_md.progress)
                ppc_md.progress("lite5200_setup_arch()", 0);
  
-@@ -154,13 +156,7 @@
+@@ -154,13 +156,7 @@ static void __init lite5200_setup_arch(v
        lite5200_pm_init();
  #endif
  
        lite5200_pm_init();
  #endif
  
  /*
 --- a/arch/powerpc/platforms/52xx/lite5200_pm.c
 +++ b/arch/powerpc/platforms/52xx/lite5200_pm.c
  /*
 --- a/arch/powerpc/platforms/52xx/lite5200_pm.c
 +++ b/arch/powerpc/platforms/52xx/lite5200_pm.c
-@@ -42,6 +42,8 @@
+@@ -42,6 +42,8 @@ static int lite5200_pm_set_target(suspen
  
  static int lite5200_pm_prepare(void)
  {
  
  static int lite5200_pm_prepare(void)
  {
        /* deep sleep? let mpc52xx code handle that */
        if (lite5200_pm_target_state == PM_SUSPEND_STANDBY)
                return mpc52xx_pm_prepare();
        /* deep sleep? let mpc52xx code handle that */
        if (lite5200_pm_target_state == PM_SUSPEND_STANDBY)
                return mpc52xx_pm_prepare();
-@@ -50,7 +52,9 @@
+@@ -50,7 +52,9 @@ static int lite5200_pm_prepare(void)
                return -EINVAL;
  
        /* map registers */
                return -EINVAL;
  
        /* map registers */
  /**
   *    mpc52xx_find_ipb_freq - Find the IPB bus frequency for a device
   *    @node:  device node
  /**
   *    mpc52xx_find_ipb_freq - Find the IPB bus frequency for a device
   *    @node:  device node
-@@ -101,9 +62,12 @@
+@@ -101,9 +62,12 @@ EXPORT_SYMBOL(mpc52xx_find_ipb_freq);
  void __init
  mpc5200_setup_xlb_arbiter(void)
  {
  void __init
  mpc5200_setup_xlb_arbiter(void)
  {
        if (!xlb) {
                printk(KERN_ERR __FILE__ ": "
                        "Error mapping XLB in mpc52xx_setup_cpu().  "
        if (!xlb) {
                printk(KERN_ERR __FILE__ ": "
                        "Error mapping XLB in mpc52xx_setup_cpu().  "
-@@ -124,11 +88,21 @@
+@@ -124,11 +88,21 @@ mpc5200_setup_xlb_arbiter(void)
        iounmap(xlb);
  }
  
        iounmap(xlb);
  }
  
                printk(KERN_ERR __FILE__ ": "
                        "Error while probing of_platform bus\n");
  }
                printk(KERN_ERR __FILE__ ": "
                        "Error while probing of_platform bus\n");
  }
-@@ -146,16 +120,19 @@
+@@ -146,16 +120,19 @@ mpc52xx_map_wdt(void)
        for_each_compatible_node(np, NULL, "fsl,mpc5200-gpt") {
                has_wdt = of_get_property(np, "fsl,has-wdt", NULL);
                if (has_wdt) {
        for_each_compatible_node(np, NULL, "fsl,mpc5200-gpt") {
                has_wdt = of_get_property(np, "fsl,has-wdt", NULL);
                if (has_wdt) {
  
 --- a/arch/powerpc/platforms/52xx/mpc52xx_pci.c
 +++ b/arch/powerpc/platforms/52xx/mpc52xx_pci.c
  
 --- a/arch/powerpc/platforms/52xx/mpc52xx_pci.c
 +++ b/arch/powerpc/platforms/52xx/mpc52xx_pci.c
-@@ -363,7 +363,7 @@
+@@ -363,7 +363,7 @@ mpc52xx_add_bridge(struct device_node *n
  
        pr_debug("Adding MPC52xx PCI host bridge %s\n", node->full_name);
  
  
        pr_debug("Adding MPC52xx PCI host bridge %s\n", node->full_name);
  
  
        if (of_address_to_resource(node, 0, &rsrc) != 0) {
                printk(KERN_ERR "Can't get %s resources\n", node->full_name);
  
        if (of_address_to_resource(node, 0, &rsrc) != 0) {
                printk(KERN_ERR "Can't get %s resources\n", node->full_name);
-@@ -406,3 +406,17 @@
+@@ -406,3 +406,17 @@ mpc52xx_add_bridge(struct device_node *n
  
        return 0;
  }
  
        return 0;
  }
 +}
 --- a/arch/powerpc/platforms/52xx/mpc52xx_pic.c
 +++ b/arch/powerpc/platforms/52xx/mpc52xx_pic.c
 +}
 --- a/arch/powerpc/platforms/52xx/mpc52xx_pic.c
 +++ b/arch/powerpc/platforms/52xx/mpc52xx_pic.c
-@@ -364,16 +364,18 @@
+@@ -364,16 +364,18 @@ void __init mpc52xx_init_irq(void)
  {
        u32 intr_ctrl;
        struct device_node *picnode;
  {
        u32 intr_ctrl;
        struct device_node *picnode;
                                "Check node !");
 --- a/arch/powerpc/platforms/52xx/mpc52xx_pm.c
 +++ b/arch/powerpc/platforms/52xx/mpc52xx_pm.c
                                "Check node !");
 --- a/arch/powerpc/platforms/52xx/mpc52xx_pm.c
 +++ b/arch/powerpc/platforms/52xx/mpc52xx_pm.c
-@@ -59,10 +59,14 @@
+@@ -59,10 +59,14 @@ int mpc52xx_set_wakeup_gpio(u8 pin, u8 l
  
  int mpc52xx_pm_prepare(void)
  {
  
  int mpc52xx_pm_prepare(void)
  {
        /* these offsets are from mpc5200 users manual */
 --- a/arch/powerpc/platforms/82xx/Kconfig
 +++ b/arch/powerpc/platforms/82xx/Kconfig
        /* these offsets are from mpc5200 users manual */
 --- a/arch/powerpc/platforms/82xx/Kconfig
 +++ b/arch/powerpc/platforms/82xx/Kconfig
-@@ -26,6 +26,19 @@
+@@ -26,6 +26,19 @@ config PQ2FADS
        help
          This option enables support for the PQ2FADS board
  
        help
          This option enables support for the PQ2FADS board
  
  config PQ2ADS
 --- a/arch/powerpc/platforms/82xx/Makefile
 +++ b/arch/powerpc/platforms/82xx/Makefile
  config PQ2ADS
 --- a/arch/powerpc/platforms/82xx/Makefile
 +++ b/arch/powerpc/platforms/82xx/Makefile
-@@ -5,3 +5,4 @@
+@@ -5,3 +5,4 @@ obj-$(CONFIG_MPC8272_ADS) += mpc8272_ads
  obj-$(CONFIG_CPM2) += pq2.o
  obj-$(CONFIG_PQ2_ADS_PCI_PIC) += pq2ads-pci-pic.o
  obj-$(CONFIG_PQ2FADS) += pq2fads.o
  obj-$(CONFIG_CPM2) += pq2.o
  obj-$(CONFIG_PQ2_ADS_PCI_PIC) += pq2ads-pci-pic.o
  obj-$(CONFIG_PQ2FADS) += pq2fads.o
 +};
 --- a/arch/powerpc/platforms/82xx/pq2.c
 +++ b/arch/powerpc/platforms/82xx/pq2.c
 +};
 --- a/arch/powerpc/platforms/82xx/pq2.c
 +++ b/arch/powerpc/platforms/82xx/pq2.c
-@@ -53,13 +53,13 @@
+@@ -53,13 +53,13 @@ static void __init pq2_pci_add_bridge(st
        if (of_address_to_resource(np, 0, &r) || r.end - r.start < 0x10b)
                goto err;
  
        if (of_address_to_resource(np, 0, &r) || r.end - r.start < 0x10b)
                goto err;
  
  #include <sysdev/fsl_soc.h>
 --- a/arch/powerpc/platforms/83xx/Kconfig
 +++ b/arch/powerpc/platforms/83xx/Kconfig
  #include <sysdev/fsl_soc.h>
 --- a/arch/powerpc/platforms/83xx/Kconfig
 +++ b/arch/powerpc/platforms/83xx/Kconfig
-@@ -50,6 +50,11 @@
+@@ -50,6 +50,11 @@ config MPC836x_MDS
        help
          This option enables support for the MPC836x MDS Processor Board.
  
        help
          This option enables support for the MPC836x MDS Processor Board.
  
  endchoice
  
  config PPC_MPC831x
  endchoice
  
  config PPC_MPC831x
-@@ -75,3 +80,9 @@
+@@ -75,3 +80,9 @@ config PPC_MPC836x
        select PPC_UDBG_16550
        select PPC_INDIRECT_PCI
        default y if MPC836x_MDS
        select PPC_UDBG_16550
        select PPC_INDIRECT_PCI
        default y if MPC836x_MDS
 +      default y if MPC837x_MDS
 --- a/arch/powerpc/platforms/83xx/Makefile
 +++ b/arch/powerpc/platforms/83xx/Makefile
 +      default y if MPC837x_MDS
 --- a/arch/powerpc/platforms/83xx/Makefile
 +++ b/arch/powerpc/platforms/83xx/Makefile
-@@ -9,3 +9,4 @@
+@@ -9,3 +9,4 @@ obj-$(CONFIG_MPC834x_MDS)      += mpc834x_mds
  obj-$(CONFIG_MPC834x_ITX)     += mpc834x_itx.o
  obj-$(CONFIG_MPC836x_MDS)     += mpc836x_mds.o
  obj-$(CONFIG_MPC832x_MDS)     += mpc832x_mds.o
  obj-$(CONFIG_MPC834x_ITX)     += mpc834x_itx.o
  obj-$(CONFIG_MPC836x_MDS)     += mpc836x_mds.o
  obj-$(CONFIG_MPC832x_MDS)     += mpc832x_mds.o
  
  #include <asm/time.h>
  #include <asm/ipic.h>
  
  #include <asm/time.h>
  #include <asm/ipic.h>
-@@ -70,11 +71,23 @@
+@@ -70,11 +71,23 @@ void __init mpc8313_rdb_init_IRQ(void)
   */
  static int __init mpc8313_rdb_probe(void)
  {
   */
  static int __init mpc8313_rdb_probe(void)
  {
  #include <asm/system.h>
  #include <asm/atomic.h>
  #include <asm/time.h>
  #include <asm/system.h>
  #include <asm/atomic.h>
  #include <asm/time.h>
-@@ -110,15 +110,12 @@
+@@ -110,15 +110,12 @@ static struct of_device_id mpc832x_ids[]
  
  static int __init mpc832x_declare_of_platform_devices(void)
  {
  
  static int __init mpc832x_declare_of_platform_devices(void)
  {
  #include <asm/time.h>
  #include <asm/ipic.h>
  #include <asm/udbg.h>
  #include <asm/time.h>
  #include <asm/ipic.h>
  #include <asm/udbg.h>
-@@ -63,9 +63,6 @@
+@@ -63,9 +63,6 @@ static struct spi_board_info mpc832x_spi
  
  static int __init mpc832x_spi_init(void)
  {
  
  static int __init mpc832x_spi_init(void)
  {
        par_io_config_pin(3,  0, 3, 0, 1, 0); /* SPI1 MOSI, I/O */
        par_io_config_pin(3,  1, 3, 0, 1, 0); /* SPI1 MISO, I/O */
        par_io_config_pin(3,  2, 3, 0, 1, 0); /* SPI1 CLK,  I/O */
        par_io_config_pin(3,  0, 3, 0, 1, 0); /* SPI1 MOSI, I/O */
        par_io_config_pin(3,  1, 3, 0, 1, 0); /* SPI1 MISO, I/O */
        par_io_config_pin(3,  2, 3, 0, 1, 0); /* SPI1 CLK,  I/O */
-@@ -80,7 +77,7 @@
+@@ -80,7 +77,7 @@ static int __init mpc832x_spi_init(void)
                            mpc83xx_spi_deactivate_cs);
  }
  
                            mpc83xx_spi_deactivate_cs);
  }
  
  
  /* ************************************************************************
   *
  
  /* ************************************************************************
   *
-@@ -123,15 +120,12 @@
+@@ -123,15 +120,12 @@ static struct of_device_id mpc832x_ids[]
  
  static int __init mpc832x_declare_of_platform_devices(void)
  {
  
  static int __init mpc832x_declare_of_platform_devices(void)
  {
  
  #include <asm/system.h>
  #include <asm/atomic.h>
  
  #include <asm/system.h>
  #include <asm/atomic.h>
-@@ -106,14 +107,27 @@
+@@ -106,14 +107,27 @@ static void __init mpc834x_mds_init_IRQ(
        ipic_set_default_priority();
  }
  
        ipic_set_default_priority();
  }
  
  #include <asm/system.h>
  #include <asm/atomic.h>
  #include <asm/time.h>
  #include <asm/system.h>
  #include <asm/atomic.h>
  #include <asm/time.h>
-@@ -141,15 +141,12 @@
+@@ -141,15 +141,12 @@ static struct of_device_id mpc836x_ids[]
  
  static int __init mpc836x_declare_of_platform_devices(void)
  {
  
  static int __init mpc836x_declare_of_platform_devices(void)
  {
  #define MPC83XX_SICRH_OFFS         0x118
 --- a/arch/powerpc/platforms/83xx/pci.c
 +++ b/arch/powerpc/platforms/83xx/pci.c
  #define MPC83XX_SICRH_OFFS         0x118
 --- a/arch/powerpc/platforms/83xx/pci.c
 +++ b/arch/powerpc/platforms/83xx/pci.c
-@@ -54,7 +54,7 @@
+@@ -54,7 +54,7 @@ int __init mpc83xx_add_bridge(struct dev
                       " bus 0\n", dev->full_name);
        }
  
                       " bus 0\n", dev->full_name);
        }
  
                return -ENOMEM;
 --- a/arch/powerpc/platforms/83xx/usb.c
 +++ b/arch/powerpc/platforms/83xx/usb.c
                return -ENOMEM;
 --- a/arch/powerpc/platforms/83xx/usb.c
 +++ b/arch/powerpc/platforms/83xx/usb.c
-@@ -41,7 +41,7 @@
+@@ -41,7 +41,7 @@ int mpc834x_usb_cfg(void)
        sicrl = in_be32(immap + MPC83XX_SICRL_OFFS) & ~MPC834X_SICRL_USB_MASK;
        sicrh = in_be32(immap + MPC83XX_SICRH_OFFS) & ~MPC834X_SICRH_USB_UTMI;
  
        sicrl = in_be32(immap + MPC83XX_SICRL_OFFS) & ~MPC834X_SICRL_USB_MASK;
        sicrh = in_be32(immap + MPC83XX_SICRH_OFFS) & ~MPC834X_SICRH_USB_UTMI;
  
        if (np) {
                sccr |= MPC83XX_SCCR_USB_DRCM_11;  /* 1:3 */
  
        if (np) {
                sccr |= MPC83XX_SCCR_USB_DRCM_11;  /* 1:3 */
  
-@@ -67,7 +67,7 @@
+@@ -67,7 +67,7 @@ int mpc834x_usb_cfg(void)
                port0_is_dr = 1;
                of_node_put(np);
        }
                port0_is_dr = 1;
                of_node_put(np);
        }
        if (np) {
                sccr |= MPC83XX_SCCR_USB_MPHCM_11; /* 1:3 */
  
        if (np) {
                sccr |= MPC83XX_SCCR_USB_MPHCM_11; /* 1:3 */
  
-@@ -111,7 +111,7 @@
+@@ -111,7 +111,7 @@ int mpc831x_usb_cfg(void)
        const void *dr_mode;
  #endif
  
        const void *dr_mode;
  #endif
  
        if (!np)
                return -ENODEV;
        prop = of_get_property(np, "phy_type", NULL);
        if (!np)
                return -ENODEV;
        prop = of_get_property(np, "phy_type", NULL);
-@@ -179,3 +179,43 @@
+@@ -179,3 +179,43 @@ int mpc831x_usb_cfg(void)
        return ret;
  }
  #endif /* CONFIG_PPC_MPC831x */
        return ret;
  }
  #endif /* CONFIG_PPC_MPC831x */
 +#endif /* CONFIG_PPC_MPC837x */
 --- a/arch/powerpc/platforms/85xx/mpc85xx_ads.c
 +++ b/arch/powerpc/platforms/85xx/mpc85xx_ads.c
 +#endif /* CONFIG_PPC_MPC837x */
 --- a/arch/powerpc/platforms/85xx/mpc85xx_ads.c
 +++ b/arch/powerpc/platforms/85xx/mpc85xx_ads.c
-@@ -52,9 +52,9 @@
+@@ -52,9 +52,9 @@ static void cpm2_cascade(unsigned int ir
  {
        int cascade_irq;
  
  {
        int cascade_irq;
  
        desc->chip->eoi(irq);
  }
  
        desc->chip->eoi(irq);
  }
  
-@@ -70,13 +70,12 @@
+@@ -70,13 +70,12 @@ static void __init mpc85xx_ads_pic_init(
  #endif
  
        np = of_find_node_by_type(np, "open-pic");
  #endif
  
        np = of_find_node_by_type(np, "open-pic");
                printk(KERN_ERR "Could not map mpic register space\n");
                of_node_put(np);
                return;
                printk(KERN_ERR "Could not map mpic register space\n");
                of_node_put(np);
                return;
-@@ -100,6 +99,7 @@
+@@ -100,6 +99,7 @@ static void __init mpc85xx_ads_pic_init(
        irq = irq_of_parse_and_map(np, 0);
  
        cpm2_pic_init(np);
        irq = irq_of_parse_and_map(np, 0);
  
        cpm2_pic_init(np);
        set_irq_chained_handler(irq, cpm2_cascade);
  #endif
  }
        set_irq_chained_handler(irq, cpm2_cascade);
  #endif
  }
-@@ -112,7 +112,7 @@
+@@ -112,7 +112,7 @@ struct cpm_pin {
        int port, pin, flags;
  };
  
        int port, pin, flags;
  };
  
        /* SCC1 */
        {3, 29, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
        {3, 30, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY},
        /* SCC1 */
        {3, 29, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
        {3, 30, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY},
-@@ -233,13 +233,11 @@
+@@ -233,13 +233,11 @@ static struct of_device_id __initdata of
  
  static int __init declare_of_platform_devices(void)
  {
  
  static int __init declare_of_platform_devices(void)
  {
   * Called very early, device-tree isn't unflattened
 --- a/arch/powerpc/platforms/85xx/mpc85xx_cds.c
 +++ b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
   * Called very early, device-tree isn't unflattened
 --- a/arch/powerpc/platforms/85xx/mpc85xx_cds.c
 +++ b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
-@@ -222,9 +222,6 @@
+@@ -222,9 +222,6 @@ static int mpc85xx_cds_8259_attach(void)
        struct device_node *cascade_node = NULL;
        int cascade_irq;
  
        struct device_node *cascade_node = NULL;
        int cascade_irq;
  
        /* Initialize the i8259 controller */
        for_each_node_by_type(np, "interrupt-controller")
                if (of_device_is_compatible(np, "chrp,iic")) {
        /* Initialize the i8259 controller */
        for_each_node_by_type(np, "interrupt-controller")
                if (of_device_is_compatible(np, "chrp,iic")) {
-@@ -262,8 +259,7 @@
+@@ -262,8 +259,7 @@ static int mpc85xx_cds_8259_attach(void)
  
        return 0;
  }
  
        return 0;
  }
  
 --- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c
 +++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
  
 --- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c
 +++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
-@@ -123,7 +123,7 @@
+@@ -123,7 +123,7 @@ static int mpc85xx_exclude_device(struct
        struct device_node* node;
        struct resource rsrc;
  
        struct device_node* node;
        struct resource rsrc;
  
  #include <asm/system.h>
  #include <asm/atomic.h>
  #include <asm/time.h>
  #include <asm/system.h>
  #include <asm/atomic.h>
  #include <asm/time.h>
-@@ -144,15 +144,12 @@
+@@ -144,15 +144,12 @@ static struct of_device_id mpc85xx_ids[]
  
  static int __init mpc85xx_publish_devices(void)
  {
  
  static int __init mpc85xx_publish_devices(void)
  {
  void __init
  mpc86xx_hpcd_init_irq(void)
  {
  void __init
  mpc86xx_hpcd_init_irq(void)
  {
-@@ -124,7 +139,7 @@
+@@ -124,7 +139,7 @@ static void __devinit quirk_uli5229(stru
  static void __devinit final_uli5288(struct pci_dev *dev)
  {
        struct pci_controller *hose = pci_bus_to_host(dev->bus);
  static void __devinit final_uli5288(struct pci_dev *dev)
  {
        struct pci_controller *hose = pci_bus_to_host(dev->bus);
  
  #include <asm/system.h>
  #include <asm/time.h>
  
  #include <asm/system.h>
  #include <asm/time.h>
-@@ -116,7 +117,7 @@
+@@ -116,7 +117,7 @@ static int mpc86xx_exclude_device(struct
        struct device_node* node;       
        struct resource rsrc;
  
        struct device_node* node;       
        struct resource rsrc;
  
        of_address_to_resource(node, 0, &rsrc);
  
        if ((rsrc.start & 0xfffff) == 0x8000) {
        of_address_to_resource(node, 0, &rsrc);
  
        if ((rsrc.start & 0xfffff) == 0x8000) {
-@@ -212,6 +213,19 @@
+@@ -212,6 +213,19 @@ mpc86xx_time_init(void)
        return 0;
  }
  
        return 0;
  }
  
        .probe                  = mpc86xx_hpcn_probe,
 --- a/arch/powerpc/platforms/8xx/Kconfig
 +++ b/arch/powerpc/platforms/8xx/Kconfig
        .probe                  = mpc86xx_hpcn_probe,
 --- a/arch/powerpc/platforms/8xx/Kconfig
 +++ b/arch/powerpc/platforms/8xx/Kconfig
-@@ -18,6 +18,7 @@
+@@ -18,6 +18,7 @@ config MPC8XXFADS
  config MPC86XADS
        bool "MPC86XADS"
        select CPM1
  config MPC86XADS
        bool "MPC86XADS"
        select CPM1
        help
          MPC86x Application Development System by Freescale Semiconductor.
          The MPC86xADS is meant to serve as a platform for s/w and h/w
        help
          MPC86x Application Development System by Freescale Semiconductor.
          The MPC86xADS is meant to serve as a platform for s/w and h/w
-@@ -43,6 +44,15 @@
+@@ -43,6 +44,15 @@ config PPC_EP88XC
          This board is also resold by Freescale as the QUICCStart
          MPC885 Evaluation System and/or the CWH-PPC-885XN-VE.
  
          This board is also resold by Freescale as the QUICCStart
          MPC885 Evaluation System and/or the CWH-PPC-885XN-VE.
  
  menu "Freescale Ethernet driver platform-specific options"
 --- a/arch/powerpc/platforms/8xx/Makefile
 +++ b/arch/powerpc/platforms/8xx/Makefile
  menu "Freescale Ethernet driver platform-specific options"
 --- a/arch/powerpc/platforms/8xx/Makefile
 +++ b/arch/powerpc/platforms/8xx/Makefile
-@@ -5,3 +5,4 @@
+@@ -5,3 +5,4 @@ obj-$(CONFIG_PPC_8xx)    += m8xx_setup.o
  obj-$(CONFIG_MPC885ADS)   += mpc885ads_setup.o
  obj-$(CONFIG_MPC86XADS)   += mpc86xads_setup.o
  obj-$(CONFIG_PPC_EP88XC)  += ep88xc.o
  obj-$(CONFIG_MPC885ADS)   += mpc885ads_setup.o
  obj-$(CONFIG_MPC86XADS)   += mpc86xads_setup.o
  obj-$(CONFIG_PPC_EP88XC)  += ep88xc.o
 +};
 --- a/arch/powerpc/platforms/8xx/ep88xc.c
 +++ b/arch/powerpc/platforms/8xx/ep88xc.c
 +};
 --- a/arch/powerpc/platforms/8xx/ep88xc.c
 +++ b/arch/powerpc/platforms/8xx/ep88xc.c
-@@ -155,12 +155,11 @@
+@@ -155,12 +155,11 @@ static struct of_device_id __initdata of
  static int __init declare_of_platform_devices(void)
  {
        /* Publish the QE devices */
  static int __init declare_of_platform_devices(void)
  {
        /* Publish the QE devices */
        .name = "Embedded Planet EP88xC",
 --- a/arch/powerpc/platforms/8xx/m8xx_setup.c
 +++ b/arch/powerpc/platforms/8xx/m8xx_setup.c
        .name = "Embedded Planet EP88xC",
 --- a/arch/powerpc/platforms/8xx/m8xx_setup.c
 +++ b/arch/powerpc/platforms/8xx/m8xx_setup.c
-@@ -120,7 +120,7 @@
+@@ -120,7 +120,7 @@ void __init mpc8xx_calibrate_decr(void)
        ppc_tb_freq /= 16;
        ppc_proc_freq = 50000000;
        if (!get_freq("clock-frequency", &ppc_proc_freq))
        ppc_tb_freq /= 16;
        ppc_proc_freq = 50000000;
        if (!get_freq("clock-frequency", &ppc_proc_freq))
  
  define_machine(mpc86x_ads) {
        .name                   = "MPC86x ADS",
  
  define_machine(mpc86x_ads) {
        .name                   = "MPC86x ADS",
-@@ -275,4 +144,5 @@
+@@ -275,4 +144,5 @@ define_machine(mpc86x_ads) {
        .calibrate_decr         = mpc8xx_calibrate_decr,
        .set_rtc_time           = mpc8xx_set_rtc_time,
        .get_rtc_time           = mpc8xx_get_rtc_time,
        .calibrate_decr         = mpc8xx_calibrate_decr,
        .set_rtc_time           = mpc8xx_set_rtc_time,
        .get_rtc_time           = mpc8xx_get_rtc_time,
  };
 --- a/arch/powerpc/platforms/8xx/mpc885ads_setup.c
 +++ b/arch/powerpc/platforms/8xx/mpc885ads_setup.c
  };
 --- a/arch/powerpc/platforms/8xx/mpc885ads_setup.c
 +++ b/arch/powerpc/platforms/8xx/mpc885ads_setup.c
-@@ -264,12 +264,11 @@
+@@ -264,12 +264,11 @@ static struct of_device_id __initdata of
  static int __init declare_of_platform_devices(void)
  {
        /* Publish the QE devices */
  static int __init declare_of_platform_devices(void)
  {
        /* Publish the QE devices */
        .name                   = "Freescale MPC885 ADS",
 --- a/arch/powerpc/platforms/Kconfig
 +++ b/arch/powerpc/platforms/Kconfig
        .name                   = "Freescale MPC885 ADS",
 --- a/arch/powerpc/platforms/Kconfig
 +++ b/arch/powerpc/platforms/Kconfig
-@@ -22,6 +22,7 @@
+@@ -22,6 +22,7 @@ config PPC_83xx
        depends on 6xx
        select FSL_SOC
        select 83xx
        depends on 6xx
        select FSL_SOC
        select 83xx
        select WANT_DEVICE_TREE
  
  config PPC_86xx
        select WANT_DEVICE_TREE
  
  config PPC_86xx
-@@ -80,6 +81,10 @@
+@@ -80,6 +81,10 @@ config XICS
        bool
        default y
  
        bool
        default y
  
  config MPIC
        bool
        default n
  config MPIC
        bool
        default n
-@@ -265,6 +270,7 @@
+@@ -265,6 +270,7 @@ config TAU_AVERAGE
  config QUICC_ENGINE
        bool
        select PPC_LIB_RHEAP
  config QUICC_ENGINE
        bool
        select PPC_LIB_RHEAP
        help
          The QUICC Engine (QE) is a new generation of communications
          coprocessors on Freescale embedded CPUs (akin to CPM in older chips).
        help
          The QUICC Engine (QE) is a new generation of communications
          coprocessors on Freescale embedded CPUs (akin to CPM in older chips).
-@@ -315,6 +321,12 @@
+@@ -315,6 +321,12 @@ config FSL_ULI1575
  config CPM
        bool
  
  config CPM
        bool
  
  endmenu
 --- a/arch/powerpc/platforms/Kconfig.cputype
 +++ b/arch/powerpc/platforms/Kconfig.cputype
  endmenu
 --- a/arch/powerpc/platforms/Kconfig.cputype
 +++ b/arch/powerpc/platforms/Kconfig.cputype
-@@ -43,6 +43,7 @@
+@@ -43,6 +43,7 @@ config 40x
        bool "AMCC 40x"
        select PPC_DCR_NATIVE
        select WANT_DEVICE_TREE
        bool "AMCC 40x"
        select PPC_DCR_NATIVE
        select WANT_DEVICE_TREE
        bool "AMCC 44x"
 --- a/arch/powerpc/platforms/cell/Makefile
 +++ b/arch/powerpc/platforms/cell/Makefile
        bool "AMCC 44x"
 --- a/arch/powerpc/platforms/cell/Makefile
 +++ b/arch/powerpc/platforms/cell/Makefile
-@@ -20,7 +20,7 @@
+@@ -20,7 +20,7 @@ spu-manage-$(CONFIG_PPC_CELL_NATIVE) += 
  
  obj-$(CONFIG_SPU_BASE)                        += spu_callbacks.o spu_base.o \
                                           spu_notify.o \
  
  obj-$(CONFIG_SPU_BASE)                        += spu_callbacks.o spu_base.o \
                                           spu_notify.o \
  #include <asm/cell-regs.h>
  
  /*
  #include <asm/cell-regs.h>
  
  /*
-@@ -256,6 +256,7 @@
+@@ -256,6 +256,7 @@ void __init cbe_regs_init(void)
                        printk(KERN_ERR "cbe_regs: More BE chips than supported"
                               "!\n");
                        cbe_regs_map_count--;
                        printk(KERN_ERR "cbe_regs: More BE chips than supported"
                               "!\n");
                        cbe_regs_map_count--;
                map->cpu_node = cpu;
 --- a/arch/powerpc/platforms/cell/io-workarounds.c
 +++ b/arch/powerpc/platforms/cell/io-workarounds.c
                map->cpu_node = cpu;
 --- a/arch/powerpc/platforms/cell/io-workarounds.c
 +++ b/arch/powerpc/platforms/cell/io-workarounds.c
-@@ -238,7 +238,7 @@
+@@ -238,7 +238,7 @@ static void __init spider_pci_setup_chip
  static void __init spider_pci_add_one(struct pci_controller *phb)
  {
        struct spider_pci_bus *bus = &spider_pci_busses[spider_pci_count];
  static void __init spider_pci_add_one(struct pci_controller *phb)
  {
        struct spider_pci_bus *bus = &spider_pci_busses[spider_pci_count];
        struct resource rsrc;
        void __iomem *regs;
  
        struct resource rsrc;
        void __iomem *regs;
  
-@@ -309,15 +309,12 @@
+@@ -309,15 +309,12 @@ static int __init spider_pci_workaround_
  {
        struct pci_controller *phb;
  
  {
        struct pci_controller *phb;
  
                const char *model = of_get_property(np, "model", NULL);
  
                /* If no model property or name isn't exactly "pci", skip */
                const char *model = of_get_property(np, "model", NULL);
  
                /* If no model property or name isn't exactly "pci", skip */
-@@ -343,4 +340,4 @@
+@@ -343,4 +340,4 @@ static int __init spider_pci_workaround_
  
        return 0;
  }
  
        return 0;
  }
  #include <asm/cell-regs.h>
  
  #include "interrupt.h"
  #include <asm/cell-regs.h>
  
  #include "interrupt.h"
-@@ -309,8 +310,8 @@
+@@ -309,8 +310,8 @@ static void cell_iommu_setup_hardware(st
  {
        struct page *page;
        int ret, i;
  {
        struct page *page;
        int ret, i;
        unsigned int virq;
  
        if (cell_iommu_find_ioc(iommu->nid, &xlate_base))
        unsigned int virq;
  
        if (cell_iommu_find_ioc(iommu->nid, &xlate_base))
-@@ -327,7 +328,8 @@
+@@ -327,7 +328,8 @@ static void cell_iommu_setup_hardware(st
                        __FUNCTION__, iommu->nid, segments, pages_per_segment);
  
        /* set up the segment table */
                        __FUNCTION__, iommu->nid, segments, pages_per_segment);
  
        /* set up the segment table */
        BUG_ON(!page);
        iommu->stab = page_address(page);
        clear_page(iommu->stab);
        BUG_ON(!page);
        iommu->stab = page_address(page);
        clear_page(iommu->stab);
-@@ -489,15 +491,18 @@
+@@ -489,15 +491,18 @@ static struct cbe_iommu *cell_iommu_for_
        return NULL;
  }
  
        return NULL;
  }
  
  
        /* Current implementation uses the first window available in that
         * node's iommu. We -might- do something smarter later though it may
  
        /* Current implementation uses the first window available in that
         * node's iommu. We -might- do something smarter later though it may
-@@ -653,7 +658,7 @@
+@@ -653,7 +658,7 @@ static int __init cell_iommu_init_disabl
  
        /* If we have no Axon, we set up the spider DMA magic offset */
        if (of_find_node_by_name(NULL, "axon") == NULL)
  
        /* If we have no Axon, we set up the spider DMA magic offset */
        if (of_find_node_by_name(NULL, "axon") == NULL)
  
        /* Now we need to check to see where the memory is mapped
         * in PCI space. We assume that all busses use the same dma
  
        /* Now we need to check to see where the memory is mapped
         * in PCI space. We assume that all busses use the same dma
-@@ -687,10 +692,13 @@
+@@ -687,10 +692,13 @@ static int __init cell_iommu_init_disabl
                return -ENODEV;
        }
  
                return -ENODEV;
        }
  
  
        return 0;
  }
  
        return 0;
  }
-@@ -699,9 +707,6 @@
+@@ -699,9 +707,6 @@ static int __init cell_iommu_init(void)
  {
        struct device_node *np;
  
  {
        struct device_node *np;
  
        /* If IOMMU is disabled or we have little enough RAM to not need
         * to enable it, we setup a direct mapping.
         *
        /* If IOMMU is disabled or we have little enough RAM to not need
         * to enable it, we setup a direct mapping.
         *
-@@ -744,5 +749,6 @@
+@@ -744,5 +749,6 @@ static int __init cell_iommu_init(void)
  
        return 0;
  }
  
        return 0;
  }
  
 --- a/arch/powerpc/platforms/cell/pmu.c
 +++ b/arch/powerpc/platforms/cell/pmu.c
  
 --- a/arch/powerpc/platforms/cell/pmu.c
 +++ b/arch/powerpc/platforms/cell/pmu.c
-@@ -213,7 +213,7 @@
+@@ -213,7 +213,7 @@ u32 cbe_read_pm(u32 cpu, enum pm_reg_nam
                break;
  
        case pm_interval:
                break;
  
        case pm_interval:
                break;
  
        case pm_start_stop:
                break;
  
        case pm_start_stop:
-@@ -381,9 +381,6 @@
+@@ -381,9 +381,6 @@ static int __init cbe_init_pm_irq(void)
        unsigned int irq;
        int rc, node;
  
        unsigned int irq;
        int rc, node;
  
        for_each_node(node) {
                irq = irq_create_mapping(NULL, IIC_IRQ_IOEX_PMI |
                                               (node << IIC_IRQ_NODE_SHIFT));
        for_each_node(node) {
                irq = irq_create_mapping(NULL, IIC_IRQ_IOEX_PMI |
                                               (node << IIC_IRQ_NODE_SHIFT));
-@@ -404,7 +401,7 @@
+@@ -404,7 +401,7 @@ static int __init cbe_init_pm_irq(void)
  
        return 0;
  }
  
        return 0;
  }
  #include <asm/cell-regs.h>
  
  #include "interrupt.h"
  #include <asm/cell-regs.h>
  
  #include "interrupt.h"
-@@ -85,9 +85,6 @@
+@@ -85,9 +85,6 @@ static int __init cell_publish_devices(v
  {
        int node;
  
  {
        int node;
  
        /* Publish OF platform devices for southbridge IOs */
        of_platform_bus_probe(NULL, NULL, NULL);
  
        /* Publish OF platform devices for southbridge IOs */
        of_platform_bus_probe(NULL, NULL, NULL);
  
-@@ -101,7 +98,7 @@
+@@ -101,7 +98,7 @@ static int __init cell_publish_devices(v
        }
        return 0;
  }
        }
        return 0;
  }
  
  #include "interrupt.h"
  #include <asm/udbg.h>
  
  #include "interrupt.h"
  #include <asm/udbg.h>
-@@ -182,7 +183,7 @@
+@@ -182,7 +183,7 @@ static int smp_cell_cpu_bootable(unsigne
         */
        if (system_state < SYSTEM_RUNNING &&
            cpu_has_feature(CPU_FTR_SMT) &&
         */
        if (system_state < SYSTEM_RUNNING &&
            cpu_has_feature(CPU_FTR_SMT) &&
  #include <asm/xmon.h>
  #include <asm/prom.h>
  
  #include <asm/xmon.h>
  #include <asm/prom.h>
  
-@@ -47,6 +48,13 @@
+@@ -47,6 +48,13 @@ struct cbe_spu_info cbe_spu_info[MAX_NUM
  EXPORT_SYMBOL_GPL(cbe_spu_info);
  
  /*
  EXPORT_SYMBOL_GPL(cbe_spu_info);
  
  /*
   * Protects cbe_spu_info and spu->number.
   */
  static DEFINE_SPINLOCK(spu_lock);
   * Protects cbe_spu_info and spu->number.
   */
  static DEFINE_SPINLOCK(spu_lock);
-@@ -66,6 +74,10 @@
+@@ -66,6 +74,10 @@ static LIST_HEAD(spu_full_list);
  static DEFINE_SPINLOCK(spu_full_list_lock);
  static DEFINE_MUTEX(spu_full_list_mutex);
  
  static DEFINE_SPINLOCK(spu_full_list_lock);
  static DEFINE_MUTEX(spu_full_list_mutex);
  
  void spu_invalidate_slbs(struct spu *spu)
  {
        struct spu_priv2 __iomem *priv2 = spu->priv2;
  void spu_invalidate_slbs(struct spu *spu)
  {
        struct spu_priv2 __iomem *priv2 = spu->priv2;
-@@ -114,40 +126,36 @@
+@@ -114,40 +126,36 @@ void spu_associate_mm(struct spu *spu, s
  }
  EXPORT_SYMBOL_GPL(spu_associate_mm);
  
  }
  EXPORT_SYMBOL_GPL(spu_associate_mm);
  
        int psize;
  
        pr_debug("%s\n", __FUNCTION__);
        int psize;
  
        pr_debug("%s\n", __FUNCTION__);
-@@ -159,7 +167,7 @@
+@@ -159,7 +167,7 @@ static int __spu_trap_data_seg(struct sp
                printk("%s: invalid access during switch!\n", __func__);
                return 1;
        }
                printk("%s: invalid access during switch!\n", __func__);
                return 1;
        }
  
        switch(REGION_ID(ea)) {
        case USER_REGION_ID:
  
        switch(REGION_ID(ea)) {
        case USER_REGION_ID:
-@@ -168,21 +176,21 @@
+@@ -168,21 +176,21 @@ static int __spu_trap_data_seg(struct sp
  #else
                psize = mm->context.user_psize;
  #endif
  #else
                psize = mm->context.user_psize;
  #endif
                break;
        default:
                /* Future: support kernel segments so that drivers
                break;
        default:
                /* Future: support kernel segments so that drivers
-@@ -191,11 +199,9 @@
+@@ -191,11 +199,9 @@ static int __spu_trap_data_seg(struct sp
                pr_debug("invalid region access at %016lx\n", ea);
                return 1;
        }
                pr_debug("invalid region access at %016lx\n", ea);
                return 1;
        }
  
        spu->slb_replace++;
        if (spu->slb_replace >= 8)
  
        spu->slb_replace++;
        if (spu->slb_replace >= 8)
-@@ -225,13 +231,83 @@
+@@ -225,13 +231,83 @@ static int __spu_trap_data_map(struct sp
                return 1;
        }
  
                return 1;
        }
  
  static irqreturn_t
  spu_irq_class_0(int irq, void *data)
  {
  static irqreturn_t
  spu_irq_class_0(int irq, void *data)
  {
-@@ -240,12 +316,13 @@
+@@ -240,12 +316,13 @@ spu_irq_class_0(int irq, void *data)
  
        spu = data;
  
  
        spu = data;
  
        spin_unlock(&spu->register_lock);
  
        spu->stop_callback(spu);
        spin_unlock(&spu->register_lock);
  
        spu->stop_callback(spu);
-@@ -255,31 +332,6 @@
+@@ -255,31 +332,6 @@ spu_irq_class_0(int irq, void *data)
        return IRQ_HANDLED;
  }
  
        return IRQ_HANDLED;
  }
  
  static irqreturn_t
  spu_irq_class_1(int irq, void *data)
  {
  static irqreturn_t
  spu_irq_class_1(int irq, void *data)
  {
-@@ -294,24 +346,23 @@
+@@ -294,24 +346,23 @@ spu_irq_class_1(int irq, void *data)
        stat  = spu_int_stat_get(spu, 1) & mask;
        dar   = spu_mfc_dar_get(spu);
        dsisr = spu_mfc_dsisr_get(spu);
        stat  = spu_int_stat_get(spu, 1) & mask;
        dar   = spu_mfc_dar_get(spu);
        dsisr = spu_mfc_dsisr_get(spu);
                ;
  
        return stat ? IRQ_HANDLED : IRQ_NONE;
                ;
  
        return stat ? IRQ_HANDLED : IRQ_NONE;
-@@ -323,6 +374,8 @@
+@@ -323,6 +374,8 @@ spu_irq_class_2(int irq, void *data)
        struct spu *spu;
        unsigned long stat;
        unsigned long mask;
        struct spu *spu;
        unsigned long stat;
        unsigned long mask;
  
        spu = data;
        spin_lock(&spu->register_lock);
  
        spu = data;
        spin_lock(&spu->register_lock);
-@@ -330,31 +383,30 @@
+@@ -330,31 +383,30 @@ spu_irq_class_2(int irq, void *data)
        mask = spu_int_mask_get(spu, 2);
        /* ignore interrupts we're not waiting for */
        stat &= mask;
        mask = spu_int_mask_get(spu, 2);
        /* ignore interrupts we're not waiting for */
        stat &= mask;
                spu->wbox_callback(spu);
  
        spu->stats.class2_intr++;
                spu->wbox_callback(spu);
  
        spu->stats.class2_intr++;
-@@ -479,13 +531,27 @@
+@@ -479,13 +531,27 @@ EXPORT_SYMBOL_GPL(spu_add_sysdev_attr);
  int spu_add_sysdev_attr_group(struct attribute_group *attrs)
  {
        struct spu *spu;
  int spu_add_sysdev_attr_group(struct attribute_group *attrs)
  {
        struct spu *spu;
  #include "interrupt.h"
  
  struct device_node *spu_devnode(struct spu *spu)
  #include "interrupt.h"
  
  struct device_node *spu_devnode(struct spu *spu)
-@@ -345,7 +346,7 @@
+@@ -345,7 +346,7 @@ static int __init of_create_spu(struct s
                }
                ret = spu_map_interrupts_old(spu, spe);
                if (ret) {
                }
                ret = spu_map_interrupts_old(spu, spe);
                if (ret) {
                                spu->name);
                        goto out_unmap;
                }
                                spu->name);
                        goto out_unmap;
                }
-@@ -369,6 +370,16 @@
+@@ -369,6 +370,16 @@ static int of_destroy_spu(struct spu *sp
        return 0;
  }
  
        return 0;
  }
  
  /* Hardcoded affinity idxs for qs20 */
  #define QS20_SPES_PER_BE 8
  static int qs20_reg_idxs[QS20_SPES_PER_BE] =   { 0, 2, 4, 6, 7, 5, 3, 1 };
  /* Hardcoded affinity idxs for qs20 */
  #define QS20_SPES_PER_BE 8
  static int qs20_reg_idxs[QS20_SPES_PER_BE] =   { 0, 2, 4, 6, 7, 5, 3, 1 };
-@@ -411,10 +422,15 @@
+@@ -411,10 +422,15 @@ static void init_affinity_qs20_harcoded(
  
  static int of_has_vicinity(void)
  {
  
  static int of_has_vicinity(void)
  {
  }
  
  static struct spu *devnode_spu(int cbe, struct device_node *dn)
  }
  
  static struct spu *devnode_spu(int cbe, struct device_node *dn)
-@@ -525,7 +541,7 @@
+@@ -525,7 +541,7 @@ static int __init init_affinity(void)
                if (of_flat_dt_is_compatible(root, "IBM,CPBW-1.0"))
                        init_affinity_qs20_harcoded();
                else
                if (of_flat_dt_is_compatible(root, "IBM,CPBW-1.0"))
                        init_affinity_qs20_harcoded();
                else
        }
  
        return 0;
        }
  
        return 0;
-@@ -535,5 +551,7 @@
+@@ -535,5 +551,7 @@ const struct spu_management_ops spu_mana
        .enumerate_spus = of_enumerate_spus,
        .create_spu = of_create_spu,
        .destroy_spu = of_destroy_spu,
        .enumerate_spus = of_enumerate_spus,
        .create_spu = of_create_spu,
        .destroy_spu = of_destroy_spu,
  SPU_CROSS     := spu-
 --- a/arch/powerpc/platforms/cell/spufs/backing_ops.c
 +++ b/arch/powerpc/platforms/cell/spufs/backing_ops.c
  SPU_CROSS     := spu-
 --- a/arch/powerpc/platforms/cell/spufs/backing_ops.c
 +++ b/arch/powerpc/platforms/cell/spufs/backing_ops.c
-@@ -106,16 +106,20 @@
+@@ -106,16 +106,20 @@ static unsigned int spu_backing_mbox_sta
                if (stat & 0xff0000)
                        ret |= POLLIN | POLLRDNORM;
                else {
                if (stat & 0xff0000)
                        ret |= POLLIN | POLLRDNORM;
                else {
                }
        }
        spin_unlock_irq(&ctx->csa.register_lock);
                }
        }
        spin_unlock_irq(&ctx->csa.register_lock);
-@@ -139,7 +143,7 @@
+@@ -139,7 +143,7 @@ static int spu_backing_ibox_read(struct 
                ret = 4;
        } else {
                /* make sure we get woken up by the interrupt */
                ret = 4;
        } else {
                /* make sure we get woken up by the interrupt */
                ret = 0;
        }
        spin_unlock(&ctx->csa.register_lock);
                ret = 0;
        }
        spin_unlock(&ctx->csa.register_lock);
-@@ -169,7 +173,8 @@
+@@ -169,7 +173,8 @@ static int spu_backing_wbox_write(struct
        } else {
                /* make sure we get woken up by the interrupt when space
                   becomes available */
        } else {
                /* make sure we get woken up by the interrupt when space
                   becomes available */
                ret = 0;
        }
        spin_unlock(&ctx->csa.register_lock);
                ret = 0;
        }
        spin_unlock(&ctx->csa.register_lock);
-@@ -268,6 +273,11 @@
+@@ -268,6 +273,11 @@ static char *spu_backing_get_ls(struct s
        return ctx->csa.lscsa->ls;
  }
  
        return ctx->csa.lscsa->ls;
  }
  
  static u32 spu_backing_runcntl_read(struct spu_context *ctx)
  {
        return ctx->csa.prob.spu_runcntl_RW;
  static u32 spu_backing_runcntl_read(struct spu_context *ctx)
  {
        return ctx->csa.prob.spu_runcntl_RW;
-@@ -285,6 +295,11 @@
+@@ -285,6 +295,11 @@ static void spu_backing_runcntl_write(st
        spin_unlock(&ctx->csa.register_lock);
  }
  
        spin_unlock(&ctx->csa.register_lock);
  }
  
  static void spu_backing_master_start(struct spu_context *ctx)
  {
        struct spu_state *csa = &ctx->csa;
  static void spu_backing_master_start(struct spu_context *ctx)
  {
        struct spu_state *csa = &ctx->csa;
-@@ -358,7 +373,7 @@
+@@ -358,7 +373,7 @@ static int spu_backing_send_mfc_command(
  
  static void spu_backing_restart_dma(struct spu_context *ctx)
  {
  
  static void spu_backing_restart_dma(struct spu_context *ctx)
  {
  }
  
  struct spu_context_ops spu_backing_ops = {
  }
  
  struct spu_context_ops spu_backing_ops = {
-@@ -379,8 +394,10 @@
+@@ -379,8 +394,10 @@ struct spu_context_ops spu_backing_ops =
        .npc_write = spu_backing_npc_write,
        .status_read = spu_backing_status_read,
        .get_ls = spu_backing_get_ls,
        .npc_write = spu_backing_npc_write,
        .status_read = spu_backing_status_read,
        .get_ls = spu_backing_get_ls,
        .set_mfc_query = spu_backing_set_mfc_query,
 --- a/arch/powerpc/platforms/cell/spufs/context.c
 +++ b/arch/powerpc/platforms/cell/spufs/context.c
        .set_mfc_query = spu_backing_set_mfc_query,
 --- a/arch/powerpc/platforms/cell/spufs/context.c
 +++ b/arch/powerpc/platforms/cell/spufs/context.c
-@@ -52,6 +52,7 @@
+@@ -52,6 +52,7 @@ struct spu_context *alloc_spu_context(st
        init_waitqueue_head(&ctx->wbox_wq);
        init_waitqueue_head(&ctx->stop_wq);
        init_waitqueue_head(&ctx->mfc_wq);
        init_waitqueue_head(&ctx->wbox_wq);
        init_waitqueue_head(&ctx->stop_wq);
        init_waitqueue_head(&ctx->mfc_wq);
        ctx->state = SPU_STATE_SAVED;
        ctx->ops = &spu_backing_ops;
        ctx->owner = get_task_mm(current);
        ctx->state = SPU_STATE_SAVED;
        ctx->ops = &spu_backing_ops;
        ctx->owner = get_task_mm(current);
-@@ -105,7 +106,17 @@
+@@ -105,7 +106,17 @@ int put_spu_context(struct spu_context *
  void spu_forget(struct spu_context *ctx)
  {
        struct mm_struct *mm;
  void spu_forget(struct spu_context *ctx)
  {
        struct mm_struct *mm;
        mm = ctx->owner;
        ctx->owner = NULL;
        mmput(mm);
        mm = ctx->owner;
        ctx->owner = NULL;
        mmput(mm);
-@@ -133,47 +144,23 @@
+@@ -133,47 +144,23 @@ void spu_unmap_mappings(struct spu_conte
  }
  
  /**
  }
  
  /**
  /**
 --- a/arch/powerpc/platforms/cell/spufs/coredump.c
 +++ b/arch/powerpc/platforms/cell/spufs/coredump.c
  /**
 --- a/arch/powerpc/platforms/cell/spufs/coredump.c
 +++ b/arch/powerpc/platforms/cell/spufs/coredump.c
-@@ -148,7 +148,9 @@
+@@ -148,7 +148,9 @@ int spufs_coredump_extra_notes_size(void
  
        fd = 0;
        while ((ctx = coredump_next_context(&fd)) != NULL) {
  
        fd = 0;
        while ((ctx = coredump_next_context(&fd)) != NULL) {
                rc = spufs_ctx_note_size(ctx, fd);
                spu_release_saved(ctx);
                if (rc < 0)
                rc = spufs_ctx_note_size(ctx, fd);
                spu_release_saved(ctx);
                if (rc < 0)
-@@ -224,7 +226,9 @@
+@@ -224,7 +226,9 @@ int spufs_coredump_extra_notes_write(str
  
        fd = 0;
        while ((ctx = coredump_next_context(&fd)) != NULL) {
  
        fd = 0;
        while ((ctx = coredump_next_context(&fd)) != NULL) {
  
  /*
   * bottom half handler for page faults, we can't do this from
  
  /*
   * bottom half handler for page faults, we can't do this from
-@@ -154,7 +108,7 @@
+@@ -154,7 +108,7 @@ int spufs_handle_class1(struct spu_conte
        u64 ea, dsisr, access;
        unsigned long flags;
        unsigned flt = 0;
        u64 ea, dsisr, access;
        unsigned long flags;
        unsigned flt = 0;
  
        /*
         * dar and dsisr get passed from the registers
  
        /*
         * dar and dsisr get passed from the registers
-@@ -165,16 +119,8 @@
+@@ -165,16 +119,8 @@ int spufs_handle_class1(struct spu_conte
         * in time, we can still expect to get the same fault
         * the immediately after the context restore.
         */
         * in time, we can still expect to get the same fault
         * the immediately after the context restore.
         */
  
        if (!(dsisr & (MFC_DSISR_PTE_NOT_FOUND | MFC_DSISR_ACCESS_DENIED)))
                return 0;
  
        if (!(dsisr & (MFC_DSISR_PTE_NOT_FOUND | MFC_DSISR_ACCESS_DENIED)))
                return 0;
-@@ -201,7 +147,22 @@
+@@ -201,7 +147,22 @@ int spufs_handle_class1(struct spu_conte
        if (ret)
                ret = spu_handle_mm_fault(current->mm, ea, dsisr, &flt);
  
        if (ret)
                ret = spu_handle_mm_fault(current->mm, ea, dsisr, &flt);
  
        /*
         * If we handled the fault successfully and are in runnable
         * state, restart the DMA.
        /*
         * If we handled the fault successfully and are in runnable
         * state, restart the DMA.
-@@ -222,9 +183,9 @@
+@@ -222,9 +183,9 @@ int spufs_handle_class1(struct spu_conte
                if (ctx->spu)
                        ctx->ops->restart_dma(ctx);
        } else
                if (ctx->spu)
                        ctx->ops->restart_dma(ctx);
        } else
  
  static int
  spufs_mem_open(struct inode *inode, struct file *file)
  
  static int
  spufs_mem_open(struct inode *inode, struct file *file)
-@@ -84,9 +198,12 @@
+@@ -84,9 +198,12 @@ spufs_mem_read(struct file *file, char _
        struct spu_context *ctx = file->private_data;
        ssize_t ret;
  
        struct spu_context *ctx = file->private_data;
        ssize_t ret;
  
        return ret;
  }
  
        return ret;
  }
  
-@@ -106,7 +223,10 @@
+@@ -106,7 +223,10 @@ spufs_mem_write(struct file *file, const
        if (size > LS_SIZE - pos)
                size = LS_SIZE - pos;
  
        if (size > LS_SIZE - pos)
                size = LS_SIZE - pos;
  
        local_store = ctx->ops->get_ls(ctx);
        ret = copy_from_user(local_store + pos, buffer, size);
        spu_release(ctx);
        local_store = ctx->ops->get_ls(ctx);
        ret = copy_from_user(local_store + pos, buffer, size);
        spu_release(ctx);
-@@ -146,7 +266,8 @@
+@@ -146,7 +266,8 @@ static unsigned long spufs_mem_mmap_nopf
        pr_debug("spufs_mem_mmap_nopfn address=0x%lx -> 0x%lx, offset=0x%lx\n",
                 addr0, address, offset);
  
        pr_debug("spufs_mem_mmap_nopfn address=0x%lx -> 0x%lx, offset=0x%lx\n",
                 addr0, address, offset);
  
  
        if (ctx->state == SPU_STATE_SAVED) {
                vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot)
  
        if (ctx->state == SPU_STATE_SAVED) {
                vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot)
-@@ -236,23 +357,32 @@
+@@ -236,23 +357,32 @@ static unsigned long spufs_ps_nopfn(stru
  {
        struct spu_context *ctx = vma->vm_file->private_data;
        unsigned long area, offset = address - vma->vm_start;
  {
        struct spu_context *ctx = vma->vm_file->private_data;
        unsigned long area, offset = address - vma->vm_start;
        return NOPFN_REFAULT;
  }
  
        return NOPFN_REFAULT;
  }
  
-@@ -286,25 +416,32 @@
+@@ -286,25 +416,32 @@ static int spufs_cntl_mmap(struct file *
  #define spufs_cntl_mmap NULL
  #endif /* !SPUFS_MMAP_4K */
  
  #define spufs_cntl_mmap NULL
  #endif /* !SPUFS_MMAP_4K */
  
  }
  
  static int spufs_cntl_open(struct inode *inode, struct file *file)
  }
  
  static int spufs_cntl_open(struct inode *inode, struct file *file)
-@@ -317,7 +454,7 @@
+@@ -317,7 +454,7 @@ static int spufs_cntl_open(struct inode 
        if (!i->i_openers++)
                ctx->cntl = inode->i_mapping;
        mutex_unlock(&ctx->mapping_lock);
        if (!i->i_openers++)
                ctx->cntl = inode->i_mapping;
        mutex_unlock(&ctx->mapping_lock);
                                        spufs_cntl_set, "0x%08lx");
  }
  
                                        spufs_cntl_set, "0x%08lx");
  }
  
-@@ -327,7 +464,7 @@
+@@ -327,7 +464,7 @@ spufs_cntl_release(struct inode *inode, 
        struct spufs_inode_info *i = SPUFS_I(inode);
        struct spu_context *ctx = i->i_ctx;
  
        struct spufs_inode_info *i = SPUFS_I(inode);
        struct spu_context *ctx = i->i_ctx;
  
  
        mutex_lock(&ctx->mapping_lock);
        if (!--i->i_openers)
  
        mutex_lock(&ctx->mapping_lock);
        if (!--i->i_openers)
-@@ -339,8 +476,8 @@
+@@ -339,8 +476,8 @@ spufs_cntl_release(struct inode *inode, 
  static const struct file_operations spufs_cntl_fops = {
        .open = spufs_cntl_open,
        .release = spufs_cntl_release,
  static const struct file_operations spufs_cntl_fops = {
        .open = spufs_cntl_open,
        .release = spufs_cntl_release,
        .mmap = spufs_cntl_mmap,
  };
  
        .mmap = spufs_cntl_mmap,
  };
  
-@@ -368,7 +505,9 @@
+@@ -368,7 +505,9 @@ spufs_regs_read(struct file *file, char 
        int ret;
        struct spu_context *ctx = file->private_data;
  
        int ret;
        struct spu_context *ctx = file->private_data;
  
        ret = __spufs_regs_read(ctx, buffer, size, pos);
        spu_release_saved(ctx);
        return ret;
        ret = __spufs_regs_read(ctx, buffer, size, pos);
        spu_release_saved(ctx);
        return ret;
-@@ -387,7 +526,9 @@
+@@ -387,7 +526,9 @@ spufs_regs_write(struct file *file, cons
                return -EFBIG;
        *pos += size;
  
                return -EFBIG;
        *pos += size;
  
  
        ret = copy_from_user(lscsa->gprs + *pos - size,
                             buffer, size) ? -EFAULT : size;
  
        ret = copy_from_user(lscsa->gprs + *pos - size,
                             buffer, size) ? -EFAULT : size;
-@@ -419,7 +560,9 @@
+@@ -419,7 +560,9 @@ spufs_fpcr_read(struct file *file, char 
        int ret;
        struct spu_context *ctx = file->private_data;
  
        int ret;
        struct spu_context *ctx = file->private_data;
  
        ret = __spufs_fpcr_read(ctx, buffer, size, pos);
        spu_release_saved(ctx);
        return ret;
        ret = __spufs_fpcr_read(ctx, buffer, size, pos);
        spu_release_saved(ctx);
        return ret;
-@@ -436,10 +579,12 @@
+@@ -436,10 +579,12 @@ spufs_fpcr_write(struct file *file, cons
        size = min_t(ssize_t, sizeof(lscsa->fpcr) - *pos, size);
        if (size <= 0)
                return -EFBIG;
        size = min_t(ssize_t, sizeof(lscsa->fpcr) - *pos, size);
        if (size <= 0)
                return -EFBIG;
        ret = copy_from_user((char *)&lscsa->fpcr + *pos - size,
                             buffer, size) ? -EFAULT : size;
  
        ret = copy_from_user((char *)&lscsa->fpcr + *pos - size,
                             buffer, size) ? -EFAULT : size;
  
-@@ -486,7 +631,10 @@
+@@ -486,7 +631,10 @@ static ssize_t spufs_mbox_read(struct fi
  
        udata = (void __user *)buf;
  
  
        udata = (void __user *)buf;
  
        for (count = 0; (count + 4) <= len; count += 4, udata++) {
                int ret;
                ret = ctx->ops->mbox_read(ctx, &mbox_data);
        for (count = 0; (count + 4) <= len; count += 4, udata++) {
                int ret;
                ret = ctx->ops->mbox_read(ctx, &mbox_data);
-@@ -522,12 +670,15 @@
+@@ -522,12 +670,15 @@ static ssize_t spufs_mbox_stat_read(stru
                        size_t len, loff_t *pos)
  {
        struct spu_context *ctx = file->private_data;
                        size_t len, loff_t *pos)
  {
        struct spu_context *ctx = file->private_data;
  
        mbox_stat = ctx->ops->mbox_stat_read(ctx) & 0xff;
  
  
        mbox_stat = ctx->ops->mbox_stat_read(ctx) & 0xff;
  
-@@ -562,6 +713,9 @@
+@@ -562,6 +713,9 @@ void spufs_ibox_callback(struct spu *spu
  {
        struct spu_context *ctx = spu->ctx;
  
  {
        struct spu_context *ctx = spu->ctx;
  
        wake_up_all(&ctx->ibox_wq);
        kill_fasync(&ctx->ibox_fasync, SIGIO, POLLIN);
  }
        wake_up_all(&ctx->ibox_wq);
        kill_fasync(&ctx->ibox_fasync, SIGIO, POLLIN);
  }
-@@ -593,7 +747,9 @@
+@@ -593,7 +747,9 @@ static ssize_t spufs_ibox_read(struct fi
  
        udata = (void __user *)buf;
  
  
        udata = (void __user *)buf;
  
  
        /* wait only for the first element */
        count = 0;
  
        /* wait only for the first element */
        count = 0;
-@@ -639,7 +795,11 @@
+@@ -639,7 +795,11 @@ static unsigned int spufs_ibox_poll(stru
  
        poll_wait(file, &ctx->ibox_wq, wait);
  
  
        poll_wait(file, &ctx->ibox_wq, wait);
  
        mask = ctx->ops->mbox_stat_poll(ctx, POLLIN | POLLRDNORM);
        spu_release(ctx);
  
        mask = ctx->ops->mbox_stat_poll(ctx, POLLIN | POLLRDNORM);
        spu_release(ctx);
  
-@@ -657,12 +817,15 @@
+@@ -657,12 +817,15 @@ static ssize_t spufs_ibox_stat_read(stru
                        size_t len, loff_t *pos)
  {
        struct spu_context *ctx = file->private_data;
                        size_t len, loff_t *pos)
  {
        struct spu_context *ctx = file->private_data;
        ibox_stat = (ctx->ops->mbox_stat_read(ctx) >> 16) & 0xff;
        spu_release(ctx);
  
        ibox_stat = (ctx->ops->mbox_stat_read(ctx) >> 16) & 0xff;
        spu_release(ctx);
  
-@@ -698,6 +861,9 @@
+@@ -698,6 +861,9 @@ void spufs_wbox_callback(struct spu *spu
  {
        struct spu_context *ctx = spu->ctx;
  
  {
        struct spu_context *ctx = spu->ctx;
  
        wake_up_all(&ctx->wbox_wq);
        kill_fasync(&ctx->wbox_fasync, SIGIO, POLLOUT);
  }
        wake_up_all(&ctx->wbox_wq);
        kill_fasync(&ctx->wbox_fasync, SIGIO, POLLOUT);
  }
-@@ -731,7 +897,9 @@
+@@ -731,7 +897,9 @@ static ssize_t spufs_wbox_write(struct f
        if (__get_user(wbox_data, udata))
                return -EFAULT;
  
        if (__get_user(wbox_data, udata))
                return -EFAULT;
  
  
        /*
         * make sure we can at least write one element, by waiting
  
        /*
         * make sure we can at least write one element, by waiting
-@@ -772,7 +940,11 @@
+@@ -772,7 +940,11 @@ static unsigned int spufs_wbox_poll(stru
  
        poll_wait(file, &ctx->wbox_wq, wait);
  
  
        poll_wait(file, &ctx->wbox_wq, wait);
  
        mask = ctx->ops->mbox_stat_poll(ctx, POLLOUT | POLLWRNORM);
        spu_release(ctx);
  
        mask = ctx->ops->mbox_stat_poll(ctx, POLLOUT | POLLWRNORM);
        spu_release(ctx);
  
-@@ -790,12 +962,15 @@
+@@ -790,12 +962,15 @@ static ssize_t spufs_wbox_stat_read(stru
                        size_t len, loff_t *pos)
  {
        struct spu_context *ctx = file->private_data;
                        size_t len, loff_t *pos)
  {
        struct spu_context *ctx = file->private_data;
        wbox_stat = (ctx->ops->mbox_stat_read(ctx) >> 8) & 0xff;
        spu_release(ctx);
  
        wbox_stat = (ctx->ops->mbox_stat_read(ctx) >> 8) & 0xff;
        spu_release(ctx);
  
-@@ -866,7 +1041,9 @@
+@@ -866,7 +1041,9 @@ static ssize_t spufs_signal1_read(struct
        int ret;
        struct spu_context *ctx = file->private_data;
  
        int ret;
        struct spu_context *ctx = file->private_data;
  
        ret = __spufs_signal1_read(ctx, buf, len, pos);
        spu_release_saved(ctx);
  
        ret = __spufs_signal1_read(ctx, buf, len, pos);
        spu_release_saved(ctx);
  
-@@ -877,6 +1054,7 @@
+@@ -877,6 +1054,7 @@ static ssize_t spufs_signal1_write(struc
                        size_t len, loff_t *pos)
  {
        struct spu_context *ctx;
                        size_t len, loff_t *pos)
  {
        struct spu_context *ctx;
        u32 data;
  
        ctx = file->private_data;
        u32 data;
  
        ctx = file->private_data;
-@@ -887,7 +1065,9 @@
+@@ -887,7 +1065,9 @@ static ssize_t spufs_signal1_write(struc
        if (copy_from_user(&data, buf, 4))
                return -EFAULT;
  
        if (copy_from_user(&data, buf, 4))
                return -EFAULT;
  
        ctx->ops->signal1_write(ctx, data);
        spu_release(ctx);
  
        ctx->ops->signal1_write(ctx, data);
        spu_release(ctx);
  
-@@ -997,7 +1177,9 @@
+@@ -997,7 +1177,9 @@ static ssize_t spufs_signal2_read(struct
        struct spu_context *ctx = file->private_data;
        int ret;
  
        struct spu_context *ctx = file->private_data;
        int ret;
  
        ret = __spufs_signal2_read(ctx, buf, len, pos);
        spu_release_saved(ctx);
  
        ret = __spufs_signal2_read(ctx, buf, len, pos);
        spu_release_saved(ctx);
  
-@@ -1008,6 +1190,7 @@
+@@ -1008,6 +1190,7 @@ static ssize_t spufs_signal2_write(struc
                        size_t len, loff_t *pos)
  {
        struct spu_context *ctx;
                        size_t len, loff_t *pos)
  {
        struct spu_context *ctx;
        u32 data;
  
        ctx = file->private_data;
        u32 data;
  
        ctx = file->private_data;
-@@ -1018,7 +1201,9 @@
+@@ -1018,7 +1201,9 @@ static ssize_t spufs_signal2_write(struc
        if (copy_from_user(&data, buf, 4))
                return -EFAULT;
  
        if (copy_from_user(&data, buf, 4))
                return -EFAULT;
  
        ctx->ops->signal2_write(ctx, data);
        spu_release(ctx);
  
        ctx->ops->signal2_write(ctx, data);
        spu_release(ctx);
  
-@@ -1086,33 +1271,42 @@
+@@ -1086,33 +1271,42 @@ static const struct file_operations spuf
  #define SPU_ATTR_ACQUIRE_SAVED        2
  
  #define DEFINE_SPUFS_ATTRIBUTE(__name, __get, __set, __fmt, __acquire)        \
  #define SPU_ATTR_ACQUIRE_SAVED        2
  
  #define DEFINE_SPUFS_ATTRIBUTE(__name, __get, __set, __fmt, __acquire)        \
  }
  
  static u64 spufs_signal1_type_get(struct spu_context *ctx)
  }
  
  static u64 spufs_signal1_type_get(struct spu_context *ctx)
-@@ -1123,13 +1317,18 @@
+@@ -1123,13 +1317,18 @@ DEFINE_SPUFS_ATTRIBUTE(spufs_signal1_typ
                       spufs_signal1_type_set, "%llu", SPU_ATTR_ACQUIRE);
  
  
                       spufs_signal1_type_set, "%llu", SPU_ATTR_ACQUIRE);
  
  
  }
  
  static u64 spufs_signal2_type_get(struct spu_context *ctx)
  }
  
  static u64 spufs_signal2_type_get(struct spu_context *ctx)
-@@ -1329,6 +1528,9 @@
+@@ -1329,6 +1528,9 @@ void spufs_mfc_callback(struct spu *spu)
  {
        struct spu_context *ctx = spu->ctx;
  
  {
        struct spu_context *ctx = spu->ctx;
  
        wake_up_all(&ctx->mfc_wq);
  
        pr_debug("%s %s\n", __FUNCTION__, spu->name);
        wake_up_all(&ctx->mfc_wq);
  
        pr_debug("%s %s\n", __FUNCTION__, spu->name);
-@@ -1375,12 +1577,17 @@
+@@ -1375,12 +1577,17 @@ static ssize_t spufs_mfc_read(struct fil
        if (size != 4)
                goto out;
  
        if (size != 4)
                goto out;
  
                        ctx->tagwait &= ~status;
        } else {
                ret = spufs_wait(ctx->mfc_wq,
                        ctx->tagwait &= ~status;
        } else {
                ret = spufs_wait(ctx->mfc_wq,
-@@ -1505,7 +1712,11 @@
+@@ -1505,7 +1712,11 @@ static ssize_t spufs_mfc_write(struct fi
        if (ret)
                goto out;
  
        if (ret)
                goto out;
  
        if (ret)
                goto out;
  
        if (ret)
                goto out;
  
-@@ -1539,7 +1750,11 @@
+@@ -1539,7 +1750,11 @@ static unsigned int spufs_mfc_poll(struc
  
        poll_wait(file, &ctx->mfc_wq, wait);
  
  
        poll_wait(file, &ctx->mfc_wq, wait);
  
        ctx->ops->set_mfc_query(ctx, ctx->tagwait, 2);
        free_elements = ctx->ops->get_mfc_free_elements(ctx);
        tagstatus = ctx->ops->read_mfc_tagstatus(ctx);
        ctx->ops->set_mfc_query(ctx, ctx->tagwait, 2);
        free_elements = ctx->ops->get_mfc_free_elements(ctx);
        tagstatus = ctx->ops->read_mfc_tagstatus(ctx);
-@@ -1562,7 +1777,9 @@
+@@ -1562,7 +1777,9 @@ static int spufs_mfc_flush(struct file *
        struct spu_context *ctx = file->private_data;
        int ret;
  
        struct spu_context *ctx = file->private_data;
        int ret;
  
  #if 0
  /* this currently hangs */
        ret = spufs_wait(ctx->mfc_wq,
  #if 0
  /* this currently hangs */
        ret = spufs_wait(ctx->mfc_wq,
-@@ -1605,12 +1822,18 @@
+@@ -1605,12 +1822,18 @@ static const struct file_operations spuf
        .mmap    = spufs_mfc_mmap,
  };
  
        .mmap    = spufs_mfc_mmap,
  };
  
  }
  
  static u64 spufs_npc_get(struct spu_context *ctx)
  }
  
  static u64 spufs_npc_get(struct spu_context *ctx)
-@@ -1620,13 +1843,19 @@
+@@ -1620,13 +1843,19 @@ static u64 spufs_npc_get(struct spu_cont
  DEFINE_SPUFS_ATTRIBUTE(spufs_npc_ops, spufs_npc_get, spufs_npc_set,
                       "0x%llx\n", SPU_ATTR_ACQUIRE);
  
  DEFINE_SPUFS_ATTRIBUTE(spufs_npc_ops, spufs_npc_get, spufs_npc_set,
                       "0x%llx\n", SPU_ATTR_ACQUIRE);
  
  }
  
  static u64 spufs_decr_get(struct spu_context *ctx)
  }
  
  static u64 spufs_decr_get(struct spu_context *ctx)
-@@ -1637,15 +1866,21 @@
+@@ -1637,15 +1866,21 @@ static u64 spufs_decr_get(struct spu_con
  DEFINE_SPUFS_ATTRIBUTE(spufs_decr_ops, spufs_decr_get, spufs_decr_set,
                       "0x%llx\n", SPU_ATTR_ACQUIRE_SAVED);
  
  DEFINE_SPUFS_ATTRIBUTE(spufs_decr_ops, spufs_decr_get, spufs_decr_set,
                       "0x%llx\n", SPU_ATTR_ACQUIRE_SAVED);
  
  }
  
  static u64 spufs_decr_status_get(struct spu_context *ctx)
  }
  
  static u64 spufs_decr_status_get(struct spu_context *ctx)
-@@ -1659,13 +1894,19 @@
+@@ -1659,13 +1894,19 @@ DEFINE_SPUFS_ATTRIBUTE(spufs_decr_status
                       spufs_decr_status_set, "0x%llx\n",
                       SPU_ATTR_ACQUIRE_SAVED);
  
                       spufs_decr_status_set, "0x%llx\n",
                       SPU_ATTR_ACQUIRE_SAVED);
  
  }
  
  static u64 spufs_event_mask_get(struct spu_context *ctx)
  }
  
  static u64 spufs_event_mask_get(struct spu_context *ctx)
-@@ -1690,13 +1931,19 @@
+@@ -1690,13 +1931,19 @@ static u64 spufs_event_status_get(struct
  DEFINE_SPUFS_ATTRIBUTE(spufs_event_status_ops, spufs_event_status_get,
                       NULL, "0x%llx\n", SPU_ATTR_ACQUIRE_SAVED)
  
  DEFINE_SPUFS_ATTRIBUTE(spufs_event_status_ops, spufs_event_status_get,
                       NULL, "0x%llx\n", SPU_ATTR_ACQUIRE_SAVED)
  
  }
  
  static u64 spufs_srr0_get(struct spu_context *ctx)
  }
  
  static u64 spufs_srr0_get(struct spu_context *ctx)
-@@ -1727,10 +1974,12 @@
+@@ -1727,10 +1974,12 @@ static u64 spufs_object_id_get(struct sp
        return ctx->object_id;
  }
  
        return ctx->object_id;
  }
  
  }
  
  DEFINE_SPUFS_ATTRIBUTE(spufs_object_id_ops, spufs_object_id_get,
  }
  
  DEFINE_SPUFS_ATTRIBUTE(spufs_object_id_ops, spufs_object_id_get,
-@@ -1777,13 +2026,13 @@
+@@ -1777,13 +2026,13 @@ static const struct file_operations spuf
  static ssize_t __spufs_mbox_info_read(struct spu_context *ctx,
                        char __user *buf, size_t len, loff_t *pos)
  {
  static ssize_t __spufs_mbox_info_read(struct spu_context *ctx,
                        char __user *buf, size_t len, loff_t *pos)
  {
  
        return simple_read_from_buffer(buf, len, pos, &data, sizeof data);
  }
  
        return simple_read_from_buffer(buf, len, pos, &data, sizeof data);
  }
-@@ -1797,7 +2046,9 @@
+@@ -1797,7 +2046,9 @@ static ssize_t spufs_mbox_info_read(stru
        if (!access_ok(VERIFY_WRITE, buf, len))
                return -EFAULT;
  
        if (!access_ok(VERIFY_WRITE, buf, len))
                return -EFAULT;
  
        spin_lock(&ctx->csa.register_lock);
        ret = __spufs_mbox_info_read(ctx, buf, len, pos);
        spin_unlock(&ctx->csa.register_lock);
        spin_lock(&ctx->csa.register_lock);
        ret = __spufs_mbox_info_read(ctx, buf, len, pos);
        spin_unlock(&ctx->csa.register_lock);
-@@ -1815,13 +2066,13 @@
+@@ -1815,13 +2066,13 @@ static const struct file_operations spuf
  static ssize_t __spufs_ibox_info_read(struct spu_context *ctx,
                                char __user *buf, size_t len, loff_t *pos)
  {
  static ssize_t __spufs_ibox_info_read(struct spu_context *ctx,
                                char __user *buf, size_t len, loff_t *pos)
  {
  
        return simple_read_from_buffer(buf, len, pos, &data, sizeof data);
  }
  
        return simple_read_from_buffer(buf, len, pos, &data, sizeof data);
  }
-@@ -1835,7 +2086,9 @@
+@@ -1835,7 +2086,9 @@ static ssize_t spufs_ibox_info_read(stru
        if (!access_ok(VERIFY_WRITE, buf, len))
                return -EFAULT;
  
        if (!access_ok(VERIFY_WRITE, buf, len))
                return -EFAULT;
  
        spin_lock(&ctx->csa.register_lock);
        ret = __spufs_ibox_info_read(ctx, buf, len, pos);
        spin_unlock(&ctx->csa.register_lock);
        spin_lock(&ctx->csa.register_lock);
        ret = __spufs_ibox_info_read(ctx, buf, len, pos);
        spin_unlock(&ctx->csa.register_lock);
-@@ -1876,7 +2129,9 @@
+@@ -1876,7 +2129,9 @@ static ssize_t spufs_wbox_info_read(stru
        if (!access_ok(VERIFY_WRITE, buf, len))
                return -EFAULT;
  
        if (!access_ok(VERIFY_WRITE, buf, len))
                return -EFAULT;
  
        spin_lock(&ctx->csa.register_lock);
        ret = __spufs_wbox_info_read(ctx, buf, len, pos);
        spin_unlock(&ctx->csa.register_lock);
        spin_lock(&ctx->csa.register_lock);
        ret = __spufs_wbox_info_read(ctx, buf, len, pos);
        spin_unlock(&ctx->csa.register_lock);
-@@ -1926,7 +2181,9 @@
+@@ -1926,7 +2181,9 @@ static ssize_t spufs_dma_info_read(struc
        if (!access_ok(VERIFY_WRITE, buf, len))
                return -EFAULT;
  
        if (!access_ok(VERIFY_WRITE, buf, len))
                return -EFAULT;
  
        spin_lock(&ctx->csa.register_lock);
        ret = __spufs_dma_info_read(ctx, buf, len, pos);
        spin_unlock(&ctx->csa.register_lock);
        spin_lock(&ctx->csa.register_lock);
        ret = __spufs_dma_info_read(ctx, buf, len, pos);
        spin_unlock(&ctx->csa.register_lock);
-@@ -1977,7 +2234,9 @@
+@@ -1977,7 +2234,9 @@ static ssize_t spufs_proxydma_info_read(
        struct spu_context *ctx = file->private_data;
        int ret;
  
        struct spu_context *ctx = file->private_data;
        int ret;
  
        spin_lock(&ctx->csa.register_lock);
        ret = __spufs_proxydma_info_read(ctx, buf, len, pos);
        spin_unlock(&ctx->csa.register_lock);
        spin_lock(&ctx->csa.register_lock);
        ret = __spufs_proxydma_info_read(ctx, buf, len, pos);
        spin_unlock(&ctx->csa.register_lock);
-@@ -2066,8 +2325,12 @@
+@@ -2066,8 +2325,12 @@ static unsigned long long spufs_class2_i
  static int spufs_show_stat(struct seq_file *s, void *private)
  {
        struct spu_context *ctx = s->private;
  static int spufs_show_stat(struct seq_file *s, void *private)
  {
        struct spu_context *ctx = s->private;
                ctx_state_names[ctx->stats.util_state],
 --- a/arch/powerpc/platforms/cell/spufs/hw_ops.c
 +++ b/arch/powerpc/platforms/cell/spufs/hw_ops.c
                ctx_state_names[ctx->stats.util_state],
 --- a/arch/powerpc/platforms/cell/spufs/hw_ops.c
 +++ b/arch/powerpc/platforms/cell/spufs/hw_ops.c
-@@ -76,16 +76,18 @@
+@@ -76,16 +76,18 @@ static unsigned int spu_hw_mbox_stat_pol
                if (stat & 0xff0000)
                        ret |= POLLIN | POLLRDNORM;
                else {
                if (stat & 0xff0000)
                        ret |= POLLIN | POLLRDNORM;
                else {
                }
        }
        spin_unlock_irq(&spu->register_lock);
                }
        }
        spin_unlock_irq(&spu->register_lock);
-@@ -106,7 +108,7 @@
+@@ -106,7 +108,7 @@ static int spu_hw_ibox_read(struct spu_c
                ret = 4;
        } else {
                /* make sure we get woken up by the interrupt */
                ret = 4;
        } else {
                /* make sure we get woken up by the interrupt */
                ret = 0;
        }
        spin_unlock_irq(&spu->register_lock);
                ret = 0;
        }
        spin_unlock_irq(&spu->register_lock);
-@@ -127,7 +129,7 @@
+@@ -127,7 +129,7 @@ static int spu_hw_wbox_write(struct spu_
        } else {
                /* make sure we get woken up by the interrupt when space
                   becomes available */
        } else {
                /* make sure we get woken up by the interrupt when space
                   becomes available */
                ret = 0;
        }
        spin_unlock_irq(&spu->register_lock);
                ret = 0;
        }
        spin_unlock_irq(&spu->register_lock);
-@@ -206,6 +208,11 @@
+@@ -206,6 +208,11 @@ static char *spu_hw_get_ls(struct spu_co
        return ctx->spu->local_store;
  }
  
        return ctx->spu->local_store;
  }
  
  static u32 spu_hw_runcntl_read(struct spu_context *ctx)
  {
        return in_be32(&ctx->spu->problem->spu_runcntl_RW);
  static u32 spu_hw_runcntl_read(struct spu_context *ctx)
  {
        return in_be32(&ctx->spu->problem->spu_runcntl_RW);
-@@ -215,11 +222,21 @@
+@@ -215,11 +222,21 @@ static void spu_hw_runcntl_write(struct 
  {
        spin_lock_irq(&ctx->spu->register_lock);
        if (val & SPU_RUNCNTL_ISOLATE)
  {
        spin_lock_irq(&ctx->spu->register_lock);
        if (val & SPU_RUNCNTL_ISOLATE)
  static void spu_hw_master_start(struct spu_context *ctx)
  {
        struct spu *spu = ctx->spu;
  static void spu_hw_master_start(struct spu_context *ctx)
  {
        struct spu *spu = ctx->spu;
-@@ -319,8 +336,10 @@
+@@ -319,8 +336,10 @@ struct spu_context_ops spu_hw_ops = {
        .npc_write = spu_hw_npc_write,
        .status_read = spu_hw_status_read,
        .get_ls = spu_hw_get_ls,
        .npc_write = spu_hw_npc_write,
        .status_read = spu_hw_status_read,
        .get_ls = spu_hw_get_ls,
  static int spu_alloc_lscsa_std(struct spu_state *csa)
  {
        struct spu_lscsa *lscsa;
  static int spu_alloc_lscsa_std(struct spu_state *csa)
  {
        struct spu_lscsa *lscsa;
-@@ -73,7 +75,7 @@
+@@ -73,7 +75,7 @@ int spu_alloc_lscsa(struct spu_state *cs
        int             i, j, n_4k;
  
        /* Check availability of 64K pages */
        int             i, j, n_4k;
  
        /* Check availability of 64K pages */
        csa->use_big_pages = 1;
 --- a/arch/powerpc/platforms/cell/spufs/run.c
 +++ b/arch/powerpc/platforms/cell/spufs/run.c
        csa->use_big_pages = 1;
 --- a/arch/powerpc/platforms/cell/spufs/run.c
 +++ b/arch/powerpc/platforms/cell/spufs/run.c
-@@ -15,24 +15,55 @@
+@@ -15,24 +15,55 @@ void spufs_stop_callback(struct spu *spu
  {
        struct spu_context *ctx = spu->ctx;
  
  {
        struct spu_context *ctx = spu->ctx;
  
  }
  
  static int spu_setup_isolated(struct spu_context *ctx)
  }
  
  static int spu_setup_isolated(struct spu_context *ctx)
-@@ -128,34 +159,66 @@
+@@ -128,34 +159,66 @@ out:
  
  static int spu_run_init(struct spu_context *ctx, u32 *npc)
  {
  
  static int spu_run_init(struct spu_context *ctx, u32 *npc)
  {
  
        return 0;
  }
  
        return 0;
  }
-@@ -165,6 +228,8 @@
+@@ -165,6 +228,8 @@ static int spu_run_fini(struct spu_conte
  {
        int ret = 0;
  
  {
        int ret = 0;
  
        *status = ctx->ops->status_read(ctx);
        *npc = ctx->ops->npc_read(ctx);
  
        *status = ctx->ops->status_read(ctx);
        *npc = ctx->ops->npc_read(ctx);
  
-@@ -177,26 +242,6 @@
+@@ -177,26 +242,6 @@ static int spu_run_fini(struct spu_conte
        return ret;
  }
  
        return ret;
  }
  
  /*
   * SPU syscall restarting is tricky because we violate the basic
   * assumption that the signal handler is running on the interrupted
  /*
   * SPU syscall restarting is tricky because we violate the basic
   * assumption that the signal handler is running on the interrupted
-@@ -247,7 +292,7 @@
+@@ -247,7 +292,7 @@ static int spu_process_callback(struct s
        u32 ls_pointer, npc;
        void __iomem *ls;
        long spu_ret;
        u32 ls_pointer, npc;
        void __iomem *ls;
        long spu_ret;
  
        /* get syscall block from local store */
        npc = ctx->ops->npc_read(ctx) & ~3;
  
        /* get syscall block from local store */
        npc = ctx->ops->npc_read(ctx) & ~3;
-@@ -269,9 +314,11 @@
+@@ -269,9 +314,11 @@ static int spu_process_callback(struct s
                if (spu_ret <= -ERESTARTSYS) {
                        ret = spu_handle_restartsys(ctx, &spu_ret, &npc);
                }
                if (spu_ret <= -ERESTARTSYS) {
                        ret = spu_handle_restartsys(ctx, &spu_ret, &npc);
                }
        }
  
        /* write result, jump over indirect pointer */
        }
  
        /* write result, jump over indirect pointer */
-@@ -281,18 +328,6 @@
+@@ -281,18 +328,6 @@ static int spu_process_callback(struct s
        return ret;
  }
  
        return ret;
  }
  
  long spufs_run_spu(struct spu_context *ctx, u32 *npc, u32 *event)
  {
        int ret;
  long spufs_run_spu(struct spu_context *ctx, u32 *npc, u32 *event)
  {
        int ret;
-@@ -302,29 +337,14 @@
+@@ -302,29 +337,14 @@ long spufs_run_spu(struct spu_context *c
        if (mutex_lock_interruptible(&ctx->run_mutex))
                return -ERESTARTSYS;
  
        if (mutex_lock_interruptible(&ctx->run_mutex))
                return -ERESTARTSYS;
  
  
        ret = spu_run_init(ctx, npc);
        if (ret) {
  
        ret = spu_run_init(ctx, npc);
        if (ret) {
-@@ -358,14 +378,12 @@
+@@ -358,14 +378,12 @@ long spufs_run_spu(struct spu_context *c
                if (ret)
                        break;
  
                if (ret)
                        break;
  
        } while (!ret && !(status & (SPU_STATUS_STOPPED_BY_STOP |
                                      SPU_STATUS_STOPPED_BY_HALT |
                                       SPU_STATUS_SINGLE_STEP)));
        } while (!ret && !(status & (SPU_STATUS_STOPPED_BY_STOP |
                                      SPU_STATUS_STOPPED_BY_HALT |
                                       SPU_STATUS_SINGLE_STEP)));
-@@ -376,11 +394,10 @@
+@@ -376,11 +394,10 @@ long spufs_run_spu(struct spu_context *c
                ctx->stats.libassist++;
  
  
                ctx->stats.libassist++;
  
  
        if ((ret == 0) ||
            ((ret == -ERESTARTSYS) &&
             ((status & SPU_STATUS_STOPPED_BY_HALT) ||
        if ((ret == 0) ||
            ((ret == -ERESTARTSYS) &&
             ((status & SPU_STATUS_STOPPED_BY_HALT) ||
-@@ -401,6 +418,7 @@
+@@ -401,6 +418,7 @@ out2:
  
  out:
        *event = ctx->event_return;
  
  out:
        *event = ctx->event_return;
  }
 --- a/arch/powerpc/platforms/cell/spufs/sched.c
 +++ b/arch/powerpc/platforms/cell/spufs/sched.c
  }
 --- a/arch/powerpc/platforms/cell/spufs/sched.c
 +++ b/arch/powerpc/platforms/cell/spufs/sched.c
-@@ -58,6 +58,7 @@
+@@ -58,6 +58,7 @@ static unsigned long spu_avenrun[3];
  static struct spu_prio_array *spu_prio;
  static struct task_struct *spusched_task;
  static struct timer_list spusched_timer;
  static struct spu_prio_array *spu_prio;
  static struct task_struct *spusched_task;
  static struct timer_list spusched_timer;
  
  /*
   * Priority of a normal, non-rt, non-niced'd process (aka nice level 0).
  
  /*
   * Priority of a normal, non-rt, non-niced'd process (aka nice level 0).
-@@ -105,15 +106,21 @@
+@@ -105,15 +106,21 @@ void spu_set_timeslice(struct spu_contex
  void __spu_update_sched_info(struct spu_context *ctx)
  {
        /*
  void __spu_update_sched_info(struct spu_context *ctx)
  {
        /*
         * contains junk for threads with a realtime scheduling
         * policy so we have to look at ->prio in this case.
         */
         * contains junk for threads with a realtime scheduling
         * policy so we have to look at ->prio in this case.
         */
-@@ -124,23 +131,32 @@
+@@ -124,23 +131,32 @@ void __spu_update_sched_info(struct spu_
        ctx->policy = current->policy;
  
        /*
        ctx->policy = current->policy;
  
        /*
  }
  
  static int __node_allowed(struct spu_context *ctx, int node)
  }
  
  static int __node_allowed(struct spu_context *ctx, int node)
-@@ -174,7 +190,7 @@
+@@ -174,7 +190,7 @@ void do_notify_spus_active(void)
         * Wake up the active spu_contexts.
         *
         * When the awakened processes see their "notify_active" flag is set,
         * Wake up the active spu_contexts.
         *
         * When the awakened processes see their "notify_active" flag is set,
         */
        for_each_online_node(node) {
                struct spu *spu;
         */
        for_each_online_node(node) {
                struct spu *spu;
-@@ -221,7 +237,6 @@
+@@ -221,7 +237,6 @@ static void spu_bind_context(struct spu 
        spu->wbox_callback = spufs_wbox_callback;
        spu->stop_callback = spufs_stop_callback;
        spu->mfc_callback = spufs_mfc_callback;
        spu->wbox_callback = spufs_wbox_callback;
        spu->stop_callback = spufs_stop_callback;
        spu->mfc_callback = spufs_mfc_callback;
        mb();
        spu_unmap_mappings(ctx);
        spu_restore(&ctx->csa, spu);
        mb();
        spu_unmap_mappings(ctx);
        spu_restore(&ctx->csa, spu);
-@@ -409,7 +424,6 @@
+@@ -409,7 +424,6 @@ static void spu_unbind_context(struct sp
        spu->wbox_callback = NULL;
        spu->stop_callback = NULL;
        spu->mfc_callback = NULL;
        spu->wbox_callback = NULL;
        spu->stop_callback = NULL;
        spu->mfc_callback = NULL;
        spu_associate_mm(spu, NULL);
        spu->pid = 0;
        spu->tgid = 0;
        spu_associate_mm(spu, NULL);
        spu->pid = 0;
        spu->tgid = 0;
-@@ -454,6 +468,13 @@
+@@ -454,6 +468,13 @@ static void __spu_add_to_rq(struct spu_c
        }
  }
  
        }
  }
  
  static void __spu_del_from_rq(struct spu_context *ctx)
  {
        int prio = ctx->prio;
  static void __spu_del_from_rq(struct spu_context *ctx)
  {
        int prio = ctx->prio;
-@@ -468,10 +489,24 @@
+@@ -468,10 +489,24 @@ static void __spu_del_from_rq(struct spu
        }
  }
  
        }
  }
  
        spin_lock(&spu_prio->runq_lock);
        prepare_to_wait_exclusive(&ctx->stop_wq, &wait, TASK_INTERRUPTIBLE);
        if (!signal_pending(current)) {
        spin_lock(&spu_prio->runq_lock);
        prepare_to_wait_exclusive(&ctx->stop_wq, &wait, TASK_INTERRUPTIBLE);
        if (!signal_pending(current)) {
-@@ -555,7 +590,7 @@
+@@ -555,7 +590,7 @@ static struct spu *find_victim(struct sp
        /*
         * Look for a possible preemption candidate on the local node first.
         * If there is no candidate look at the other nodes.  This isn't
        /*
         * Look for a possible preemption candidate on the local node first.
         * If there is no candidate look at the other nodes.  This isn't
         * a strong node affinity.  We might want to fine-tune this in
         * the future.
         */
         * a strong node affinity.  We might want to fine-tune this in
         * the future.
         */
-@@ -571,6 +606,7 @@
+@@ -571,6 +606,7 @@ static struct spu *find_victim(struct sp
                        struct spu_context *tmp = spu->ctx;
  
                        if (tmp && tmp->prio > ctx->prio &&
                        struct spu_context *tmp = spu->ctx;
  
                        if (tmp && tmp->prio > ctx->prio &&
                            (!victim || tmp->prio > victim->prio))
                                victim = spu->ctx;
                }
                            (!victim || tmp->prio > victim->prio))
                                victim = spu->ctx;
                }
-@@ -582,6 +618,10 @@
+@@ -582,6 +618,10 @@ static struct spu *find_victim(struct sp
                         * higher priority contexts before lower priority
                         * ones, so this is safe until we introduce
                         * priority inheritance schemes.
                         * higher priority contexts before lower priority
                         * ones, so this is safe until we introduce
                         * priority inheritance schemes.
                         */
                        if (!mutex_trylock(&victim->state_mutex)) {
                                victim = NULL;
                         */
                        if (!mutex_trylock(&victim->state_mutex)) {
                                victim = NULL;
-@@ -589,10 +629,10 @@
+@@ -589,10 +629,10 @@ static struct spu *find_victim(struct sp
                        }
  
                        spu = victim->spu;
                        }
  
                        spu = victim->spu;
                                 * restart the search.
                                 */
                                mutex_unlock(&victim->state_mutex);
                                 * restart the search.
                                 */
                                mutex_unlock(&victim->state_mutex);
-@@ -607,13 +647,10 @@
+@@ -607,13 +647,10 @@ static struct spu *find_victim(struct sp
  
                        victim->stats.invol_ctx_switch++;
                        spu->stats.invol_ctx_switch++;
  
                        victim->stats.invol_ctx_switch++;
                        spu->stats.invol_ctx_switch++;
                        return spu;
                }
        }
                        return spu;
                }
        }
-@@ -621,6 +658,50 @@
+@@ -621,6 +658,50 @@ static struct spu *find_victim(struct sp
        return NULL;
  }
  
        return NULL;
  }
  
  /**
   * spu_activate - find a free spu for a context and execute it
   * @ctx:      spu context to schedule
  /**
   * spu_activate - find a free spu for a context and execute it
   * @ctx:      spu context to schedule
-@@ -632,39 +713,47 @@
+@@ -632,39 +713,47 @@ static struct spu *find_victim(struct sp
   */
  int spu_activate(struct spu_context *ctx, unsigned long flags)
  {
   */
  int spu_activate(struct spu_context *ctx, unsigned long flags)
  {
  }
  
  /**
  }
  
  /**
-@@ -706,21 +795,19 @@
+@@ -706,21 +795,19 @@ static int __spu_deactivate(struct spu_c
        if (spu) {
                new = grab_runnable_context(max_prio, spu->node);
                if (new || force) {
        if (spu) {
                new = grab_runnable_context(max_prio, spu->node);
                if (new || force) {
        }
  
        return new != NULL;
        }
  
        return new != NULL;
-@@ -757,43 +844,38 @@
+@@ -757,43 +844,38 @@ void spu_yield(struct spu_context *ctx)
  
  static noinline void spusched_tick(struct spu_context *ctx)
  {
  
  static noinline void spusched_tick(struct spu_context *ctx)
  {
  }
  
  /**
  }
  
  /**
-@@ -817,35 +899,31 @@
+@@ -817,35 +899,31 @@ static unsigned long count_active_contex
  }
  
  /**
  }
  
  /**
  }
  
  static int spusched_thread(void *unused)
  }
  
  static int spusched_thread(void *unused)
-@@ -857,17 +935,58 @@
+@@ -857,17 +935,58 @@ static int spusched_thread(void *unused)
                set_current_state(TASK_INTERRUPTIBLE);
                schedule();
                for (node = 0; node < MAX_NUMNODES; node++) {
                set_current_state(TASK_INTERRUPTIBLE);
                schedule();
                for (node = 0; node < MAX_NUMNODES; node++) {
  #define LOAD_INT(x) ((x) >> FSHIFT)
  #define LOAD_FRAC(x) LOAD_INT(((x) & (FIXED_1-1)) * 100)
  
  #define LOAD_INT(x) ((x) >> FSHIFT)
  #define LOAD_FRAC(x) LOAD_INT(((x) & (FIXED_1-1)) * 100)
  
-@@ -881,7 +1000,7 @@
+@@ -881,7 +1000,7 @@ static int show_spu_loadavg(struct seq_f
  
        /*
         * Note that last_pid doesn't really make much sense for the
  
        /*
         * Note that last_pid doesn't really make much sense for the
         * but we include it here to have a 100% compatible interface.
         */
        seq_printf(s, "%d.%02d %d.%02d %d.%02d %ld/%d %d\n",
         * but we include it here to have a 100% compatible interface.
         */
        seq_printf(s, "%d.%02d %d.%02d %d.%02d %ld/%d %d\n",
-@@ -922,6 +1041,7 @@
+@@ -922,6 +1041,7 @@ int __init spu_sched_init(void)
        spin_lock_init(&spu_prio->runq_lock);
  
        setup_timer(&spusched_timer, spusched_wake, 0);
        spin_lock_init(&spu_prio->runq_lock);
  
        setup_timer(&spusched_timer, spusched_wake, 0);
  
        spusched_task = kthread_run(spusched_thread, NULL, "spusched");
        if (IS_ERR(spusched_task)) {
  
        spusched_task = kthread_run(spusched_thread, NULL, "spusched");
        if (IS_ERR(spusched_task)) {
-@@ -929,6 +1049,8 @@
+@@ -929,6 +1049,8 @@ int __init spu_sched_init(void)
                goto out_free_spu_prio;
        }
  
                goto out_free_spu_prio;
        }
  
        entry = create_proc_entry("spu_loadavg", 0, NULL);
        if (!entry)
                goto out_stop_kthread;
        entry = create_proc_entry("spu_loadavg", 0, NULL);
        if (!entry)
                goto out_stop_kthread;
-@@ -954,6 +1076,7 @@
+@@ -954,6 +1076,7 @@ void spu_sched_exit(void)
        remove_proc_entry("spu_loadavg", NULL);
  
        del_timer_sync(&spusched_timer);
        remove_proc_entry("spu_loadavg", NULL);
  
        del_timer_sync(&spusched_timer);
        for (node = 0; node < MAX_NUMNODES; node++) {
 --- a/arch/powerpc/platforms/cell/spufs/spufs.h
 +++ b/arch/powerpc/platforms/cell/spufs/spufs.h
        for (node = 0; node < MAX_NUMNODES; node++) {
 --- a/arch/powerpc/platforms/cell/spufs/spufs.h
 +++ b/arch/powerpc/platforms/cell/spufs/spufs.h
-@@ -71,6 +71,7 @@
+@@ -71,6 +71,7 @@ struct spu_context {
        wait_queue_head_t wbox_wq;
        wait_queue_head_t stop_wq;
        wait_queue_head_t mfc_wq;
        wait_queue_head_t wbox_wq;
        wait_queue_head_t stop_wq;
        wait_queue_head_t mfc_wq;
        struct fasync_struct *ibox_fasync;
        struct fasync_struct *wbox_fasync;
        struct fasync_struct *mfc_fasync;
        struct fasync_struct *ibox_fasync;
        struct fasync_struct *wbox_fasync;
        struct fasync_struct *mfc_fasync;
-@@ -168,8 +169,10 @@
+@@ -168,8 +169,10 @@ struct spu_context_ops {
        void (*npc_write) (struct spu_context * ctx, u32 data);
         u32(*status_read) (struct spu_context * ctx);
        char*(*get_ls) (struct spu_context * ctx);
        void (*npc_write) (struct spu_context * ctx, u32 data);
         u32(*status_read) (struct spu_context * ctx);
        char*(*get_ls) (struct spu_context * ctx);
        void (*master_start) (struct spu_context * ctx);
        void (*master_stop) (struct spu_context * ctx);
        int (*set_mfc_query)(struct spu_context * ctx, u32 mask, u32 mode);
        void (*master_start) (struct spu_context * ctx);
        void (*master_stop) (struct spu_context * ctx);
        int (*set_mfc_query)(struct spu_context * ctx, u32 mask, u32 mode);
-@@ -219,15 +222,16 @@
+@@ -219,15 +222,16 @@ void spu_gang_add_ctx(struct spu_gang *g
  
  /* fault handling */
  int spufs_handle_class1(struct spu_context *ctx);
  
  /* fault handling */
  int spufs_handle_class1(struct spu_context *ctx);
  }
  
  static inline void spu_release(struct spu_context *ctx)
  }
  
  static inline void spu_release(struct spu_context *ctx)
-@@ -242,10 +246,11 @@
+@@ -242,10 +246,11 @@ int put_spu_context(struct spu_context *
  void spu_unmap_mappings(struct spu_context *ctx);
  
  void spu_forget(struct spu_context *ctx);
  void spu_unmap_mappings(struct spu_context *ctx);
  
  void spu_forget(struct spu_context *ctx);
  int spu_activate(struct spu_context *ctx, unsigned long flags);
  void spu_deactivate(struct spu_context *ctx);
  void spu_yield(struct spu_context *ctx);
  int spu_activate(struct spu_context *ctx, unsigned long flags);
  void spu_deactivate(struct spu_context *ctx);
  void spu_yield(struct spu_context *ctx);
-@@ -279,7 +284,9 @@
+@@ -279,7 +284,9 @@ extern char *isolated_loader;
                }                                                       \
                spu_release(ctx);                                       \
                schedule();                                             \
                }                                                       \
                spu_release(ctx);                                       \
                schedule();                                             \
        }                                                               \
        finish_wait(&(wq), &__wait);                                    \
        __ret;                                                          \
        }                                                               \
        finish_wait(&(wq), &__wait);                                    \
        __ret;                                                          \
-@@ -306,41 +313,16 @@
+@@ -306,41 +313,16 @@ struct spufs_coredump_reader {
  extern struct spufs_coredump_reader spufs_coredump_read[];
  extern int spufs_coredump_num_notes;
  
  extern struct spufs_coredump_reader spufs_coredump_read[];
  extern int spufs_coredump_num_notes;
  
  #include "spu_save_dump.h"
  #include "spu_restore_dump.h"
  
  #include "spu_save_dump.h"
  #include "spu_restore_dump.h"
  
-@@ -691,35 +693,9 @@
+@@ -691,35 +693,9 @@ static inline void resume_mfc_queue(stru
        out_be64(&priv2->mfc_control_RW, MFC_CNTL_RESUME_DMA_QUEUE);
  }
  
        out_be64(&priv2->mfc_control_RW, MFC_CNTL_RESUME_DMA_QUEUE);
  }
  
        /* Save, Step 47:
         * Restore, Step 30.
         *     If MFC_SR1[R]=1, write 0 to SLB_Invalidate_All
        /* Save, Step 47:
         * Restore, Step 30.
         *     If MFC_SR1[R]=1, write 0 to SLB_Invalidate_All
-@@ -735,11 +711,7 @@
+@@ -735,11 +711,7 @@ static inline void setup_mfc_slbs(struct
         *     translation is desired by OS environment).
         */
        spu_invalidate_slbs(spu);
         *     translation is desired by OS environment).
         */
        spu_invalidate_slbs(spu);
  }
  
  static inline void set_switch_active(struct spu_state *csa, struct spu *spu)
  }
  
  static inline void set_switch_active(struct spu_state *csa, struct spu *spu)
-@@ -768,9 +740,9 @@
+@@ -768,9 +740,9 @@ static inline void enable_interrupts(str
         *     (translation) interrupts.
         */
        spin_lock_irq(&spu->register_lock);
         *     (translation) interrupts.
         */
        spin_lock_irq(&spu->register_lock);
        spu_int_mask_set(spu, 0, 0ul);
        spu_int_mask_set(spu, 1, class1_mask);
        spu_int_mask_set(spu, 2, 0ul);
        spu_int_mask_set(spu, 0, 0ul);
        spu_int_mask_set(spu, 1, class1_mask);
        spu_int_mask_set(spu, 2, 0ul);
-@@ -927,8 +899,8 @@
+@@ -927,8 +899,8 @@ static inline void wait_tag_complete(str
        POLL_WHILE_FALSE(in_be32(&prob->dma_tagstatus_R) & mask);
  
        local_irq_save(flags);
        POLL_WHILE_FALSE(in_be32(&prob->dma_tagstatus_R) & mask);
  
        local_irq_save(flags);
        local_irq_restore(flags);
  }
  
        local_irq_restore(flags);
  }
  
-@@ -946,8 +918,8 @@
+@@ -946,8 +918,8 @@ static inline void wait_spu_stopped(stru
        POLL_WHILE_TRUE(in_be32(&prob->spu_status_R) & SPU_STATUS_RUNNING);
  
        local_irq_save(flags);
        POLL_WHILE_TRUE(in_be32(&prob->spu_status_R) & SPU_STATUS_RUNNING);
  
        local_irq_save(flags);
        local_irq_restore(flags);
  }
  
        local_irq_restore(flags);
  }
  
-@@ -1423,9 +1395,9 @@
+@@ -1423,9 +1395,9 @@ static inline void clear_interrupts(stru
        spu_int_mask_set(spu, 0, 0ul);
        spu_int_mask_set(spu, 1, 0ul);
        spu_int_mask_set(spu, 2, 0ul);
        spu_int_mask_set(spu, 0, 0ul);
        spu_int_mask_set(spu, 1, 0ul);
        spu_int_mask_set(spu, 2, 0ul);
        spin_unlock_irq(&spu->register_lock);
  }
  
        spin_unlock_irq(&spu->register_lock);
  }
  
-@@ -1866,7 +1838,8 @@
+@@ -1866,7 +1838,8 @@ static void save_lscsa(struct spu_state 
         */
  
        resume_mfc_queue(prev, spu);    /* Step 46. */
         */
  
        resume_mfc_queue(prev, spu);    /* Step 46. */
        set_switch_active(prev, spu);   /* Step 48. */
        enable_interrupts(prev, spu);   /* Step 49. */
        save_ls_16kb(prev, spu);        /* Step 50. */
        set_switch_active(prev, spu);   /* Step 48. */
        enable_interrupts(prev, spu);   /* Step 49. */
        save_ls_16kb(prev, spu);        /* Step 50. */
-@@ -1971,7 +1944,8 @@
+@@ -1971,7 +1944,8 @@ static void restore_lscsa(struct spu_sta
        setup_spu_status_part1(next, spu);      /* Step 27. */
        setup_spu_status_part2(next, spu);      /* Step 28. */
        restore_mfc_rag(next, spu);             /* Step 29. */
        setup_spu_status_part1(next, spu);      /* Step 27. */
        setup_spu_status_part2(next, spu);      /* Step 28. */
        restore_mfc_rag(next, spu);             /* Step 29. */
        set_spu_npc(next, spu);                 /* Step 31. */
        set_signot1(next, spu);                 /* Step 32. */
        set_signot2(next, spu);                 /* Step 33. */
        set_spu_npc(next, spu);                 /* Step 31. */
        set_signot1(next, spu);                 /* Step 32. */
        set_signot2(next, spu);                 /* Step 33. */
-@@ -2103,10 +2077,6 @@
+@@ -2103,10 +2077,6 @@ int spu_save(struct spu_state *prev, str
        int rc;
  
        acquire_spu_lock(spu);          /* Step 1.     */
        int rc;
  
        acquire_spu_lock(spu);          /* Step 1.     */
        rc = __do_spu_save(prev, spu);  /* Steps 2-53. */
        release_spu_lock(spu);
        if (rc != 0 && rc != 2 && rc != 6) {
        rc = __do_spu_save(prev, spu);  /* Steps 2-53. */
        release_spu_lock(spu);
        if (rc != 0 && rc != 2 && rc != 6) {
-@@ -2133,9 +2103,6 @@
+@@ -2133,9 +2103,6 @@ int spu_restore(struct spu_state *new, s
        acquire_spu_lock(spu);
        harvest(NULL, spu);
        spu->slb_replace = 0;
        acquire_spu_lock(spu);
        harvest(NULL, spu);
        spu->slb_replace = 0;
        rc = __do_spu_restore(new, spu);
        release_spu_lock(spu);
        if (rc) {
        rc = __do_spu_restore(new, spu);
        release_spu_lock(spu);
        if (rc) {
-@@ -2215,10 +2182,8 @@
+@@ -2215,10 +2182,8 @@ int spu_init_csa(struct spu_state *csa)
  
        return 0;
  }
  
        return 0;
  }
 -EXPORT_SYMBOL_GPL(spu_fini_csa);
 --- a/arch/powerpc/platforms/celleb/Kconfig
 +++ b/arch/powerpc/platforms/celleb/Kconfig
 -EXPORT_SYMBOL_GPL(spu_fini_csa);
 --- a/arch/powerpc/platforms/celleb/Kconfig
 +++ b/arch/powerpc/platforms/celleb/Kconfig
-@@ -2,6 +2,8 @@
+@@ -2,6 +2,8 @@ config PPC_CELLEB
        bool "Toshiba's Cell Reference Set 'Celleb' Architecture"
        depends on PPC_MULTIPLATFORM && PPC64
        select PPC_CELL
        bool "Toshiba's Cell Reference Set 'Celleb' Architecture"
        depends on PPC_MULTIPLATFORM && PPC64
        select PPC_CELL
  #include <linux/of_device.h>
  #include <linux/irq.h>
  
  #include <linux/of_device.h>
  #include <linux/irq.h>
  
-@@ -222,7 +223,7 @@
+@@ -222,7 +223,7 @@ void __init celleb_pci_add_one(struct pc
                               void (*dummy_read)(struct pci_controller *))
  {
        struct celleb_pci_bus *bus = &celleb_pci_busses[celleb_pci_count];
                               void (*dummy_read)(struct pci_controller *))
  {
        struct celleb_pci_bus *bus = &celleb_pci_busses[celleb_pci_count];
  
        if (celleb_pci_count >= MAX_CELLEB_PCI_BUS) {
                printk(KERN_ERR "Too many pci bridges, workarounds"
  
        if (celleb_pci_count >= MAX_CELLEB_PCI_BUS) {
                printk(KERN_ERR "Too many pci bridges, workarounds"
-@@ -256,13 +257,13 @@
+@@ -256,13 +257,13 @@ int __init celleb_pci_workaround_init(vo
  
        celleb_dummy_page_va = kmalloc(PAGE_SIZE, GFP_KERNEL);
        if (!celleb_dummy_page_va) {
  
        celleb_dummy_page_va = kmalloc(PAGE_SIZE, GFP_KERNEL);
        if (!celleb_dummy_page_va) {
  
  #include "beat_wrapper.h"
  
  
  #include "beat_wrapper.h"
  
-@@ -51,6 +52,8 @@
+@@ -51,6 +52,8 @@ static int __init find_dma_window(u64 *i
        return 0;
  }
  
        return 0;
  }
  
  static void __init celleb_init_direct_mapping(void)
  {
        u64 lpar_addr, io_addr;
  static void __init celleb_init_direct_mapping(void)
  {
        u64 lpar_addr, io_addr;
-@@ -68,7 +71,18 @@
+@@ -68,7 +71,18 @@ static void __init celleb_init_direct_ma
                                     ioid, DMA_FLAGS);
        }
  
                                     ioid, DMA_FLAGS);
        }
  
  }
  
  static int celleb_of_bus_notify(struct notifier_block *nb,
  }
  
  static int celleb_of_bus_notify(struct notifier_block *nb,
-@@ -80,7 +94,7 @@
+@@ -80,7 +94,7 @@ static int celleb_of_bus_notify(struct n
        if (action != BUS_NOTIFY_ADD_DEVICE)
                return 0;
  
        if (action != BUS_NOTIFY_ADD_DEVICE)
                return 0;
  
  
        return 0;
  }
  
        return 0;
  }
-@@ -91,14 +105,12 @@
+@@ -91,14 +105,12 @@ static struct notifier_block celleb_of_b
  
  static int __init celleb_init_iommu(void)
  {
  
  static int __init celleb_init_iommu(void)
  {
  #include <linux/of_device.h>
  
  #include <asm/io.h>
  #include <linux/of_device.h>
  
  #include <asm/io.h>
-@@ -138,8 +139,6 @@
+@@ -138,8 +139,6 @@ static void celleb_config_read_fake(unsi
                *val = celleb_fake_config_readl(p);
                break;
        }
                *val = celleb_fake_config_readl(p);
                break;
        }
  }
  
  static void celleb_config_write_fake(unsigned char *config, int where,
  }
  
  static void celleb_config_write_fake(unsigned char *config, int where,
-@@ -158,7 +157,6 @@
+@@ -158,7 +157,6 @@ static void celleb_config_write_fake(uns
                celleb_fake_config_writel(val, p);
                break;
        }
                celleb_fake_config_writel(val, p);
                break;
        }
  }
  
  static int celleb_fake_pci_read_config(struct pci_bus *bus,
  }
  
  static int celleb_fake_pci_read_config(struct pci_bus *bus,
-@@ -351,6 +349,10 @@
+@@ -351,6 +349,10 @@ static int __init celleb_setup_fake_pci_
        wi1 = of_get_property(node, "vendor-id", NULL);
        wi2 = of_get_property(node, "class-code", NULL);
        wi3 = of_get_property(node, "revision-id", NULL);
        wi1 = of_get_property(node, "vendor-id", NULL);
        wi2 = of_get_property(node, "class-code", NULL);
        wi3 = of_get_property(node, "revision-id", NULL);
  
        celleb_config_write_fake(*config, PCI_DEVICE_ID, 2, wi0[0] & 0xffff);
        celleb_config_write_fake(*config, PCI_VENDOR_ID, 2, wi1[0] & 0xffff);
  
        celleb_config_write_fake(*config, PCI_DEVICE_ID, 2, wi0[0] & 0xffff);
        celleb_config_write_fake(*config, PCI_VENDOR_ID, 2, wi1[0] & 0xffff);
-@@ -372,6 +374,10 @@
+@@ -372,6 +374,10 @@ static int __init celleb_setup_fake_pci_
        celleb_setup_pci_base_addrs(hose, devno, fn, num_base_addr);
  
        li = of_get_property(node, "interrupts", &rlen);
        celleb_setup_pci_base_addrs(hose, devno, fn, num_base_addr);
  
        li = of_get_property(node, "interrupts", &rlen);
        val = li[0];
        celleb_config_write_fake(*config, PCI_INTERRUPT_PIN, 1, 1);
        celleb_config_write_fake(*config, PCI_INTERRUPT_LINE, 1, val);
        val = li[0];
        celleb_config_write_fake(*config, PCI_INTERRUPT_PIN, 1, 1);
        celleb_config_write_fake(*config, PCI_INTERRUPT_LINE, 1, val);
-@@ -475,7 +481,7 @@
+@@ -475,7 +481,7 @@ static struct of_device_id celleb_phb_ma
  
  int __init celleb_setup_phb(struct pci_controller *phb)
  {
  
  int __init celleb_setup_phb(struct pci_controller *phb)
  {
  
 --- a/arch/powerpc/platforms/celleb/scc_epci.c
 +++ b/arch/powerpc/platforms/celleb/scc_epci.c
  
 --- a/arch/powerpc/platforms/celleb/scc_epci.c
 +++ b/arch/powerpc/platforms/celleb/scc_epci.c
-@@ -95,7 +95,7 @@
+@@ -95,7 +95,7 @@ void __init epci_workaround_init(struct 
        private->dummy_page_da = dma_map_single(hose->parent,
                celleb_dummy_page_va, PAGE_SIZE, DMA_FROM_DEVICE);
        if (private->dummy_page_da == DMA_ERROR_CODE) {
        private->dummy_page_da = dma_map_single(hose->parent,
                celleb_dummy_page_va, PAGE_SIZE, DMA_FROM_DEVICE);
        if (private->dummy_page_da == DMA_ERROR_CODE) {
        }
 --- a/arch/powerpc/platforms/celleb/scc_uhc.c
 +++ b/arch/powerpc/platforms/celleb/scc_uhc.c
        }
 --- a/arch/powerpc/platforms/celleb/scc_uhc.c
 +++ b/arch/powerpc/platforms/celleb/scc_uhc.c
-@@ -47,7 +47,8 @@
+@@ -47,7 +47,8 @@ static void enable_scc_uhc(struct pci_de
        u32 val = 0;
        int i;
  
        u32 val = 0;
        int i;
  
  
  static char celleb_machine_type[128] = "Celleb";
  
  
  static char celleb_machine_type[128] = "Celleb";
  
-@@ -88,61 +93,122 @@
+@@ -88,61 +93,122 @@ static void celleb_progress(char *s, uns
        printk("*** %04x : %s\n", hex, s ? s : "");
  }
  
        printk("*** %04x : %s\n", hex, s ? s : "");
  }
  
        .show_cpuinfo           = celleb_show_cpuinfo,
        .restart                = beat_restart,
        .power_off              = beat_power_off,
        .show_cpuinfo           = celleb_show_cpuinfo,
        .restart                = beat_restart,
        .power_off              = beat_power_off,
-@@ -167,3 +233,26 @@
+@@ -167,3 +233,26 @@ define_machine(celleb) {
        .machine_crash_shutdown = default_machine_crash_shutdown,
  #endif
  };
        .machine_crash_shutdown = default_machine_crash_shutdown,
  #endif
  };
 +};
 --- a/arch/powerpc/platforms/chrp/pci.c
 +++ b/arch/powerpc/platforms/chrp/pci.c
 +};
 --- a/arch/powerpc/platforms/chrp/pci.c
 +++ b/arch/powerpc/platforms/chrp/pci.c
-@@ -198,7 +198,7 @@
+@@ -198,7 +198,7 @@ static void __init setup_peg2(struct pci
                printk ("RTAS supporting Pegasos OF not found, please upgrade"
                        " your firmware\n");
        }
                printk ("RTAS supporting Pegasos OF not found, please upgrade"
                        " your firmware\n");
        }
  
 --- a/arch/powerpc/platforms/chrp/setup.c
 +++ b/arch/powerpc/platforms/chrp/setup.c
  
 --- a/arch/powerpc/platforms/chrp/setup.c
 +++ b/arch/powerpc/platforms/chrp/setup.c
-@@ -115,7 +115,7 @@
+@@ -115,7 +115,7 @@ void chrp_show_cpuinfo(struct seq_file *
        seq_printf(m, "machine\t\t: CHRP %s\n", model);
  
        /* longtrail (goldengate) stuff */
        seq_printf(m, "machine\t\t: CHRP %s\n", model);
  
        /* longtrail (goldengate) stuff */
                /* VLSI VAS96011/12 `Golden Gate 2' */
                /* Memory banks */
                sdramen = (in_le32(gg2_pci_config_base + GG2_PCI_DRAM_CTRL)
                /* VLSI VAS96011/12 `Golden Gate 2' */
                /* Memory banks */
                sdramen = (in_le32(gg2_pci_config_base + GG2_PCI_DRAM_CTRL)
-@@ -203,15 +203,20 @@
+@@ -203,15 +203,20 @@ static void __init sio_fixup_irq(const c
  static void __init sio_init(void)
  {
        struct device_node *root;
  static void __init sio_init(void)
  {
        struct device_node *root;
        of_node_put(root);
  }
  
        of_node_put(root);
  }
  
-@@ -251,6 +256,57 @@
+@@ -251,6 +256,57 @@ static void briq_restart(char *cmd)
        for(;;);
  }
  
        for(;;);
  }
  
  void __init chrp_setup_arch(void)
  {
        struct device_node *root = of_find_node_by_path("/");
  void __init chrp_setup_arch(void)
  {
        struct device_node *root = of_find_node_by_path("/");
-@@ -594,6 +650,7 @@
+@@ -594,6 +650,7 @@ define_machine(chrp) {
        .probe                  = chrp_probe,
        .setup_arch             = chrp_setup_arch,
        .init                   = chrp_init2,
        .probe                  = chrp_probe,
        .setup_arch             = chrp_setup_arch,
        .init                   = chrp_init2,
        .restart                = rtas_restart,
 --- a/arch/powerpc/platforms/embedded6xx/Kconfig
 +++ b/arch/powerpc/platforms/embedded6xx/Kconfig
        .restart                = rtas_restart,
 --- a/arch/powerpc/platforms/embedded6xx/Kconfig
 +++ b/arch/powerpc/platforms/embedded6xx/Kconfig
-@@ -9,6 +9,8 @@
+@@ -9,6 +9,8 @@ config LINKSTATION
        select FSL_SOC
        select PPC_UDBG_16550 if SERIAL_8250
        select DEFAULT_UIMAGE
        select FSL_SOC
        select PPC_UDBG_16550 if SERIAL_8250
        select DEFAULT_UIMAGE
        help
          Select LINKSTATION if configuring for one of PPC- (MPC8241)
          based NAS systems from Buffalo Technology. So far only
        help
          Select LINKSTATION if configuring for one of PPC- (MPC8241)
          based NAS systems from Buffalo Technology. So far only
-@@ -16,6 +18,19 @@
+@@ -16,6 +18,19 @@ config LINKSTATION
          Linkstation-I HD-HLAN and HD-HGLAN versions, and PPC-based
          Terastation systems should be supported too.
  
          Linkstation-I HD-HLAN and HD-HGLAN versions, and PPC-based
          Terastation systems should be supported too.
  
  config MPC7448HPC2
        bool "Freescale MPC7448HPC2(Taiga)"
        depends on EMBEDDED6xx
  config MPC7448HPC2
        bool "Freescale MPC7448HPC2(Taiga)"
        depends on EMBEDDED6xx
-@@ -23,6 +38,7 @@
+@@ -23,6 +38,7 @@ config MPC7448HPC2
        select DEFAULT_UIMAGE
        select PPC_UDBG_16550
        select WANT_DEVICE_TREE
        select DEFAULT_UIMAGE
        select PPC_UDBG_16550
        select WANT_DEVICE_TREE
        help
          Select MPC7448HPC2 if configuring for Freescale MPC7448HPC2 (Taiga)
          platform
        help
          Select MPC7448HPC2 if configuring for Freescale MPC7448HPC2 (Taiga)
          platform
-@@ -33,6 +49,7 @@
+@@ -33,6 +49,7 @@ config PPC_HOLLY
        select TSI108_BRIDGE
        select PPC_UDBG_16550
        select WANT_DEVICE_TREE
        select TSI108_BRIDGE
        select PPC_UDBG_16550
        select WANT_DEVICE_TREE
        help
          Select PPC_HOLLY if configuring for an IBM 750GX/CL Eval
          Board with TSI108/9 bridge (Hickory/Holly)
        help
          Select PPC_HOLLY if configuring for an IBM 750GX/CL Eval
          Board with TSI108/9 bridge (Hickory/Holly)
-@@ -48,17 +65,13 @@
+@@ -48,17 +65,13 @@ config PPC_PRPMC2800
  
  config TSI108_BRIDGE
        bool
  
  config TSI108_BRIDGE
        bool
  
  config MV64X60
        bool
  
  config MV64X60
        bool
-@@ -67,8 +80,6 @@
+@@ -67,8 +80,6 @@ config MV64X60
  
  config MPC10X_OPENPIC
        bool
  
  config MPC10X_OPENPIC
        bool
 +};
 --- a/arch/powerpc/platforms/iseries/Makefile
 +++ b/arch/powerpc/platforms/iseries/Makefile
 +};
 --- a/arch/powerpc/platforms/iseries/Makefile
 +++ b/arch/powerpc/platforms/iseries/Makefile
-@@ -5,7 +5,7 @@
+@@ -5,7 +5,7 @@ extra-y += dt.o
  obj-y += exception.o
  obj-y += hvlog.o hvlpconfig.o lpardata.o setup.o dt_mod.o mf.o lpevents.o \
        hvcall.o proc.o htab.o iommu.o misc.o irq.o
  obj-y += exception.o
  obj-y += hvlog.o hvlpconfig.o lpardata.o setup.o dt_mod.o mf.o lpevents.o \
        hvcall.o proc.o htab.o iommu.o misc.o irq.o
  obj-$(CONFIG_MODULES) += ksyms.o
 --- a/arch/powerpc/platforms/iseries/iommu.c
 +++ b/arch/powerpc/platforms/iseries/iommu.c
  obj-$(CONFIG_MODULES) += ksyms.o
 --- a/arch/powerpc/platforms/iseries/iommu.c
 +++ b/arch/powerpc/platforms/iseries/iommu.c
-@@ -163,8 +163,10 @@
+@@ -163,8 +163,10 @@ static struct iommu_table *iommu_table_f
                    (it->it_type == TCE_PCI) &&
                    (it->it_offset == tbl->it_offset) &&
                    (it->it_index == tbl->it_index) &&
                    (it->it_type == TCE_PCI) &&
                    (it->it_offset == tbl->it_offset) &&
                    (it->it_index == tbl->it_index) &&
  }
 --- a/arch/powerpc/platforms/iseries/lpevents.c
 +++ b/arch/powerpc/platforms/iseries/lpevents.c
  }
 --- a/arch/powerpc/platforms/iseries/lpevents.c
 +++ b/arch/powerpc/platforms/iseries/lpevents.c
-@@ -239,7 +239,7 @@
+@@ -239,7 +239,7 @@ int HvLpEvent_unregisterHandler(HvLpEven
                         * other CPUs, and that the deleted handler isn't
                         * still running on another CPU when we return.
                         */
                         * other CPUs, and that the deleted handler isn't
                         * still running on another CPU when we return.
                         */
  
  /*
   * Table defines
  
  /*
   * Table defines
-@@ -62,6 +62,7 @@
+@@ -62,6 +62,7 @@ static struct pci_ops iSeries_pci_ops;
  #define IOMM_TABLE_MAX_ENTRIES        1024
  #define IOMM_TABLE_ENTRY_SIZE 0x0000000000400000UL
  #define BASE_IO_MEMORY                0xE000000000000000UL
  #define IOMM_TABLE_MAX_ENTRIES        1024
  #define IOMM_TABLE_ENTRY_SIZE 0x0000000000400000UL
  #define BASE_IO_MEMORY                0xE000000000000000UL
  
  static unsigned long max_io_memory = BASE_IO_MEMORY;
  static long current_iomm_table_entry;
  
  static unsigned long max_io_memory = BASE_IO_MEMORY;
  static long current_iomm_table_entry;
-@@ -70,12 +71,237 @@
+@@ -70,12 +71,237 @@ static long current_iomm_table_entry;
   * Lookup Tables.
   */
  static struct device_node *iomm_table[IOMM_TABLE_MAX_ENTRIES];
   * Lookup Tables.
   */
  static struct device_node *iomm_table[IOMM_TABLE_MAX_ENTRIES];
   * iomm_table_allocate_entry
   *
   * Adds pci_dev entry in address translation table
   * iomm_table_allocate_entry
   *
   * Adds pci_dev entry in address translation table
-@@ -87,7 +313,7 @@
+@@ -87,7 +313,7 @@ static DEFINE_SPINLOCK(iomm_table_lock);
   * - CurrentIndex is incremented to keep track of the last entry.
   * - Builds the resource entry for allocated BARs.
   */
   * - CurrentIndex is incremented to keep track of the last entry.
   * - Builds the resource entry for allocated BARs.
   */
  {
        struct resource *bar_res = &dev->resource[bar_num];
        long bar_size = pci_resource_len(dev, bar_num);
  {
        struct resource *bar_res = &dev->resource[bar_num];
        long bar_size = pci_resource_len(dev, bar_num);
-@@ -101,7 +327,6 @@
+@@ -101,7 +327,6 @@ static void iomm_table_allocate_entry(st
         * Set Resource values.
         */
        spin_lock(&iomm_table_lock);
         * Set Resource values.
         */
        spin_lock(&iomm_table_lock);
        bar_res->start = BASE_IO_MEMORY +
                IOMM_TABLE_ENTRY_SIZE * current_iomm_table_entry;
        bar_res->end = bar_res->start + bar_size - 1;
        bar_res->start = BASE_IO_MEMORY +
                IOMM_TABLE_ENTRY_SIZE * current_iomm_table_entry;
        bar_res->end = bar_res->start + bar_size - 1;
-@@ -110,7 +335,8 @@
+@@ -110,7 +335,8 @@ static void iomm_table_allocate_entry(st
         */
        while (bar_size > 0 ) {
                iomm_table[current_iomm_table_entry] = dev->sysdata;
         */
        while (bar_size > 0 ) {
                iomm_table[current_iomm_table_entry] = dev->sysdata;
                bar_size -= IOMM_TABLE_ENTRY_SIZE;
                ++current_iomm_table_entry;
        }
                bar_size -= IOMM_TABLE_ENTRY_SIZE;
                ++current_iomm_table_entry;
        }
-@@ -130,7 +356,7 @@
+@@ -130,7 +356,7 @@ static void iomm_table_allocate_entry(st
   * - Loops through The Bar resources(0 - 5) including the ROM
   *   is resource(6).
   */
   * - Loops through The Bar resources(0 - 5) including the ROM
   *   is resource(6).
   */
  {
        int bar_num;
  
  {
        int bar_num;
  
-@@ -145,79 +371,19 @@
+@@ -145,79 +371,19 @@ static void allocate_device_bars(struct 
   * PCI: Read Vendor Failed 0x18.58.10 Rc: 0x00xx
   * PCI: Connect Bus Unit Failed 0x18.58.10 Rc: 0x00xx
   */
   * PCI: Read Vendor Failed 0x18.58.10 Rc: 0x00xx
   * PCI: Connect Bus Unit Failed 0x18.58.10 Rc: 0x00xx
   */
  {
        struct device_node *node;
  
  {
        struct device_node *node;
  
-@@ -230,22 +396,66 @@
+@@ -230,22 +396,66 @@ static struct device_node *find_Device_N
        return NULL;
  }
  
        return NULL;
  }
  
  
  /*
   * Config space read and write functions.
  
  /*
   * Config space read and write functions.
-@@ -269,7 +479,7 @@
+@@ -269,7 +479,7 @@ static u64 hv_cfg_write_func[4] = {
  static int iSeries_pci_read_config(struct pci_bus *bus, unsigned int devfn,
                int offset, int size, u32 *val)
  {
  static int iSeries_pci_read_config(struct pci_bus *bus, unsigned int devfn,
                int offset, int size, u32 *val)
  {
        u64 fn;
        struct HvCallPci_LoadReturn ret;
  
        u64 fn;
        struct HvCallPci_LoadReturn ret;
  
-@@ -299,7 +509,7 @@
+@@ -299,7 +509,7 @@ static int iSeries_pci_read_config(struc
  static int iSeries_pci_write_config(struct pci_bus *bus, unsigned int devfn,
                int offset, int size, u32 val)
  {
  static int iSeries_pci_write_config(struct pci_bus *bus, unsigned int devfn,
                int offset, int size, u32 val)
  {
        u64 fn;
        u64 ret;
  
        u64 fn;
        u64 ret;
  
-@@ -331,22 +541,22 @@
+@@ -331,22 +541,22 @@ static struct pci_ops iSeries_pci_ops = 
   * PCI: Device 23.90 ReadL Retry( 1)
   * PCI: Device 23.90 ReadL Retry Successful(1)
   */
   * PCI: Device 23.90 ReadL Retry( 1)
   * PCI: Device 23.90 ReadL Retry Successful(1)
   */
                        mf_display_src(0xB6000103);
                        panic_timeout = 0;
                        panic("PCI: Hardware I/O Error, SRC B6000103, "
                        mf_display_src(0xB6000103);
                        panic_timeout = 0;
                        panic("PCI: Hardware I/O Error, SRC B6000103, "
-@@ -363,28 +573,39 @@
+@@ -363,28 +573,39 @@ static int CheckReturnCode(char *TextHdr
   * the exposure of being device global.
   */
  static inline struct device_node *xlate_iomm_address(
   * the exposure of being device global.
   */
  static inline struct device_node *xlate_iomm_address(
  }
  
  /*
  }
  
  /*
-@@ -392,91 +613,58 @@
+@@ -392,91 +613,58 @@ static inline struct device_node *xlate_
   * On MM I/O error, all ones are returned and iSeries_pci_IoError is cal
   * else, data is returned in Big Endian format.
   */
   * On MM I/O error, all ones are returned and iSeries_pci_IoError is cal
   * else, data is returned in Big Endian format.
   */
  
        return ret.value;
  }
  
        return ret.value;
  }
-@@ -485,134 +673,72 @@
+@@ -485,134 +673,72 @@ static u32 iSeries_Read_Long(const volat
   * Write MM I/O Instructions for the iSeries
   *
   */
   * Write MM I/O Instructions for the iSeries
   *
   */
  }
  
  static void iseries_readsb(const volatile void __iomem *addr, void *buf,
  }
  
  static void iseries_readsb(const volatile void __iomem *addr, void *buf,
-@@ -620,7 +746,7 @@
+@@ -620,7 +746,7 @@ static void iseries_readsb(const volatil
  {
        u8 *dst = buf;
        while(count-- > 0)
  {
        u8 *dst = buf;
        while(count-- > 0)
  }
  
  static void iseries_readsw(const volatile void __iomem *addr, void *buf,
  }
  
  static void iseries_readsw(const volatile void __iomem *addr, void *buf,
-@@ -628,7 +754,7 @@
+@@ -628,7 +754,7 @@ static void iseries_readsw(const volatil
  {
        u16 *dst = buf;
        while(count-- > 0)
  {
        u16 *dst = buf;
        while(count-- > 0)
  }
  
  static void iseries_readsl(const volatile void __iomem *addr, void *buf,
  }
  
  static void iseries_readsl(const volatile void __iomem *addr, void *buf,
-@@ -636,7 +762,7 @@
+@@ -636,7 +762,7 @@ static void iseries_readsl(const volatil
  {
        u32 *dst = buf;
        while(count-- > 0)
  {
        u32 *dst = buf;
        while(count-- > 0)
  }
  
  static void iseries_writesb(volatile void __iomem *addr, const void *buf,
  }
  
  static void iseries_writesb(volatile void __iomem *addr, const void *buf,
-@@ -644,7 +770,7 @@
+@@ -644,7 +770,7 @@ static void iseries_writesb(volatile voi
  {
        const u8 *src = buf;
        while(count-- > 0)
  {
        const u8 *src = buf;
        while(count-- > 0)
  }
  
  static void iseries_writesw(volatile void __iomem *addr, const void *buf,
  }
  
  static void iseries_writesw(volatile void __iomem *addr, const void *buf,
-@@ -652,7 +778,7 @@
+@@ -652,7 +778,7 @@ static void iseries_writesw(volatile voi
  {
        const u16 *src = buf;
        while(count-- > 0)
  {
        const u16 *src = buf;
        while(count-- > 0)
  }
  
  static void iseries_writesl(volatile void __iomem *addr, const void *buf,
  }
  
  static void iseries_writesl(volatile void __iomem *addr, const void *buf,
-@@ -660,7 +786,7 @@
+@@ -660,7 +786,7 @@ static void iseries_writesl(volatile voi
  {
        const u32 *src = buf;
        while(count-- > 0)
  {
        const u32 *src = buf;
        while(count-- > 0)
  }
  
  static void iseries_memset_io(volatile void __iomem *addr, int c,
  }
  
  static void iseries_memset_io(volatile void __iomem *addr, int c,
-@@ -669,7 +795,7 @@
+@@ -669,7 +795,7 @@ static void iseries_memset_io(volatile v
        volatile char __iomem *d = addr;
  
        while (n-- > 0)
        volatile char __iomem *d = addr;
  
        while (n-- > 0)
  }
  
  static void iseries_memcpy_fromio(void *dest, const volatile void __iomem *src,
  }
  
  static void iseries_memcpy_fromio(void *dest, const volatile void __iomem *src,
-@@ -679,7 +805,7 @@
+@@ -679,7 +805,7 @@ static void iseries_memcpy_fromio(void *
        const volatile char __iomem *s = src;
  
        while (n-- > 0)
        const volatile char __iomem *s = src;
  
        while (n-- > 0)
  }
  
  static void iseries_memcpy_toio(volatile void __iomem *dest, const void *src,
  }
  
  static void iseries_memcpy_toio(volatile void __iomem *dest, const void *src,
-@@ -689,7 +815,7 @@
+@@ -689,7 +815,7 @@ static void iseries_memcpy_toio(volatile
        volatile char __iomem *d = dest;
  
        while (n-- > 0)
        volatile char __iomem *d = dest;
  
        while (n-- > 0)
  }
  
  /* We only set MMIO ops. The default PIO ops will be default
  }
  
  /* We only set MMIO ops. The default PIO ops will be default
-@@ -742,6 +868,8 @@
+@@ -742,6 +868,8 @@ void __init iSeries_pcibios_init(void)
        /* Install IO hooks */
        ppc_pci_io = iseries_pci_io;
  
        /* Install IO hooks */
        ppc_pci_io = iseries_pci_io;
  
        /* iSeries has no IO space in the common sense, it needs to set
         * the IO base to 0
         */
        /* iSeries has no IO space in the common sense, it needs to set
         * the IO base to 0
         */
-@@ -767,11 +895,21 @@
+@@ -767,11 +895,21 @@ void __init iSeries_pcibios_init(void)
                phb = pcibios_alloc_controller(node);
                if (phb == NULL)
                        continue;
                phb = pcibios_alloc_controller(node);
                if (phb == NULL)
                        continue;
  /*
   * Decodes Linux DevFn to iSeries DevFn, bridge device, or function.
   * For Linux, see PCI_SLOT and PCI_FUNC in include/linux/pci.h
  /*
   * Decodes Linux DevFn to iSeries DevFn, bridge device, or function.
   * For Linux, see PCI_SLOT and PCI_FUNC in include/linux/pci.h
-@@ -47,17 +43,16 @@
+@@ -47,17 +43,16 @@ struct pci_dev;                            /* For Forward Refere
  #define ISERIES_GET_DEVICE_FROM_SUBBUS(subbus)                ((subbus >> 5) & 0x7)
  #define ISERIES_GET_FUNCTION_FROM_SUBBUS(subbus)      ((subbus >> 2) & 0x7)
  
  #define ISERIES_GET_DEVICE_FROM_SUBBUS(subbus)                ((subbus >> 5) & 0x7)
  #define ISERIES_GET_FUNCTION_FROM_SUBBUS(subbus)      ((subbus >> 2) & 0x7)
  
  
  
  struct MemoryBlock {
  
  
  struct MemoryBlock {
-@@ -112,13 +108,13 @@
+@@ -112,13 +108,13 @@ static unsigned long iSeries_process_Con
         * correctly.
         */
        mb_array[0].logicalStart = 0;
         * correctly.
         */
        mb_array[0].logicalStart = 0;
                holeStart = addr_to_chunk(holeStart);
                holeFirstChunk = holeStart;
                holeSize = addr_to_chunk(holeSize);
                holeStart = addr_to_chunk(holeStart);
                holeFirstChunk = holeStart;
                holeSize = addr_to_chunk(holeSize);
-@@ -128,9 +124,9 @@
+@@ -128,9 +124,9 @@ static unsigned long iSeries_process_Con
                mb_array[0].logicalEnd = holeFirstChunk;
                mb_array[0].absEnd = holeFirstChunk;
                mb_array[1].logicalStart = holeFirstChunk;
                mb_array[0].logicalEnd = holeFirstChunk;
                mb_array[0].absEnd = holeFirstChunk;
                mb_array[1].logicalStart = holeFirstChunk;
        }
        return numMemoryBlocks;
  }
        }
        return numMemoryBlocks;
  }
-@@ -234,9 +230,9 @@
+@@ -234,9 +230,9 @@ static unsigned long iSeries_process_Reg
                                mb_array[i].logicalEnd,
                                mb_array[i].absStart, mb_array[i].absEnd);
                mb_array[i].absStart = addr_to_chunk(mb_array[i].absStart &
                                mb_array[i].logicalEnd,
                                mb_array[i].absStart, mb_array[i].absEnd);
                mb_array[i].absStart = addr_to_chunk(mb_array[i].absStart &
                mb_array[i].logicalStart =
                        addr_to_chunk(mb_array[i].logicalStart);
                mb_array[i].logicalEnd = addr_to_chunk(mb_array[i].logicalEnd);
                mb_array[i].logicalStart =
                        addr_to_chunk(mb_array[i].logicalStart);
                mb_array[i].logicalEnd = addr_to_chunk(mb_array[i].logicalEnd);
-@@ -320,7 +316,7 @@
+@@ -320,7 +316,7 @@ struct mschunks_map mschunks_map = {
  };
  EXPORT_SYMBOL(mschunks_map);
  
  };
  EXPORT_SYMBOL(mschunks_map);
  
  {
        klimit = _ALIGN(klimit, sizeof(u32));
        mschunks_map.mapping = (u32 *)klimit;
  {
        klimit = _ALIGN(klimit, sizeof(u32));
        mschunks_map.mapping = (u32 *)klimit;
-@@ -499,6 +495,8 @@
+@@ -499,6 +495,8 @@ static void __init iSeries_setup_arch(vo
                        itVpdAreas.xSlicMaxLogicalProcs);
        printk("Max physical processors = %d\n",
                        itVpdAreas.xSlicMaxPhysicalProcs);
                        itVpdAreas.xSlicMaxLogicalProcs);
        printk("Max physical processors = %d\n",
                        itVpdAreas.xSlicMaxPhysicalProcs);
  }
  
  static void iSeries_show_cpuinfo(struct seq_file *m)
  }
  
  static void iSeries_show_cpuinfo(struct seq_file *m)
-@@ -641,24 +639,25 @@
+@@ -641,24 +639,25 @@ static int __init iseries_probe(void)
  }
  
  define_machine(iseries) {
  }
  
  define_machine(iseries) {
        select MPIC_U3_HT_IRQS
 --- a/arch/powerpc/platforms/maple/pci.c
 +++ b/arch/powerpc/platforms/maple/pci.c
        select MPIC_U3_HT_IRQS
 --- a/arch/powerpc/platforms/maple/pci.c
 +++ b/arch/powerpc/platforms/maple/pci.c
-@@ -558,7 +558,7 @@
+@@ -558,7 +558,7 @@ void __init maple_pci_init(void)
         * safe assumptions hopefully.
         */
        if (u3_agp) {
         * safe assumptions hopefully.
         */
        if (u3_agp) {
  #include <asm/rtas.h>
 --- a/arch/powerpc/platforms/pasemi/Kconfig
 +++ b/arch/powerpc/platforms/pasemi/Kconfig
  #include <asm/rtas.h>
 --- a/arch/powerpc/platforms/pasemi/Kconfig
 +++ b/arch/powerpc/platforms/pasemi/Kconfig
-@@ -3,6 +3,7 @@
+@@ -3,6 +3,7 @@ config PPC_PASEMI
        bool "PA Semi SoC-based platforms"
        default n
        select MPIC
        bool "PA Semi SoC-based platforms"
        default n
        select MPIC
        select PPC_UDBG_16550
        select PPC_NATIVE
        select MPIC_BROKEN_REGREAD
        select PPC_UDBG_16550
        select PPC_NATIVE
        select MPIC_BROKEN_REGREAD
-@@ -17,7 +18,7 @@
+@@ -17,7 +18,7 @@ config PPC_PASEMI_IOMMU
        bool "PA Semi IOMMU support"
        depends on PPC_PASEMI
        help
        bool "PA Semi IOMMU support"
        depends on PPC_PASEMI
        help
  
  config PPC_PASEMI_IOMMU_DMA_FORCE
        bool "Force DMA engine to use IOMMU"
  
  config PPC_PASEMI_IOMMU_DMA_FORCE
        bool "Force DMA engine to use IOMMU"
-@@ -36,13 +37,4 @@
+@@ -36,13 +37,4 @@ config PPC_PASEMI_MDIO
        help
          Driver for MDIO via GPIO on PWRficient platforms
  
        help
          Driver for MDIO via GPIO on PWRficient platforms
  
  
  #define SDCASR_REG            0x0100
  #define SDCASR_REG_STRIDE     0x1000
  
  #define SDCASR_REG            0x0100
  #define SDCASR_REG_STRIDE     0x1000
-@@ -124,6 +125,11 @@
+@@ -124,6 +125,11 @@ static void set_astate(int cpu, unsigned
        local_irq_restore(flags);
  }
  
        local_irq_restore(flags);
  }
  
  void restore_astate(int cpu)
  {
        set_astate(cpu, current_astate);
  void restore_astate(int cpu)
  {
        set_astate(cpu, current_astate);
-@@ -147,7 +153,10 @@
+@@ -147,7 +153,10 @@ static int pas_cpufreq_cpu_init(struct c
        if (!cpu)
                goto out;
  
        if (!cpu)
                goto out;
  
        if (!dn)
                goto out;
        err = of_address_to_resource(dn, 0, &res);
        if (!dn)
                goto out;
        err = of_address_to_resource(dn, 0, &res);
-@@ -160,7 +169,10 @@
+@@ -160,7 +169,10 @@ static int pas_cpufreq_cpu_init(struct c
                goto out;
        }
  
                goto out;
        }
  
        if (!dn) {
                err = -ENODEV;
                goto out_unmap_sdcasr;
        if (!dn) {
                err = -ENODEV;
                goto out_unmap_sdcasr;
-@@ -292,7 +304,8 @@
+@@ -292,7 +304,8 @@ static struct cpufreq_driver pas_cpufreq
  
  static int __init pas_cpufreq_init(void)
  {
  
  static int __init pas_cpufreq_init(void)
  {
  
  #define DELAY 1
  
  
  #define DELAY 1
  
-@@ -218,45 +218,27 @@
+@@ -218,45 +218,27 @@ static int __devinit gpio_mdio_probe(str
                                     const struct of_device_id *match)
  {
        struct device *dev = &ofdev->dev;
                                     const struct of_device_id *match)
  {
        struct device *dev = &ofdev->dev;
  
        prop = of_get_property(np, "reg", NULL);
        new_bus->id = *prop;
  
        prop = of_get_property(np, "reg", NULL);
        new_bus->id = *prop;
-@@ -265,9 +247,24 @@
+@@ -265,9 +247,24 @@ static int __devinit gpio_mdio_probe(str
        new_bus->phy_mask = 0;
  
        new_bus->irq = kmalloc(sizeof(int)*PHY_MAX_ADDR, GFP_KERNEL);
        new_bus->phy_mask = 0;
  
        new_bus->irq = kmalloc(sizeof(int)*PHY_MAX_ADDR, GFP_KERNEL);
  
        prop = of_get_property(np, "mdc-pin", NULL);
        priv->mdc_pin = *prop;
  
        prop = of_get_property(np, "mdc-pin", NULL);
        priv->mdc_pin = *prop;
-@@ -280,17 +277,21 @@
+@@ -280,17 +277,21 @@ static int __devinit gpio_mdio_probe(str
  
        err = mdiobus_register(new_bus);
  
  
        err = mdiobus_register(new_bus);
  
        return err;
  }
  
        return err;
  }
  
-@@ -317,6 +318,7 @@
+@@ -317,6 +318,7 @@ static struct of_device_id gpio_mdio_mat
        },
        {},
  };
        },
        {},
  };
  
  static struct of_platform_driver gpio_mdio_driver =
  {
  
  static struct of_platform_driver gpio_mdio_driver =
  {
-@@ -330,12 +332,32 @@
+@@ -330,12 +332,32 @@ static struct of_platform_driver gpio_md
  
  int gpio_mdio_init(void)
  {
  
  int gpio_mdio_init(void)
  {
 +MODULE_DESCRIPTION("Driver for MDIO over GPIO on PA Semi PWRficient-based boards");
 --- a/arch/powerpc/platforms/pasemi/idle.c
 +++ b/arch/powerpc/platforms/pasemi/idle.c
 +MODULE_DESCRIPTION("Driver for MDIO over GPIO on PA Semi PWRficient-based boards");
 --- a/arch/powerpc/platforms/pasemi/idle.c
 +++ b/arch/powerpc/platforms/pasemi/idle.c
-@@ -74,9 +74,6 @@
+@@ -74,9 +74,6 @@ static int pasemi_system_reset_exception
  
  static int __init pasemi_idle_init(void)
  {
  
  static int __init pasemi_idle_init(void)
  {
  #ifndef CONFIG_PPC_PASEMI_CPUFREQ
        printk(KERN_WARNING "No cpufreq driver, powersavings modes disabled\n");
        current_mode = 0;
  #ifndef CONFIG_PPC_PASEMI_CPUFREQ
        printk(KERN_WARNING "No cpufreq driver, powersavings modes disabled\n");
        current_mode = 0;
-@@ -88,7 +85,7 @@
+@@ -88,7 +85,7 @@ static int __init pasemi_idle_init(void)
  
        return 0;
  }
  
        return 0;
  }
  {
 --- a/arch/powerpc/platforms/pasemi/pasemi.h
 +++ b/arch/powerpc/platforms/pasemi/pasemi.h
  {
 --- a/arch/powerpc/platforms/pasemi/pasemi.h
 +++ b/arch/powerpc/platforms/pasemi/pasemi.h
-@@ -16,8 +16,14 @@
+@@ -16,8 +16,14 @@ extern void idle_doze(void);
  
  /* Restore astate to last set */
  #ifdef CONFIG_PPC_PASEMI_CPUFREQ
  
  /* Restore astate to last set */
  #ifdef CONFIG_PPC_PASEMI_CPUFREQ
  }
 --- a/arch/powerpc/platforms/pasemi/powersave.S
 +++ b/arch/powerpc/platforms/pasemi/powersave.S
  }
 --- a/arch/powerpc/platforms/pasemi/powersave.S
 +++ b/arch/powerpc/platforms/pasemi/powersave.S
-@@ -62,7 +62,16 @@
+@@ -62,7 +62,16 @@ sleep_common:
        mflr    r0
        std     r0, 16(r1)
        stdu    r1,-64(r1)
        mflr    r0
        std     r0, 16(r1)
        stdu    r1,-64(r1)
        LOAD_REG_IMMEDIATE(r6,MSR_DR|MSR_IR|MSR_ME|MSR_EE)
        mfmsr   r4
        andc    r5,r4,r6
        LOAD_REG_IMMEDIATE(r6,MSR_DR|MSR_IR|MSR_ME|MSR_EE)
        mfmsr   r4
        andc    r5,r4,r6
-@@ -73,7 +82,7 @@
+@@ -73,7 +82,7 @@ sleep_common:
  
        mtmsrd  r4,0
  
  
        mtmsrd  r4,0
  
  /* SDC reset register, must be pre-mapped at reset time */
  static void __iomem *reset_reg;
  
  /* SDC reset register, must be pre-mapped at reset time */
  static void __iomem *reset_reg;
  
-@@ -56,10 +61,14 @@
+@@ -56,10 +61,14 @@ struct mce_regs {
  
  static struct mce_regs mce_regs[MAX_MCE_REGS];
  static int num_mce_regs;
  
  static struct mce_regs mce_regs[MAX_MCE_REGS];
  static int num_mce_regs;
        printk("Restarting...\n");
        while (1)
                out_le32(reset_reg, 0x6000000);
        printk("Restarting...\n");
        while (1)
                out_le32(reset_reg, 0x6000000);
-@@ -126,9 +135,6 @@
+@@ -126,9 +135,6 @@ static int __init pas_setup_mce_regs(voi
        struct pci_dev *dev;
        int reg;
  
        struct pci_dev *dev;
        int reg;
  
        /* Remap various SoC status registers for use by the MCE handler */
  
        reg = 0;
        /* Remap various SoC status registers for use by the MCE handler */
  
        reg = 0;
-@@ -172,7 +178,7 @@
+@@ -172,7 +178,7 @@ static int __init pas_setup_mce_regs(voi
  
        return 0;
  }
  
        return 0;
  }
  
  static __init void pas_init_IRQ(void)
  {
  
  static __init void pas_init_IRQ(void)
  {
-@@ -181,6 +187,8 @@
+@@ -181,6 +187,8 @@ static __init void pas_init_IRQ(void)
        unsigned long openpic_addr;
        const unsigned int *opprop;
        int naddr, opplen;
        unsigned long openpic_addr;
        const unsigned int *opprop;
        int naddr, opplen;
        struct mpic *mpic;
  
        mpic_node = NULL;
        struct mpic *mpic;
  
        mpic_node = NULL;
-@@ -213,13 +221,26 @@
+@@ -213,13 +221,26 @@ static __init void pas_init_IRQ(void)
        openpic_addr = of_read_number(opprop, naddr);
        printk(KERN_DEBUG "OpenPIC addr: %lx\n", openpic_addr);
  
        openpic_addr = of_read_number(opprop, naddr);
        printk(KERN_DEBUG "OpenPIC addr: %lx\n", openpic_addr);
  
        of_node_put(mpic_node);
        of_node_put(root);
  }
        of_node_put(mpic_node);
        of_node_put(root);
  }
-@@ -239,6 +260,14 @@
+@@ -239,6 +260,14 @@ static int pas_machine_check_handler(str
  
        srr0 = regs->nip;
        srr1 = regs->msr;
  
        srr0 = regs->nip;
        srr1 = regs->msr;
        dsisr = mfspr(SPRN_DSISR);
        printk(KERN_ERR "Machine Check on CPU %d\n", cpu);
        printk(KERN_ERR "SRR0  0x%016lx SRR1 0x%016lx\n", srr0, srr1);
        dsisr = mfspr(SPRN_DSISR);
        printk(KERN_ERR "Machine Check on CPU %d\n", cpu);
        printk(KERN_ERR "SRR0  0x%016lx SRR1 0x%016lx\n", srr0, srr1);
-@@ -295,14 +324,14 @@
+@@ -295,14 +324,14 @@ static int pas_machine_check_handler(str
                int i;
  
                printk(KERN_ERR "slb contents:\n");
                int i;
  
                printk(KERN_ERR "slb contents:\n");
        /* SRR1[62] is from MSR[62] if recoverable, so pass that back */
        return !!(srr1 & 0x2);
  }
        /* SRR1[62] is from MSR[62] if recoverable, so pass that back */
        return !!(srr1 & 0x2);
  }
-@@ -362,16 +391,17 @@
+@@ -362,16 +391,17 @@ static inline void pasemi_pcmcia_init(vo
  
  
  static struct of_device_id pasemi_bus_ids[] = {
  
  
  static struct of_device_id pasemi_bus_ids[] = {
        pasemi_pcmcia_init();
  
        /* Publish OF platform devices for SDC and other non-PCI devices */
        pasemi_pcmcia_init();
  
        /* Publish OF platform devices for SDC and other non-PCI devices */
-@@ -379,7 +409,7 @@
+@@ -379,7 +409,7 @@ static int __init pasemi_publish_devices
  
        return 0;
  }
  
        return 0;
  }
  
  
  /*
  
  
  /*
-@@ -389,7 +419,8 @@
+@@ -389,7 +419,8 @@ static int __init pas_probe(void)
  {
        unsigned long root = of_get_flat_dt_root();
  
  {
        unsigned long root = of_get_flat_dt_root();
  
                return 0;
  
        hpte_init_native();
                return 0;
  
        hpte_init_native();
-@@ -400,7 +431,7 @@
+@@ -400,7 +431,7 @@ static int __init pas_probe(void)
  }
  
  define_machine(pasemi) {
  }
  
  define_machine(pasemi) {
        .init_early             = pas_init_early,
 --- a/arch/powerpc/platforms/powermac/low_i2c.c
 +++ b/arch/powerpc/platforms/powermac/low_i2c.c
        .init_early             = pas_init_early,
 --- a/arch/powerpc/platforms/powermac/low_i2c.c
 +++ b/arch/powerpc/platforms/powermac/low_i2c.c
-@@ -585,8 +585,7 @@
+@@ -585,8 +585,7 @@ static void __init kw_i2c_probe(void)
        struct device_node *np, *child, *parent;
  
        /* Probe keywest-i2c busses */
        struct device_node *np, *child, *parent;
  
        /* Probe keywest-i2c busses */
                struct pmac_i2c_host_kw *host;
                int multibus, chans, i;
  
                struct pmac_i2c_host_kw *host;
                int multibus, chans, i;
  
-@@ -1462,9 +1461,6 @@
+@@ -1462,9 +1461,6 @@ int __init pmac_i2c_init(void)
                return 0;
        i2c_inited = 1;
  
                return 0;
        i2c_inited = 1;
  
        /* Probe keywest-i2c busses */
        kw_i2c_probe();
  
        /* Probe keywest-i2c busses */
        kw_i2c_probe();
  
-@@ -1483,7 +1479,7 @@
+@@ -1483,7 +1479,7 @@ int __init pmac_i2c_init(void)
  
        return 0;
  }
  
        return 0;
  }
  
  /* Since pmac_i2c_init can be called too early for the platform device
   * registration, we need to do it at a later time. In our case, subsys
  
  /* Since pmac_i2c_init can be called too early for the platform device
   * registration, we need to do it at a later time. In our case, subsys
-@@ -1515,4 +1511,4 @@
+@@ -1515,4 +1511,4 @@ static int __init pmac_i2c_create_platfo
  
        return 0;
  }
  
        return 0;
  }
  #else
  static int has_second_ohare;
  #endif /* CONFIG_PPC64 */
  #else
  static int has_second_ohare;
  #endif /* CONFIG_PPC64 */
-@@ -314,12 +312,15 @@
+@@ -314,12 +312,15 @@ static int u3_ht_skip_device(struct pci_
  
        /* We only allow config cycles to devices that are in OF device-tree
         * as we are apparently having some weird things going on with some
  
        /* We only allow config cycles to devices that are in OF device-tree
         * as we are apparently having some weird things going on with some
        for (dn = busdn->child; dn; dn = dn->sibling)
                if (PCI_DN(dn) && PCI_DN(dn)->devfn == devfn)
                        break;
        for (dn = busdn->child; dn; dn = dn->sibling)
                if (PCI_DN(dn) && PCI_DN(dn)->devfn == devfn)
                        break;
-@@ -344,14 +345,15 @@
+@@ -344,14 +345,15 @@ static int u3_ht_skip_device(struct pci_
                + (((unsigned int)bus) << 16) \
                + 0x01000000UL)
  
                + (((unsigned int)bus) << 16) \
                + 0x01000000UL)
  
        } else
                return hose->cfg_data + U3_HT_CFA1(bus, devfn, offset);
  }
        } else
                return hose->cfg_data + U3_HT_CFA1(bus, devfn, offset);
  }
-@@ -360,14 +362,15 @@
+@@ -360,14 +362,15 @@ static int u3_ht_read_config(struct pci_
                                    int offset, int len, u32 *val)
  {
        struct pci_controller *hose;
                                    int offset, int len, u32 *val)
  {
        struct pci_controller *hose;
        if (!addr)
                return PCIBIOS_DEVICE_NOT_FOUND;
  
        if (!addr)
                return PCIBIOS_DEVICE_NOT_FOUND;
  
-@@ -397,10 +400,10 @@
+@@ -397,10 +400,10 @@ static int u3_ht_read_config(struct pci_
                *val = in_8(addr);
                break;
        case 2:
                *val = in_8(addr);
                break;
        case 2:
                break;
        }
        return PCIBIOS_SUCCESSFUL;
                break;
        }
        return PCIBIOS_SUCCESSFUL;
-@@ -410,14 +413,15 @@
+@@ -410,14 +413,15 @@ static int u3_ht_write_config(struct pci
                                     int offset, int len, u32 val)
  {
        struct pci_controller *hose;
                                     int offset, int len, u32 val)
  {
        struct pci_controller *hose;
        if (!addr)
                return PCIBIOS_DEVICE_NOT_FOUND;
  
        if (!addr)
                return PCIBIOS_DEVICE_NOT_FOUND;
  
-@@ -439,10 +443,10 @@
+@@ -439,10 +443,10 @@ static int u3_ht_write_config(struct pci
                out_8(addr, val);
                break;
        case 2:
                out_8(addr, val);
                break;
        case 2:
                break;
        }
        return PCIBIOS_SUCCESSFUL;
                break;
        }
        return PCIBIOS_SUCCESSFUL;
-@@ -725,7 +729,7 @@
+@@ -725,7 +729,7 @@ static void __init setup_bandit(struct p
  static int __init setup_uninorth(struct pci_controller *hose,
                                 struct resource *addr)
  {
  static int __init setup_uninorth(struct pci_controller *hose,
                                 struct resource *addr)
  {
        has_uninorth = 1;
        hose->ops = &macrisc_pci_ops;
        hose->cfg_addr = ioremap(addr->start + 0x800000, 0x1000);
        has_uninorth = 1;
        hose->ops = &macrisc_pci_ops;
        hose->cfg_addr = ioremap(addr->start + 0x800000, 0x1000);
-@@ -773,31 +777,72 @@
+@@ -773,31 +777,72 @@ static void __init setup_u4_pcie(struct 
         */
        hose->first_busno = 0x00;
        hose->last_busno = 0xff;
         */
        hose->first_busno = 0x00;
        hose->last_busno = 0xff;
         */
        hose->io_base_phys = 0xf4000000;
        hose->pci_io_size = 0x00400000;
         */
        hose->io_base_phys = 0xf4000000;
        hose->pci_io_size = 0x00400000;
-@@ -808,76 +853,33 @@
+@@ -808,76 +853,33 @@ static void __init setup_u3_ht(struct pc
        hose->pci_mem_offset = 0;
        hose->first_busno = 0;
        hose->last_busno = 0xef;
        hose->pci_mem_offset = 0;
        hose->first_busno = 0;
        hose->last_busno = 0xef;
  }
  #endif /* CONFIG_PPC64 */
  
  }
  #endif /* CONFIG_PPC64 */
  
-@@ -994,6 +996,8 @@
+@@ -994,6 +996,8 @@ void __init pmac_pci_init(void)
        struct device_node *np, *root;
        struct device_node *ht = NULL;
  
        struct device_node *np, *root;
        struct device_node *ht = NULL;
  
        root = of_find_node_by_path("/");
        if (root == NULL) {
                printk(KERN_CRIT "pmac_pci_init: can't find root "
        root = of_find_node_by_path("/");
        if (root == NULL) {
                printk(KERN_CRIT "pmac_pci_init: can't find root "
-@@ -1032,15 +1036,15 @@
+@@ -1032,15 +1036,15 @@ void __init pmac_pci_init(void)
         * future though
         */
        if (u3_agp) {
         * future though
         */
        if (u3_agp) {
  
  #else /* CONFIG_PPC64 */
        init_p2pbridge();
  
  #else /* CONFIG_PPC64 */
        init_p2pbridge();
-@@ -1051,13 +1055,13 @@
+@@ -1051,13 +1055,13 @@ void __init pmac_pci_init(void)
         * some offset between bus number and domains for now when we
         * assign all busses should help for now
         */
         * some offset between bus number and domains for now when we
         * assign all busses should help for now
         */
  {
        struct device_node* node;
        int updatecfg = 0;
  {
        struct device_node* node;
        int updatecfg = 0;
-@@ -1099,24 +1103,21 @@
+@@ -1099,24 +1103,21 @@ pmac_pci_enable_device_hook(struct pci_d
                updatecfg = 1;
        }
  
                updatecfg = 1;
        }
  
                pci_write_config_byte(dev, PCI_CACHE_LINE_SIZE,
                                      L1_CACHE_BYTES >> 2);
        }
                pci_write_config_byte(dev, PCI_CACHE_LINE_SIZE,
                                      L1_CACHE_BYTES >> 2);
        }
-@@ -1124,6 +1125,18 @@
+@@ -1124,6 +1125,18 @@ pmac_pci_enable_device_hook(struct pci_d
        return 0;
  }
  
        return 0;
  }
  
  /* We power down some devices after they have been probed. They'll
   * be powered back on later on
   */
  /* We power down some devices after they have been probed. They'll
   * be powered back on later on
   */
-@@ -1171,7 +1184,6 @@
+@@ -1171,7 +1184,6 @@ void __init pmac_pcibios_after_init(void
        of_node_put(nd);
  }
  
        of_node_put(nd);
  }
  
  void pmac_pci_fixup_cardbus(struct pci_dev* dev)
  {
        if (!machine_is(powermac))
  void pmac_pci_fixup_cardbus(struct pci_dev* dev)
  {
        if (!machine_is(powermac))
-@@ -1259,7 +1271,7 @@
+@@ -1259,7 +1271,7 @@ void pmac_pci_fixup_pciata(struct pci_de
        }
  }
  DECLARE_PCI_FIXUP_EARLY(PCI_ANY_ID, PCI_ANY_ID, pmac_pci_fixup_pciata);
        }
  }
  DECLARE_PCI_FIXUP_EARLY(PCI_ANY_ID, PCI_ANY_ID, pmac_pci_fixup_pciata);
   * Disable second function on K2-SATA, it's broken
 --- a/arch/powerpc/platforms/powermac/pfunc_base.c
 +++ b/arch/powerpc/platforms/powermac/pfunc_base.c
   * Disable second function on K2-SATA, it's broken
 --- a/arch/powerpc/platforms/powermac/pfunc_base.c
 +++ b/arch/powerpc/platforms/powermac/pfunc_base.c
-@@ -363,8 +363,7 @@
+@@ -363,8 +363,7 @@ int __init pmac_pfunc_base_install(void)
  
        return 0;
  }
  
        return 0;
  }
  
 --- a/arch/powerpc/platforms/powermac/pic.c
 +++ b/arch/powerpc/platforms/powermac/pic.c
  
 --- a/arch/powerpc/platforms/powermac/pic.c
 +++ b/arch/powerpc/platforms/powermac/pic.c
-@@ -690,6 +690,5 @@
+@@ -690,6 +690,5 @@ static int __init init_pmacpic_sysfs(voi
        sysdev_driver_register(&pmacpic_sysclass, &driver_pmacpic);
        return 0;
  }
        sysdev_driver_register(&pmacpic_sysclass, &driver_pmacpic);
        return 0;
  }
  
 --- a/arch/powerpc/platforms/powermac/pmac.h
 +++ b/arch/powerpc/platforms/powermac/pmac.h
  
 --- a/arch/powerpc/platforms/powermac/pmac.h
 +++ b/arch/powerpc/platforms/powermac/pmac.h
-@@ -26,7 +26,7 @@
+@@ -26,7 +26,7 @@ extern void pmac_pci_init(void);
  extern void pmac_nvram_update(void);
  extern unsigned char pmac_nvram_read_byte(int addr);
  extern void pmac_nvram_write_byte(int addr, unsigned char val);
  extern void pmac_nvram_update(void);
  extern unsigned char pmac_nvram_read_byte(int addr);
  extern void pmac_nvram_write_byte(int addr, unsigned char val);
  #include <asm/mmu_context.h>
  #include <asm/iommu.h>
  #include <asm/smu.h>
  #include <asm/mmu_context.h>
  #include <asm/iommu.h>
  #include <asm/smu.h>
-@@ -94,7 +94,6 @@
+@@ -94,7 +94,6 @@ extern struct machdep_calls pmac_md;
  #define DEFAULT_ROOT_DEVICE Root_SDA1 /* sda1 - slightly silly choice */
  
  #ifdef CONFIG_PPC64
  #define DEFAULT_ROOT_DEVICE Root_SDA1 /* sda1 - slightly silly choice */
  
  #ifdef CONFIG_PPC64
  int sccdbg;
  #endif
  
  int sccdbg;
  #endif
  
-@@ -398,17 +397,13 @@
+@@ -398,17 +397,13 @@ static int initializing = 1;
  
  static int pmac_late_init(void)
  {
  
  static int pmac_late_init(void)
  {
  
  /*
   * This is __init_refok because we check for "initializing" before
  
  /*
   * This is __init_refok because we check for "initializing" before
-@@ -535,9 +530,6 @@
+@@ -535,9 +530,6 @@ static int __init pmac_declare_of_platfo
        if (machine_is(chrp))
                return -1;
  
        if (machine_is(chrp))
                return -1;
  
        np = of_find_node_by_name(NULL, "valkyrie");
        if (np)
                of_platform_device_create(np, "valkyrie", NULL);
        np = of_find_node_by_name(NULL, "valkyrie");
        if (np)
                of_platform_device_create(np, "valkyrie", NULL);
-@@ -552,8 +544,7 @@
+@@ -552,8 +544,7 @@ static int __init pmac_declare_of_platfo
  
        return 0;
  }
  
        return 0;
  }
  
  /*
   * Called very early, MMU is off, device-tree isn't unflattened
  
  /*
   * Called very early, MMU is off, device-tree isn't unflattened
-@@ -613,9 +604,11 @@
+@@ -613,9 +604,11 @@ static int pmac_pci_probe_mode(struct pc
  
        /* We need to use normal PCI probing for the AGP bus,
         * since the device for the AGP bridge isn't in the tree.
  
        /* We need to use normal PCI probing for the AGP bus,
         * since the device for the AGP bridge isn't in the tree.
  }
 --- a/arch/powerpc/platforms/powermac/time.c
 +++ b/arch/powerpc/platforms/powermac/time.c
  }
 --- a/arch/powerpc/platforms/powermac/time.c
 +++ b/arch/powerpc/platforms/powermac/time.c
-@@ -84,12 +84,14 @@
+@@ -84,12 +84,14 @@ long __init pmac_time_init(void)
        return delta;
  }
  
        return delta;
  }
  
  {
 --- a/arch/powerpc/platforms/ps3/Kconfig
 +++ b/arch/powerpc/platforms/ps3/Kconfig
  {
 --- a/arch/powerpc/platforms/ps3/Kconfig
 +++ b/arch/powerpc/platforms/ps3/Kconfig
-@@ -61,17 +61,6 @@
+@@ -61,17 +61,6 @@ config PS3_DYNAMIC_DMA
          This support is mainly for Linux kernel development.  If unsure,
          say N.
  
          This support is mainly for Linux kernel development.  If unsure,
          say N.
  
  config PS3_VUART
        depends on PPC_PS3
        tristate
  config PS3_VUART
        depends on PPC_PS3
        tristate
-@@ -138,4 +127,17 @@
+@@ -138,4 +127,17 @@ config PS3_FLASH
          be disabled on the kernel command line using "ps3flash=off", to
          not allocate this fixed buffer.
  
          be disabled on the kernel command line using "ps3flash=off", to
          not allocate this fixed buffer.
  
  /**
   * ps3_setup_gelic_device - Setup and register a gelic device instance.
   *
  /**
   * ps3_setup_gelic_device - Setup and register a gelic device instance.
   *
-@@ -238,166 +322,6 @@
+@@ -238,166 +322,6 @@ static int __init ps3_setup_vuart_device
        return result;
  }
  
        return result;
  }
  
  static int ps3_setup_storage_dev(const struct ps3_repository_device *repo,
                                 enum ps3_match_id match_id)
  {
  static int ps3_setup_storage_dev(const struct ps3_repository_device *repo,
                                 enum ps3_match_id match_id)
  {
-@@ -449,16 +373,6 @@
+@@ -449,16 +373,6 @@ static int ps3_setup_storage_dev(const s
                goto fail_find_interrupt;
        }
  
                goto fail_find_interrupt;
        }
  
        for (i = 0; i < num_regions; i++) {
                unsigned int id;
                u64 start, size;
        for (i = 0; i < num_regions; i++) {
                unsigned int id;
                u64 start, size;
-@@ -494,7 +408,6 @@
+@@ -494,7 +408,6 @@ static int ps3_setup_storage_dev(const s
  
  fail_device_register:
  fail_read_region:
  
  fail_device_register:
  fail_read_region:
  fail_find_interrupt:
        kfree(p);
  fail_malloc:
  fail_find_interrupt:
        kfree(p);
  fail_malloc:
-@@ -659,62 +572,268 @@
+@@ -659,62 +572,268 @@ static int ps3_register_repository_devic
        return result;
  }
  
        return result;
  }
  
   * ps3_start_probe_thread - Starts the background probe thread.
   *
   */
   * ps3_start_probe_thread - Starts the background probe thread.
   *
   */
-@@ -723,7 +842,7 @@
+@@ -723,7 +842,7 @@ static int __init ps3_start_probe_thread
  {
        int result;
        struct task_struct *task;
  {
        int result;
        struct task_struct *task;
  
        pr_debug(" -> %s:%d\n", __func__, __LINE__);
  
  
        pr_debug(" -> %s:%d\n", __func__, __LINE__);
  
-@@ -746,7 +865,8 @@
+@@ -746,7 +865,8 @@ static int __init ps3_start_probe_thread
                return -ENODEV;
        }
  
                return -ENODEV;
        }
  
  
        if (IS_ERR(task)) {
                result = PTR_ERR(task);
  
        if (IS_ERR(task)) {
                result = PTR_ERR(task);
-@@ -755,6 +875,9 @@
+@@ -755,6 +875,9 @@ static int __init ps3_start_probe_thread
                return result;
        }
  
                return result;
        }
  
        pr_debug(" <- %s:%d\n", __func__, __LINE__);
        return 0;
  }
        pr_debug(" <- %s:%d\n", __func__, __LINE__);
        return 0;
  }
-@@ -787,6 +910,8 @@
+@@ -787,6 +910,8 @@ static int __init ps3_register_devices(v
  
        ps3_register_sound_devices();
  
  
        ps3_register_sound_devices();
  
  #if defined(CONFIG_PS3_DYNAMIC_DMA)
        USE_DYNAMIC_DMA = 1,
  #else
  #if defined(CONFIG_PS3_DYNAMIC_DMA)
        USE_DYNAMIC_DMA = 1,
  #else
-@@ -137,11 +132,8 @@
+@@ -137,11 +132,8 @@ static struct map map;
  unsigned long ps3_mm_phys_to_lpar(unsigned long phys_addr)
  {
        BUG_ON(is_kernel_addr(phys_addr));
  unsigned long ps3_mm_phys_to_lpar(unsigned long phys_addr)
  {
        BUG_ON(is_kernel_addr(phys_addr));
  }
  
  EXPORT_SYMBOL(ps3_mm_phys_to_lpar);
  }
  
  EXPORT_SYMBOL(ps3_mm_phys_to_lpar);
-@@ -309,7 +301,7 @@
+@@ -309,7 +301,7 @@ static int __init ps3_mm_add_memory(void
  
        BUG_ON(!mem_init_done);
  
  
        BUG_ON(!mem_init_done);
  
        start_pfn = start_addr >> PAGE_SHIFT;
        nr_pages = (map.r1.size + PAGE_SIZE - 1) >> PAGE_SHIFT;
  
        start_pfn = start_addr >> PAGE_SHIFT;
        nr_pages = (map.r1.size + PAGE_SIZE - 1) >> PAGE_SHIFT;
  
-@@ -359,7 +351,7 @@
+@@ -359,7 +351,7 @@ static unsigned long dma_sb_lpar_to_bus(
  static void  __maybe_unused _dma_dump_region(const struct ps3_dma_region *r,
        const char *func, int line)
  {
  static void  __maybe_unused _dma_dump_region(const struct ps3_dma_region *r,
        const char *func, int line)
  {
                r->dev->dev_id);
        DBG("%s:%d: page_size  %u\n", func, line, r->page_size);
        DBG("%s:%d: bus_addr   %lxh\n", func, line, r->bus_addr);
                r->dev->dev_id);
        DBG("%s:%d: page_size  %u\n", func, line, r->page_size);
        DBG("%s:%d: bus_addr   %lxh\n", func, line, r->bus_addr);
-@@ -394,7 +386,7 @@
+@@ -394,7 +386,7 @@ struct dma_chunk {
  static void _dma_dump_chunk (const struct dma_chunk* c, const char* func,
        int line)
  {
  static void _dma_dump_chunk (const struct dma_chunk* c, const char* func,
        int line)
  {
                c->region->dev->bus_id, c->region->dev->dev_id);
        DBG("%s:%d: r.bus_addr   %lxh\n", func, line, c->region->bus_addr);
        DBG("%s:%d: r.page_size  %u\n", func, line, c->region->page_size);
                c->region->dev->bus_id, c->region->dev->dev_id);
        DBG("%s:%d: r.bus_addr   %lxh\n", func, line, c->region->bus_addr);
        DBG("%s:%d: r.page_size  %u\n", func, line, c->region->page_size);
-@@ -658,7 +650,7 @@
+@@ -658,7 +650,7 @@ static int dma_sb_region_create(struct p
        BUG_ON(!r);
  
        if (!r->dev->bus_id) {
        BUG_ON(!r);
  
        if (!r->dev->bus_id) {
                        r->dev->bus_id, r->dev->dev_id);
                return 0;
        }
                        r->dev->bus_id, r->dev->dev_id);
                return 0;
        }
-@@ -724,7 +716,7 @@
+@@ -724,7 +716,7 @@ static int dma_sb_region_free(struct ps3
        BUG_ON(!r);
  
        if (!r->dev->bus_id) {
        BUG_ON(!r);
  
        if (!r->dev->bus_id) {
                        r->dev->bus_id, r->dev->dev_id);
                return 0;
        }
                        r->dev->bus_id, r->dev->dev_id);
                return 0;
        }
-@@ -1007,7 +999,7 @@
+@@ -1007,7 +999,7 @@ static int dma_sb_region_create_linear(s
  
        if (r->offset + r->len > map.rm.size) {
                /* Map (part of) 2nd RAM chunk */
  
        if (r->offset + r->len > map.rm.size) {
                /* Map (part of) 2nd RAM chunk */
                        virt_addr += r->offset - map.rm.size;
 --- a/arch/powerpc/platforms/ps3/platform.h
 +++ b/arch/powerpc/platforms/ps3/platform.h
                        virt_addr += r->offset - map.rm.size;
 --- a/arch/powerpc/platforms/ps3/platform.h
 +++ b/arch/powerpc/platforms/ps3/platform.h
-@@ -89,13 +89,11 @@
+@@ -89,13 +89,11 @@ enum ps3_dev_type {
        PS3_DEV_TYPE_STOR_ROM = TYPE_ROM,       /* 5 */
        PS3_DEV_TYPE_SB_GPIO = 6,
        PS3_DEV_TYPE_STOR_FLASH = TYPE_RBC,     /* 14 */
        PS3_DEV_TYPE_STOR_ROM = TYPE_ROM,       /* 5 */
        PS3_DEV_TYPE_SB_GPIO = 6,
        PS3_DEV_TYPE_STOR_FLASH = TYPE_RBC,     /* 14 */
  int ps3_repository_read_bus_type(unsigned int bus_index,
        enum ps3_bus_type *bus_type);
  int ps3_repository_read_bus_num_dev(unsigned int bus_index,
  int ps3_repository_read_bus_type(unsigned int bus_index,
        enum ps3_bus_type *bus_type);
  int ps3_repository_read_bus_num_dev(unsigned int bus_index,
-@@ -119,7 +117,7 @@
+@@ -119,7 +117,7 @@ enum ps3_reg_type {
  int ps3_repository_read_dev_str(unsigned int bus_index,
        unsigned int dev_index, const char *dev_str, u64 *value);
  int ps3_repository_read_dev_id(unsigned int bus_index, unsigned int dev_index,
  int ps3_repository_read_dev_str(unsigned int bus_index,
        unsigned int dev_index, const char *dev_str, u64 *value);
  int ps3_repository_read_dev_id(unsigned int bus_index, unsigned int dev_index,
  int ps3_repository_read_dev_type(unsigned int bus_index,
        unsigned int dev_index, enum ps3_dev_type *dev_type);
  int ps3_repository_read_dev_intr(unsigned int bus_index,
  int ps3_repository_read_dev_type(unsigned int bus_index,
        unsigned int dev_index, enum ps3_dev_type *dev_type);
  int ps3_repository_read_dev_intr(unsigned int bus_index,
-@@ -138,21 +136,17 @@
+@@ -138,21 +136,17 @@ int ps3_repository_read_dev_reg(unsigned
  /* repository bus enumerators */
  
  struct ps3_repository_device {
  /* repository bus enumerators */
  
  struct ps3_repository_device {
  int ps3_repository_find_devices(enum ps3_bus_type bus_type,
        int (*callback)(const struct ps3_repository_device *repo));
  int ps3_repository_find_bus(enum ps3_bus_type bus_type, unsigned int from,
  int ps3_repository_find_devices(enum ps3_bus_type bus_type,
        int (*callback)(const struct ps3_repository_device *repo));
  int ps3_repository_find_bus(enum ps3_bus_type bus_type, unsigned int from,
-@@ -186,10 +180,10 @@
+@@ -186,10 +180,10 @@ int ps3_repository_read_stor_dev_region(
        unsigned int dev_index, unsigned int region_index,
        unsigned int *region_id, u64 *region_start, u64 *region_size);
  
        unsigned int dev_index, unsigned int region_index,
        unsigned int *region_id, u64 *region_start, u64 *region_size);
  
  int ps3_repository_read_rm_base(unsigned int ppe_id, u64 *rm_base);
  int ps3_repository_read_rm_size(unsigned int ppe_id, u64 *rm_size);
  int ps3_repository_read_region_total(u64 *region_total);
  int ps3_repository_read_rm_base(unsigned int ppe_id, u64 *rm_base);
  int ps3_repository_read_rm_size(unsigned int ppe_id, u64 *rm_size);
  int ps3_repository_read_region_total(u64 *region_total);
-@@ -200,9 +194,15 @@
+@@ -200,9 +194,15 @@ int ps3_repository_read_mm_info(u64 *rm_
  
  int ps3_repository_read_num_be(unsigned int *num_be);
  int ps3_repository_read_be_node_id(unsigned int be_index, u64 *node_id);
  
  int ps3_repository_read_num_be(unsigned int *num_be);
  int ps3_repository_read_be_node_id(unsigned int be_index, u64 *node_id);
  int ps3_repository_read_boot_dat_addr(u64 *lpar_addr);
 --- a/arch/powerpc/platforms/ps3/repository.c
 +++ b/arch/powerpc/platforms/ps3/repository.c
  int ps3_repository_read_boot_dat_addr(u64 *lpar_addr);
 --- a/arch/powerpc/platforms/ps3/repository.c
 +++ b/arch/powerpc/platforms/ps3/repository.c
-@@ -33,7 +33,7 @@
+@@ -33,7 +33,7 @@ enum ps3_lpar_id {
  };
  
  #define dump_field(_a, _b) _dump_field(_a, _b, __func__, __LINE__)
  };
  
  #define dump_field(_a, _b) _dump_field(_a, _b, __func__, __LINE__)
  {
  #if defined(DEBUG)
        char s[16];
  {
  #if defined(DEBUG)
        char s[16];
-@@ -50,8 +50,8 @@
+@@ -50,8 +50,8 @@ static void _dump_field(const char *hdr,
  
  #define dump_node_name(_a, _b, _c, _d, _e) \
        _dump_node_name(_a, _b, _c, _d, _e, __func__, __LINE__)
  
  #define dump_node_name(_a, _b, _c, _d, _e) \
        _dump_node_name(_a, _b, _c, _d, _e, __func__, __LINE__)
  {
        pr_debug("%s:%d: lpar: %u\n", func, line, lpar_id);
        _dump_field("n1: ", n1, func, line);
  {
        pr_debug("%s:%d: lpar: %u\n", func, line, lpar_id);
        _dump_field("n1: ", n1, func, line);
-@@ -63,7 +63,7 @@
+@@ -63,7 +63,7 @@ static void _dump_node_name (unsigned in
  #define dump_node(_a, _b, _c, _d, _e, _f, _g) \
        _dump_node(_a, _b, _c, _d, _e, _f, _g, __func__, __LINE__)
  static void _dump_node(unsigned int lpar_id, u64 n1, u64 n2, u64 n3, u64 n4,
  #define dump_node(_a, _b, _c, _d, _e, _f, _g) \
        _dump_node(_a, _b, _c, _d, _e, _f, _g, __func__, __LINE__)
  static void _dump_node(unsigned int lpar_id, u64 n1, u64 n2, u64 n3, u64 n4,
  {
        pr_debug("%s:%d: lpar: %u\n", func, line, lpar_id);
        _dump_field("n1: ", n1, func, line);
  {
        pr_debug("%s:%d: lpar: %u\n", func, line, lpar_id);
        _dump_field("n1: ", n1, func, line);
-@@ -165,21 +165,18 @@
+@@ -165,21 +165,18 @@ int ps3_repository_read_bus_str(unsigned
                make_first_field("bus", bus_index),
                make_field(bus_str, 0),
                0, 0,
                make_first_field("bus", bus_index),
                make_field(bus_str, 0),
                0, 0,
        return result;
  }
  
        return result;
  }
  
-@@ -193,7 +190,7 @@
+@@ -193,7 +190,7 @@ int ps3_repository_read_bus_type(unsigne
                make_first_field("bus", bus_index),
                make_field("type", 0),
                0, 0,
                make_first_field("bus", bus_index),
                make_field("type", 0),
                0, 0,
        *bus_type = v1;
        return result;
  }
        *bus_type = v1;
        return result;
  }
-@@ -208,7 +205,7 @@
+@@ -208,7 +205,7 @@ int ps3_repository_read_bus_num_dev(unsi
                make_first_field("bus", bus_index),
                make_field("num_dev", 0),
                0, 0,
                make_first_field("bus", bus_index),
                make_field("num_dev", 0),
                0, 0,
        *num_dev = v1;
        return result;
  }
        *num_dev = v1;
        return result;
  }
-@@ -221,22 +218,20 @@
+@@ -221,22 +218,20 @@ int ps3_repository_read_dev_str(unsigned
                make_field("dev", dev_index),
                make_field(dev_str, 0),
                0,
                make_field("dev", dev_index),
                make_field(dev_str, 0),
                0,
        return result;
  }
  
        return result;
  }
  
-@@ -251,14 +246,14 @@
+@@ -251,14 +246,14 @@ int ps3_repository_read_dev_type(unsigne
                make_field("dev", dev_index),
                make_field("type", 0),
                0,
                make_field("dev", dev_index),
                make_field("type", 0),
                0,
  {
        int result;
        u64 v1;
  {
        int result;
        u64 v1;
-@@ -287,7 +282,7 @@
+@@ -287,7 +282,7 @@ int ps3_repository_read_dev_reg_type(uns
                make_field("dev", dev_index),
                make_field("reg", reg_index),
                make_field("type", 0),
                make_field("dev", dev_index),
                make_field("reg", reg_index),
                make_field("type", 0),
        *reg_type = v1;
        return result;
  }
        *reg_type = v1;
        return result;
  }
-@@ -332,7 +327,7 @@
+@@ -332,7 +327,7 @@ int ps3_repository_find_device(struct ps
                return result;
        }
  
                return result;
        }
  
                __func__, __LINE__, tmp.bus_type, tmp.bus_index, tmp.bus_id,
                num_dev);
  
                __func__, __LINE__, tmp.bus_type, tmp.bus_index, tmp.bus_id,
                num_dev);
  
-@@ -349,47 +344,95 @@
+@@ -349,47 +344,95 @@ int ps3_repository_find_device(struct ps
                return result;
        }
  
                return result;
        }
  
        *repo = tmp;
        return 0;
  }
        *repo = tmp;
        return 0;
  }
-@@ -402,50 +445,34 @@
+@@ -402,50 +445,34 @@ int __devinit ps3_repository_find_device
  
        pr_debug(" -> %s:%d: find bus_type %u\n", __func__, __LINE__, bus_type);
  
  
        pr_debug(" -> %s:%d: find bus_type %u\n", __func__, __LINE__, bus_type);
  
        }
  
        pr_debug(" <- %s:%d\n", __func__, __LINE__);
        }
  
        pr_debug(" <- %s:%d\n", __func__, __LINE__);
-@@ -561,7 +588,7 @@
+@@ -561,7 +588,7 @@ int ps3_repository_read_stor_dev_port(un
                make_first_field("bus", bus_index),
                make_field("dev", dev_index),
                make_field("port", 0),
                make_first_field("bus", bus_index),
                make_field("dev", dev_index),
                make_field("port", 0),
  }
  
  int ps3_repository_read_stor_dev_blk_size(unsigned int bus_index,
  }
  
  int ps3_repository_read_stor_dev_blk_size(unsigned int bus_index,
-@@ -571,7 +598,7 @@
+@@ -571,7 +598,7 @@ int ps3_repository_read_stor_dev_blk_siz
                make_first_field("bus", bus_index),
                make_field("dev", dev_index),
                make_field("blk_size", 0),
                make_first_field("bus", bus_index),
                make_field("dev", dev_index),
                make_field("blk_size", 0),
  }
  
  int ps3_repository_read_stor_dev_num_blocks(unsigned int bus_index,
  }
  
  int ps3_repository_read_stor_dev_num_blocks(unsigned int bus_index,
-@@ -581,7 +608,7 @@
+@@ -581,7 +608,7 @@ int ps3_repository_read_stor_dev_num_blo
                make_first_field("bus", bus_index),
                make_field("dev", dev_index),
                make_field("n_blocks", 0),
                make_first_field("bus", bus_index),
                make_field("dev", dev_index),
                make_field("n_blocks", 0),
  }
  
  int ps3_repository_read_stor_dev_num_regions(unsigned int bus_index,
  }
  
  int ps3_repository_read_stor_dev_num_regions(unsigned int bus_index,
-@@ -594,7 +621,7 @@
+@@ -594,7 +621,7 @@ int ps3_repository_read_stor_dev_num_reg
                make_first_field("bus", bus_index),
                make_field("dev", dev_index),
                make_field("n_regs", 0),
                make_first_field("bus", bus_index),
                make_field("dev", dev_index),
                make_field("n_regs", 0),
        *num_regions = v1;
        return result;
  }
        *num_regions = v1;
        return result;
  }
-@@ -611,7 +638,7 @@
+@@ -611,7 +638,7 @@ int ps3_repository_read_stor_dev_region_
            make_field("dev", dev_index),
            make_field("region", region_index),
            make_field("id", 0),
            make_field("dev", dev_index),
            make_field("region", region_index),
            make_field("id", 0),
        *region_id = v1;
        return result;
  }
        *region_id = v1;
        return result;
  }
-@@ -624,7 +651,7 @@
+@@ -624,7 +651,7 @@ int ps3_repository_read_stor_dev_region_
            make_field("dev", dev_index),
            make_field("region", region_index),
            make_field("size", 0),
            make_field("dev", dev_index),
            make_field("region", region_index),
            make_field("size", 0),
  }
  
  int ps3_repository_read_stor_dev_region_start(unsigned int bus_index,
  }
  
  int ps3_repository_read_stor_dev_region_start(unsigned int bus_index,
-@@ -635,7 +662,7 @@
+@@ -635,7 +662,7 @@ int ps3_repository_read_stor_dev_region_
            make_field("dev", dev_index),
            make_field("region", region_index),
            make_field("start", 0),
            make_field("dev", dev_index),
            make_field("region", region_index),
            make_field("start", 0),
  }
  
  int ps3_repository_read_stor_dev_info(unsigned int bus_index,
  }
  
  int ps3_repository_read_stor_dev_info(unsigned int bus_index,
-@@ -684,6 +711,35 @@
+@@ -684,6 +711,35 @@ int ps3_repository_read_stor_dev_region(
        return result;
  }
  
        return result;
  }
  
  int ps3_repository_read_rm_size(unsigned int ppe_id, u64 *rm_size)
  {
        return read_node(PS3_LPAR_ID_CURRENT,
  int ps3_repository_read_rm_size(unsigned int ppe_id, u64 *rm_size)
  {
        return read_node(PS3_LPAR_ID_CURRENT,
-@@ -691,7 +747,7 @@
+@@ -691,7 +747,7 @@ int ps3_repository_read_rm_size(unsigned
                make_field("pu", 0),
                ppe_id,
                make_field("rm_size", 0),
                make_field("pu", 0),
                ppe_id,
                make_field("rm_size", 0),
  }
  
  int ps3_repository_read_region_total(u64 *region_total)
  }
  
  int ps3_repository_read_region_total(u64 *region_total)
-@@ -700,7 +756,7 @@
+@@ -700,7 +756,7 @@ int ps3_repository_read_region_total(u64
                make_first_field("bi", 0),
                make_field("rgntotal", 0),
                0, 0,
                make_first_field("bi", 0),
                make_field("rgntotal", 0),
                0, 0,
  }
  
  /**
  }
  
  /**
-@@ -736,7 +792,7 @@
+@@ -736,7 +792,7 @@ int ps3_repository_read_num_spu_reserved
                make_first_field("bi", 0),
                make_field("spun", 0),
                0, 0,
                make_first_field("bi", 0),
                make_field("spun", 0),
                0, 0,
        *num_spu_reserved = v1;
        return result;
  }
        *num_spu_reserved = v1;
        return result;
  }
-@@ -755,7 +811,7 @@
+@@ -755,7 +811,7 @@ int ps3_repository_read_num_spu_resource
                make_first_field("bi", 0),
                make_field("spursvn", 0),
                0, 0,
                make_first_field("bi", 0),
                make_field("spursvn", 0),
                0, 0,
        *num_resource_id = v1;
        return result;
  }
        *num_resource_id = v1;
        return result;
  }
-@@ -768,7 +824,7 @@
+@@ -768,7 +824,7 @@ int ps3_repository_read_num_spu_resource
   */
  
  int ps3_repository_read_spu_resource_id(unsigned int res_index,
   */
  
  int ps3_repository_read_spu_resource_id(unsigned int res_index,
  {
        int result;
        u64 v1;
  {
        int result;
        u64 v1;
-@@ -785,14 +841,14 @@
+@@ -785,14 +841,14 @@ int ps3_repository_read_spu_resource_id(
        return result;
  }
  
        return result;
  }
  
  }
  
  int ps3_repository_read_boot_dat_size(unsigned int *size)
  }
  
  int ps3_repository_read_boot_dat_size(unsigned int *size)
-@@ -805,7 +861,7 @@
+@@ -805,7 +861,7 @@ int ps3_repository_read_boot_dat_size(un
                make_field("boot_dat", 0),
                make_field("size", 0),
                0,
                make_field("boot_dat", 0),
                make_field("size", 0),
                0,
        *size = v1;
        return result;
  }
        *size = v1;
        return result;
  }
-@@ -820,7 +876,7 @@
+@@ -820,7 +876,7 @@ int ps3_repository_read_vuart_av_port(un
                make_field("vir_uart", 0),
                make_field("port", 0),
                make_field("avset", 0),
                make_field("vir_uart", 0),
                make_field("port", 0),
                make_field("avset", 0),
        *port = v1;
        return result;
  }
        *port = v1;
        return result;
  }
-@@ -835,7 +891,7 @@
+@@ -835,7 +891,7 @@ int ps3_repository_read_vuart_sysmgr_por
                make_field("vir_uart", 0),
                make_field("port", 0),
                make_field("sysmgr", 0),
                make_field("vir_uart", 0),
                make_field("port", 0),
                make_field("sysmgr", 0),
        *port = v1;
        return result;
  }
        *port = v1;
        return result;
  }
-@@ -856,6 +912,10 @@
+@@ -856,6 +912,10 @@ int ps3_repository_read_boot_dat_info(u6
                : ps3_repository_read_boot_dat_size(size);
  }
  
                : ps3_repository_read_boot_dat_size(size);
  }
  
  int ps3_repository_read_num_be(unsigned int *num_be)
  {
        int result;
  int ps3_repository_read_num_be(unsigned int *num_be)
  {
        int result;
-@@ -866,11 +926,17 @@
+@@ -866,11 +926,17 @@ int ps3_repository_read_num_be(unsigned 
                0,
                0,
                0,
                0,
                0,
                0,
  int ps3_repository_read_be_node_id(unsigned int be_index, u64 *node_id)
  {
        return read_node(PS3_LPAR_ID_PME,
  int ps3_repository_read_be_node_id(unsigned int be_index, u64 *node_id)
  {
        return read_node(PS3_LPAR_ID_PME,
-@@ -878,7 +944,23 @@
+@@ -878,7 +944,23 @@ int ps3_repository_read_be_node_id(unsig
                0,
                0,
                0,
                0,
                0,
                0,
  }
  
  int ps3_repository_read_tb_freq(u64 node_id, u64 *tb_freq)
  }
  
  int ps3_repository_read_tb_freq(u64 node_id, u64 *tb_freq)
-@@ -888,7 +970,7 @@
+@@ -888,7 +970,7 @@ int ps3_repository_read_tb_freq(u64 node
                node_id,
                make_field("clock", 0),
                0,
                node_id,
                make_field("clock", 0),
                0,
  }
  
  int ps3_repository_read_be_tb_freq(unsigned int be_index, u64 *tb_freq)
  }
  
  int ps3_repository_read_be_tb_freq(unsigned int be_index, u64 *tb_freq)
-@@ -897,11 +979,29 @@
+@@ -897,11 +979,29 @@ int ps3_repository_read_be_tb_freq(unsig
        u64 node_id;
  
        *tb_freq = 0;
        u64 node_id;
  
        *tb_freq = 0;
  #if defined(DEBUG)
  
  int ps3_repository_dump_resource_info(const struct ps3_repository_device *repo)
  #if defined(DEBUG)
  
  int ps3_repository_dump_resource_info(const struct ps3_repository_device *repo)
-@@ -1034,7 +1134,7 @@
+@@ -1034,7 +1134,7 @@ static int dump_device_info(struct ps3_r
                        continue;
                }
  
                        continue;
                }
  
                        __LINE__, repo->bus_index, repo->dev_index,
                        repo->dev_type, repo->dev_id);
  
                        __LINE__, repo->bus_index, repo->dev_index,
                        repo->dev_type, repo->dev_id);
  
-@@ -1091,7 +1191,7 @@
+@@ -1091,7 +1191,7 @@ int ps3_repository_dump_bus_info(void)
                        continue;
                }
  
                        continue;
                }
  
  #include "platform.h"
  
  /* spu_management_ops */
  #include "platform.h"
  
  /* spu_management_ops */
-@@ -419,10 +420,34 @@
+@@ -419,10 +420,34 @@ static int ps3_init_affinity(void)
        return 0;
  }
  
        return 0;
  }
  
        .init_affinity = ps3_init_affinity,
  };
  
        .init_affinity = ps3_init_affinity,
  };
  
-@@ -505,8 +530,6 @@
+@@ -505,8 +530,6 @@ static void mfc_sr1_set(struct spu *spu,
        static const u64 allowed = ~(MFC_STATE1_LOCAL_STORAGE_DECODE_MASK
                | MFC_STATE1_PROBLEM_STATE_MASK);
  
        static const u64 allowed = ~(MFC_STATE1_LOCAL_STORAGE_DECODE_MASK
                | MFC_STATE1_PROBLEM_STATE_MASK);
  
        spu_pdata(spu)->cache.sr1 = sr1;
 --- a/arch/powerpc/platforms/ps3/system-bus.c
 +++ b/arch/powerpc/platforms/ps3/system-bus.c
        spu_pdata(spu)->cache.sr1 = sr1;
 --- a/arch/powerpc/platforms/ps3/system-bus.c
 +++ b/arch/powerpc/platforms/ps3/system-bus.c
-@@ -42,8 +42,8 @@
+@@ -42,8 +42,8 @@ struct {
        int gpu;
  } static usage_hack;
  
        int gpu;
  } static usage_hack;
  
  {
        return dev->bus_id == bus_id && dev->dev_id == dev_id;
  }
  {
        return dev->bus_id == bus_id && dev->dev_id == dev_id;
  }
-@@ -182,8 +182,8 @@
+@@ -182,8 +182,8 @@ int ps3_open_hv_device(struct ps3_system
        case PS3_MATCH_ID_SYSTEM_MANAGER:
                pr_debug("%s:%d: unsupported match_id: %u\n", __func__,
                        __LINE__, dev->match_id);
        case PS3_MATCH_ID_SYSTEM_MANAGER:
                pr_debug("%s:%d: unsupported match_id: %u\n", __func__,
                        __LINE__, dev->match_id);
                BUG();
                return -EINVAL;
  
                BUG();
                return -EINVAL;
  
-@@ -220,8 +220,8 @@
+@@ -220,8 +220,8 @@ int ps3_close_hv_device(struct ps3_syste
        case PS3_MATCH_ID_SYSTEM_MANAGER:
                pr_debug("%s:%d: unsupported match_id: %u\n", __func__,
                        __LINE__, dev->match_id);
        case PS3_MATCH_ID_SYSTEM_MANAGER:
                pr_debug("%s:%d: unsupported match_id: %u\n", __func__,
                        __LINE__, dev->match_id);
                BUG();
                return -EINVAL;
  
                BUG();
                return -EINVAL;
  
-@@ -240,7 +240,7 @@
+@@ -240,7 +240,7 @@ EXPORT_SYMBOL_GPL(ps3_close_hv_device);
  static void _dump_mmio_region(const struct ps3_mmio_region* r,
        const char* func, int line)
  {
  static void _dump_mmio_region(const struct ps3_mmio_region* r,
        const char* func, int line)
  {
                r->dev->dev_id);
        pr_debug("%s:%d: bus_addr  %lxh\n", func, line, r->bus_addr);
        pr_debug("%s:%d: len       %lxh\n", func, line, r->len);
                r->dev->dev_id);
        pr_debug("%s:%d: bus_addr  %lxh\n", func, line, r->bus_addr);
        pr_debug("%s:%d: len       %lxh\n", func, line, r->len);
-@@ -715,6 +715,7 @@
+@@ -715,6 +715,7 @@ int ps3_system_bus_device_register(struc
        static unsigned int dev_ioc0_count;
        static unsigned int dev_sb_count;
        static unsigned int dev_vuart_count;
        static unsigned int dev_ioc0_count;
        static unsigned int dev_sb_count;
        static unsigned int dev_vuart_count;
  
        if (!dev->core.parent)
                dev->core.parent = &ps3_system_bus;
  
        if (!dev->core.parent)
                dev->core.parent = &ps3_system_bus;
-@@ -737,6 +738,10 @@
+@@ -737,6 +738,10 @@ int ps3_system_bus_device_register(struc
                snprintf(dev->core.bus_id, sizeof(dev->core.bus_id),
                        "vuart_%02x", ++dev_vuart_count);
                break;
                snprintf(dev->core.bus_id, sizeof(dev->core.bus_id),
                        "vuart_%02x", ++dev_vuart_count);
                break;
  #include <asm/atomic.h>
  #include <asm/eeh.h>
  #include <asm/eeh_event.h>
  #include <asm/atomic.h>
  #include <asm/eeh.h>
  #include <asm/eeh_event.h>
-@@ -169,7 +171,6 @@
+@@ -169,7 +171,6 @@ static void rtas_slot_error_detail(struc
   */
  static size_t gather_pci_data(struct pci_dn *pdn, char * buf, size_t len)
  {
   */
  static size_t gather_pci_data(struct pci_dn *pdn, char * buf, size_t len)
  {
        struct pci_dev *dev = pdn->pcidev;
        u32 cfg;
        int cap, i;
        struct pci_dev *dev = pdn->pcidev;
        u32 cfg;
        int cap, i;
-@@ -243,12 +244,12 @@
+@@ -243,12 +244,12 @@ static size_t gather_pci_data(struct pci
  
        /* Gather status on devices under the bridge */
        if (dev->class >> 16 == PCI_BASE_CLASS_BRIDGE) {
  
        /* Gather status on devices under the bridge */
        if (dev->class >> 16 == PCI_BASE_CLASS_BRIDGE) {
                }
        }
  
                }
        }
  
-@@ -372,7 +373,7 @@
+@@ -372,7 +373,7 @@ struct device_node * find_device_pe(stru
        return dn;
  }
  
        return dn;
  }
  
   *  Mark the device driver too, so that it can see the failure
   *  immediately; this is critical, since some drivers poll
   *  status registers in interrupts ... If a driver is polling,
   *  Mark the device driver too, so that it can see the failure
   *  immediately; this is critical, since some drivers poll
   *  status registers in interrupts ... If a driver is polling,
-@@ -380,9 +381,11 @@
+@@ -380,9 +381,11 @@ struct device_node * find_device_pe(stru
   *  an interrupt context, which is bad.
   */
  
   *  an interrupt context, which is bad.
   */
  
                if (PCI_DN(dn)) {
                        /* Mark the pci device driver too */
                        struct pci_dev *dev = PCI_DN(dn)->pcidev;
                if (PCI_DN(dn)) {
                        /* Mark the pci device driver too */
                        struct pci_dev *dev = PCI_DN(dn)->pcidev;
-@@ -392,10 +395,8 @@
+@@ -392,10 +395,8 @@ static void __eeh_mark_slot (struct devi
                        if (dev && dev->driver)
                                dev->error_state = pci_channel_io_frozen;
  
                        if (dev && dev->driver)
                                dev->error_state = pci_channel_io_frozen;
  
        }
  }
  
        }
  }
  
-@@ -415,19 +416,19 @@
+@@ -415,19 +416,19 @@ void eeh_mark_slot (struct device_node *
        if (dev)
                dev->error_state = pci_channel_io_frozen;
  
        if (dev)
                dev->error_state = pci_channel_io_frozen;
  
        }
  }
  
        }
  }
  
-@@ -444,7 +445,7 @@
+@@ -444,7 +445,7 @@ void eeh_clear_slot (struct device_node 
  
        PCI_DN(dn)->eeh_mode &= ~mode_flag;
        PCI_DN(dn)->eeh_check_count = 0;
  
        PCI_DN(dn)->eeh_mode &= ~mode_flag;
        PCI_DN(dn)->eeh_check_count = 0;
        spin_unlock_irqrestore(&confirm_error_lock, flags);
  }
  
        spin_unlock_irqrestore(&confirm_error_lock, flags);
  }
  
-@@ -480,6 +481,7 @@
+@@ -480,6 +481,7 @@ int eeh_dn_check_failure(struct device_n
                no_dn++;
                return 0;
        }
                no_dn++;
                return 0;
        }
        pdn = PCI_DN(dn);
  
        /* Access to IO BARs might get this far and still not want checking. */
        pdn = PCI_DN(dn);
  
        /* Access to IO BARs might get this far and still not want checking. */
-@@ -545,7 +547,7 @@
+@@ -545,7 +547,7 @@ int eeh_dn_check_failure(struct device_n
  
        /* Note that config-io to empty slots may fail;
         * they are empty when they don't have children. */
  
        /* Note that config-io to empty slots may fail;
         * they are empty when they don't have children. */
                false_positives++;
                pdn->eeh_false_positives ++;
                rc = 0;
                false_positives++;
                pdn->eeh_false_positives ++;
                rc = 0;
-@@ -848,11 +850,8 @@
+@@ -848,11 +850,8 @@ void eeh_restore_bars(struct pci_dn *pdn
        if ((pdn->eeh_mode & EEH_MODE_SUPPORTED) && !IS_BRIDGE(pdn->class_code))
                __restore_bars (pdn);
  
        if ((pdn->eeh_mode & EEH_MODE_SUPPORTED) && !IS_BRIDGE(pdn->class_code))
                __restore_bars (pdn);
  
  }
  
  /**
  }
  
  /**
-@@ -1130,7 +1129,8 @@
+@@ -1130,7 +1129,8 @@ static void eeh_add_device_early(struct 
  void eeh_add_device_tree_early(struct device_node *dn)
  {
        struct device_node *sib;
  void eeh_add_device_tree_early(struct device_node *dn)
  {
        struct device_node *sib;
  }
 --- a/arch/powerpc/platforms/pseries/eeh_driver.c
 +++ b/arch/powerpc/platforms/pseries/eeh_driver.c
  }
 --- a/arch/powerpc/platforms/pseries/eeh_driver.c
 +++ b/arch/powerpc/platforms/pseries/eeh_driver.c
-@@ -310,8 +310,6 @@
+@@ -310,8 +310,6 @@ struct pci_dn * handle_eeh_events (struc
        const char *location, *pci_str, *drv_str;
  
        frozen_dn = find_device_pe(event->dn);
        const char *location, *pci_str, *drv_str;
  
        frozen_dn = find_device_pe(event->dn);
        if (!frozen_dn) {
  
                location = of_get_property(event->dn, "ibm,loc-code", NULL);
        if (!frozen_dn) {
  
                location = of_get_property(event->dn, "ibm,loc-code", NULL);
-@@ -321,6 +319,8 @@
+@@ -321,6 +319,8 @@ struct pci_dn * handle_eeh_events (struc
                        location, pci_name(event->dev));
                return NULL;
        }
                        location, pci_name(event->dev));
                return NULL;
        }
        location = of_get_property(frozen_dn, "ibm,loc-code", NULL);
        location = location ? location : "unknown";
  
        location = of_get_property(frozen_dn, "ibm,loc-code", NULL);
        location = location ? location : "unknown";
  
-@@ -354,13 +354,6 @@
+@@ -354,13 +354,6 @@ struct pci_dn * handle_eeh_events (struc
        if (frozen_pdn->eeh_freeze_count > EEH_MAX_ALLOWED_FREEZES)
                goto excess_failures;
  
        if (frozen_pdn->eeh_freeze_count > EEH_MAX_ALLOWED_FREEZES)
                goto excess_failures;
  
        printk(KERN_WARNING
           "EEH: This PCI device has failed %d times in the last hour:\n",
                frozen_pdn->eeh_freeze_count);
        printk(KERN_WARNING
           "EEH: This PCI device has failed %d times in the last hour:\n",
                frozen_pdn->eeh_freeze_count);
-@@ -376,6 +369,14 @@
+@@ -376,6 +369,14 @@ struct pci_dn * handle_eeh_events (struc
         */
        pci_walk_bus(frozen_bus, eeh_report_error, &result);
  
         */
        pci_walk_bus(frozen_bus, eeh_report_error, &result);
  
         * have been informed.
 --- a/arch/powerpc/platforms/pseries/iommu.c
 +++ b/arch/powerpc/platforms/pseries/iommu.c
         * have been informed.
 --- a/arch/powerpc/platforms/pseries/iommu.c
 +++ b/arch/powerpc/platforms/pseries/iommu.c
-@@ -251,7 +251,7 @@
+@@ -251,7 +251,7 @@ static void iommu_table_setparms(struct 
        const unsigned long *basep;
        const u32 *sizep;
  
        const unsigned long *basep;
        const u32 *sizep;
  
  
        basep = of_get_property(node, "linux,tce-base", NULL);
        sizep = of_get_property(node, "linux,tce-size", NULL);
  
        basep = of_get_property(node, "linux,tce-base", NULL);
        sizep = of_get_property(node, "linux,tce-size", NULL);
-@@ -296,11 +296,12 @@
+@@ -296,11 +296,12 @@ static void iommu_table_setparms(struct 
  static void iommu_table_setparms_lpar(struct pci_controller *phb,
                                      struct device_node *dn,
                                      struct iommu_table *tbl,
  static void iommu_table_setparms_lpar(struct pci_controller *phb,
                                      struct device_node *dn,
                                      struct iommu_table *tbl,
        of_parse_dma_window(dn, dma_window, &tbl->it_index, &offset, &size);
  
        tbl->it_base   = 0;
        of_parse_dma_window(dn, dma_window, &tbl->it_index, &offset, &size);
  
        tbl->it_base   = 0;
-@@ -420,17 +421,10 @@
+@@ -420,17 +421,10 @@ static void pci_dma_bus_setup_pSeriesLP(
            pdn->full_name, ppci->iommu_table);
  
        if (!ppci->iommu_table) {
            pdn->full_name, ppci->iommu_table);
  
        if (!ppci->iommu_table) {
                ppci->iommu_table = iommu_init_table(tbl, ppci->phb->node);
                DBG("  created table: %p\n", ppci->iommu_table);
        }
                ppci->iommu_table = iommu_init_table(tbl, ppci->phb->node);
                DBG("  created table: %p\n", ppci->iommu_table);
        }
-@@ -523,14 +517,10 @@
+@@ -523,14 +517,10 @@ static void pci_dma_dev_setup_pSeriesLP(
  
        pci = PCI_DN(pdn);
        if (!pci->iommu_table) {
  
        pci = PCI_DN(pdn);
        if (!pci->iommu_table) {
                pci->iommu_table = iommu_init_table(tbl, pci->phb->node);
                DBG("  created table: %p\n", pci->iommu_table);
        } else {
                pci->iommu_table = iommu_init_table(tbl, pci->phb->node);
                DBG("  created table: %p\n", pci->iommu_table);
        } else {
-@@ -556,7 +546,7 @@
+@@ -556,7 +546,7 @@ static int iommu_reconfig_notifier(struc
        case PSERIES_RECONFIG_REMOVE:
                if (pci && pci->iommu_table &&
                    of_get_property(np, "ibm,dma-window", NULL))
        case PSERIES_RECONFIG_REMOVE:
                if (pci && pci->iommu_table &&
                    of_get_property(np, "ibm,dma-window", NULL))
                err = NOTIFY_DONE;
 --- a/arch/powerpc/platforms/pseries/pci_dlpar.c
 +++ b/arch/powerpc/platforms/pseries/pci_dlpar.c
                err = NOTIFY_DONE;
 --- a/arch/powerpc/platforms/pseries/pci_dlpar.c
 +++ b/arch/powerpc/platforms/pseries/pci_dlpar.c
-@@ -83,7 +83,7 @@
+@@ -83,7 +83,7 @@ EXPORT_SYMBOL_GPL(pcibios_remove_pci_dev
  
  /* Must be called before pci_bus_add_devices */
  void
  
  /* Must be called before pci_bus_add_devices */
  void
  {
        struct pci_dev *dev;
  
  {
        struct pci_dev *dev;
  
-@@ -98,8 +98,6 @@
+@@ -98,8 +98,6 @@ pcibios_fixup_new_pci_devices(struct pci
                        /* Fill device archdata and setup iommu table */
                        pcibios_setup_new_device(dev);
  
                        /* Fill device archdata and setup iommu table */
                        pcibios_setup_new_device(dev);
  
                        pci_read_irq_line(dev);
                        for (i = 0; i < PCI_NUM_RESOURCES; i++) {
                                struct resource *r = &dev->resource[i];
                        pci_read_irq_line(dev);
                        for (i = 0; i < PCI_NUM_RESOURCES; i++) {
                                struct resource *r = &dev->resource[i];
-@@ -132,8 +130,8 @@
+@@ -132,8 +130,8 @@ pcibios_pci_config_bridge(struct pci_dev
  
        pci_scan_child_bus(child_bus);
  
  
        pci_scan_child_bus(child_bus);
  
  
        /* Make the discovered devices available */
        pci_bus_add_devices(child_bus);
  
        /* Make the discovered devices available */
        pci_bus_add_devices(child_bus);
-@@ -169,7 +167,7 @@
+@@ -169,7 +167,7 @@ pcibios_add_pci_devices(struct pci_bus *
                /* use ofdt-based probe */
                of_scan_bus(dn, bus);
                if (!list_empty(&bus->devices)) {
                /* use ofdt-based probe */
                of_scan_bus(dn, bus);
                if (!list_empty(&bus->devices)) {
                        pci_bus_add_devices(bus);
                        eeh_add_device_tree_late(bus);
                }
                        pci_bus_add_devices(bus);
                        eeh_add_device_tree_late(bus);
                }
-@@ -178,7 +176,7 @@
+@@ -178,7 +176,7 @@ pcibios_add_pci_devices(struct pci_bus *
                slotno = PCI_SLOT(PCI_DN(dn->child)->devfn);
                num = pci_scan_slot(bus, PCI_DEVFN(slotno, 0));
                if (num) {
                slotno = PCI_SLOT(PCI_DN(dn->child)->devfn);
                num = pci_scan_slot(bus, PCI_DEVFN(slotno, 0));
                if (num) {
                        pci_bus_add_devices(bus);
                        eeh_add_device_tree_late(bus);
                }
                        pci_bus_add_devices(bus);
                        eeh_add_device_tree_late(bus);
                }
-@@ -208,7 +206,7 @@
+@@ -208,7 +206,7 @@ struct pci_controller * __devinit init_p
                eeh_add_device_tree_early(dn);
  
        scan_phb(phb);
                eeh_add_device_tree_early(dn);
  
        scan_phb(phb);
  
 --- a/arch/powerpc/platforms/pseries/plpar_wrappers.h
 +++ b/arch/powerpc/platforms/pseries/plpar_wrappers.h
  
 --- a/arch/powerpc/platforms/pseries/plpar_wrappers.h
 +++ b/arch/powerpc/platforms/pseries/plpar_wrappers.h
-@@ -8,11 +8,6 @@
+@@ -8,11 +8,6 @@ static inline long poll_pending(void)
        return plpar_hcall_norets(H_POLL_PENDING);
  }
  
        return plpar_hcall_norets(H_POLL_PENDING);
  }
  
  
  #include "plpar_wrappers.h"
  #include "pseries.h"
  
  #include "plpar_wrappers.h"
  #include "pseries.h"
-@@ -202,7 +203,7 @@
+@@ -202,7 +203,7 @@ static int smp_pSeries_cpu_bootable(unsi
         */
        if (system_state < SYSTEM_RUNNING &&
            cpu_has_feature(CPU_FTR_SMT) &&
         */
        if (system_state < SYSTEM_RUNNING &&
            cpu_has_feature(CPU_FTR_SMT) &&
        return 1;
 --- a/arch/powerpc/platforms/pseries/xics.c
 +++ b/arch/powerpc/platforms/pseries/xics.c
        return 1;
 --- a/arch/powerpc/platforms/pseries/xics.c
 +++ b/arch/powerpc/platforms/pseries/xics.c
-@@ -87,19 +87,25 @@
+@@ -87,19 +87,25 @@ static int ibm_int_off;
  /* Direct HW low level accessors */
  
  
  /* Direct HW low level accessors */
  
  
  }
  
  static inline void direct_qirr_info(int n_cpu, u8 value)
  }
  
  static inline void direct_qirr_info(int n_cpu, u8 value)
-@@ -111,7 +117,7 @@
+@@ -111,7 +117,7 @@ static inline void direct_qirr_info(int 
  /* LPAR low level accessors */
  
  
  /* LPAR low level accessors */
  
  
  {
        unsigned long lpar_rc;
        unsigned long return_value;
  {
        unsigned long lpar_rc;
        unsigned long return_value;
-@@ -122,7 +128,7 @@
+@@ -122,7 +128,7 @@ static inline unsigned int lpar_xirr_inf
        return (unsigned int)return_value;
  }
  
        return (unsigned int)return_value;
  }
  
  {
        unsigned long lpar_rc;
        unsigned long val64 = value & 0xffffffff;
  {
        unsigned long lpar_rc;
        unsigned long val64 = value & 0xffffffff;
-@@ -133,7 +139,7 @@
+@@ -133,7 +139,7 @@ static inline void lpar_xirr_info_set(in
                      val64);
  }
  
                      val64);
  }
  
  {
        unsigned long lpar_rc;
  
  {
        unsigned long lpar_rc;
  
-@@ -275,21 +281,19 @@
+@@ -275,21 +281,19 @@ static unsigned int xics_startup(unsigne
  
  static void xics_eoi_direct(unsigned int virq)
  {
  
  static void xics_eoi_direct(unsigned int virq)
  {
  }
  
  static inline unsigned int xics_remap_irq(unsigned int vec)
  }
  
  static inline unsigned int xics_remap_irq(unsigned int vec)
-@@ -312,16 +316,12 @@
+@@ -312,16 +316,12 @@ static inline unsigned int xics_remap_ir
  
  static unsigned int xics_get_irq_direct(void)
  {
  
  static unsigned int xics_get_irq_direct(void)
  {
  }
  
  #ifdef CONFIG_SMP
  }
  
  #ifdef CONFIG_SMP
-@@ -387,12 +387,12 @@
+@@ -387,12 +387,12 @@ void xics_cause_IPI(int cpu)
  
  #endif /* CONFIG_SMP */
  
  
  #endif /* CONFIG_SMP */
  
        iosync();
  }
  
        iosync();
  }
  
-@@ -440,9 +440,7 @@
+@@ -440,9 +440,7 @@ static void xics_set_affinity(unsigned i
  
  void xics_setup_cpu(void)
  {
  
  void xics_setup_cpu(void)
  {
  
        /*
         * Put the calling processor into the GIQ.  This is really only
  
        /*
         * Put the calling processor into the GIQ.  This is really only
-@@ -783,7 +781,7 @@
+@@ -783,7 +781,7 @@ void xics_teardown_cpu(int secondary)
        unsigned int ipi;
        struct irq_desc *desc;
  
        unsigned int ipi;
        struct irq_desc *desc;
  
  
        /*
         * Clear IPI
  
        /*
         * Clear IPI
-@@ -824,10 +822,11 @@
+@@ -824,10 +822,11 @@ void xics_teardown_cpu(int secondary)
  void xics_migrate_irqs_away(void)
  {
        int status;
  void xics_migrate_irqs_away(void)
  {
        int status;
  
        /* remove ourselves from the global interrupt queue */
        status = rtas_set_indicator_fast(GLOBAL_INTERRUPT_QUEUE,
  
        /* remove ourselves from the global interrupt queue */
        status = rtas_set_indicator_fast(GLOBAL_INTERRUPT_QUEUE,
-@@ -835,7 +834,7 @@
+@@ -835,7 +834,7 @@ void xics_migrate_irqs_away(void)
        WARN_ON(status < 0);
  
        /* Allow IPIs again... */
        WARN_ON(status < 0);
  
        /* Allow IPIs again... */
  
        for_each_irq(virq) {
                struct irq_desc *desc;
  
        for_each_irq(virq) {
                struct irq_desc *desc;
-@@ -874,7 +873,7 @@
+@@ -874,7 +873,7 @@ void xics_migrate_irqs_away(void)
                 * The irq has to be migrated only in the single cpu
                 * case.
                 */
                 * The irq has to be migrated only in the single cpu
                 * case.
                 */
                printk(KERN_WARNING "IRQ %u affinity broken off cpu %u\n",
 --- a/arch/powerpc/platforms/pseries/xics.h
 +++ b/arch/powerpc/platforms/pseries/xics.h
                printk(KERN_WARNING "IRQ %u affinity broken off cpu %u\n",
 --- a/arch/powerpc/platforms/pseries/xics.h
 +++ b/arch/powerpc/platforms/pseries/xics.h
-@@ -21,9 +21,6 @@
+@@ -21,9 +21,6 @@ extern void xics_cause_IPI(int cpu);
  extern  void xics_request_IPIs(void);
  extern void xics_migrate_irqs_away(void);
  
  extern  void xics_request_IPIs(void);
  extern void xics_migrate_irqs_away(void);
  
 +      default n
 --- a/arch/powerpc/sysdev/Makefile
 +++ b/arch/powerpc/sysdev/Makefile
 +      default n
 --- a/arch/powerpc/sysdev/Makefile
 +++ b/arch/powerpc/sysdev/Makefile
-@@ -2,7 +2,7 @@
+@@ -2,7 +2,7 @@ ifeq ($(CONFIG_PPC64),y)
  EXTRA_CFLAGS                  += -mno-minimal-toc
  endif
  
  EXTRA_CFLAGS                  += -mno-minimal-toc
  endif
  
  obj-$(CONFIG_MPIC)            += mpic.o $(mpic-msi-obj-y)
  
  obj-$(CONFIG_PPC_MPC106)      += grackle.o
  obj-$(CONFIG_MPIC)            += mpic.o $(mpic-msi-obj-y)
  
  obj-$(CONFIG_PPC_MPC106)      += grackle.o
-@@ -12,6 +12,7 @@
+@@ -12,6 +12,7 @@ obj-$(CONFIG_U3_DART)                += dart_iommu.o
  obj-$(CONFIG_MMIO_NVRAM)      += mmio_nvram.o
  obj-$(CONFIG_FSL_SOC)         += fsl_soc.o
  obj-$(CONFIG_FSL_PCI)         += fsl_pci.o
  obj-$(CONFIG_MMIO_NVRAM)      += mmio_nvram.o
  obj-$(CONFIG_FSL_SOC)         += fsl_soc.o
  obj-$(CONFIG_FSL_PCI)         += fsl_pci.o
  obj-$(CONFIG_TSI108_BRIDGE)   += tsi108_pci.o tsi108_dev.o
  obj-$(CONFIG_QUICC_ENGINE)    += qe_lib/
  obj-$(CONFIG_PPC_BESTCOMM)    += bestcomm/
  obj-$(CONFIG_TSI108_BRIDGE)   += tsi108_pci.o tsi108_dev.o
  obj-$(CONFIG_QUICC_ENGINE)    += qe_lib/
  obj-$(CONFIG_PPC_BESTCOMM)    += bestcomm/
-@@ -24,9 +25,13 @@
+@@ -24,9 +25,13 @@ obj-$(CONFIG_AXON_RAM)              += axonram.o
  ifeq ($(CONFIG_PPC_MERGE),y)
  obj-$(CONFIG_PPC_INDIRECT_PCI)        += indirect_pci.o
  obj-$(CONFIG_PPC_I8259)               += i8259.o
  ifeq ($(CONFIG_PPC_MERGE),y)
  obj-$(CONFIG_PPC_INDIRECT_PCI)        += indirect_pci.o
  obj-$(CONFIG_PPC_I8259)               += i8259.o
  
 --- a/arch/powerpc/sysdev/bestcomm/bestcomm.h
 +++ b/arch/powerpc/sysdev/bestcomm/bestcomm.h
  
 --- a/arch/powerpc/sysdev/bestcomm/bestcomm.h
 +++ b/arch/powerpc/sysdev/bestcomm/bestcomm.h
-@@ -20,7 +20,7 @@
+@@ -20,7 +20,7 @@ struct bcom_bd; /* defined later on ... 
  
  
  /* ======================================================================== */
  
  
  /* ======================================================================== */
  /**
 --- a/arch/powerpc/sysdev/commproc.c
 +++ b/arch/powerpc/sysdev/commproc.c
  /**
 --- a/arch/powerpc/sysdev/commproc.c
 +++ b/arch/powerpc/sysdev/commproc.c
-@@ -240,6 +240,34 @@
+@@ -240,6 +240,34 @@ void __init cpm_reset(void)
  #endif
  }
  
  #endif
  }
  
  /* We used to do this earlier, but have to postpone as long as possible
   * to ensure the kernel VM is now running.
   */
  /* We used to do this earlier, but have to postpone as long as possible
   * to ensure the kernel VM is now running.
   */
-@@ -408,7 +436,7 @@
+@@ -408,7 +436,7 @@ EXPORT_SYMBOL(cpm_dpram_phys);
  #endif /* !CONFIG_PPC_CPM_NEW_BINDING */
  
  struct cpm_ioport16 {
  #endif /* !CONFIG_PPC_CPM_NEW_BINDING */
  
  struct cpm_ioport16 {
        __be16 res[3];
  };
  
        __be16 res[3];
  };
  
-@@ -438,6 +466,13 @@
+@@ -438,6 +466,13 @@ static void cpm1_set_pin32(int port, int
        else
                clrbits32(&iop->par, pin);
  
        else
                clrbits32(&iop->par, pin);
  
        if (port == CPM_PORTE) {
                if (flags & CPM_PIN_SECONDARY)
                        setbits32(&iop->sor, pin);
        if (port == CPM_PORTE) {
                if (flags & CPM_PIN_SECONDARY)
                        setbits32(&iop->sor, pin);
-@@ -471,11 +506,17 @@
+@@ -471,11 +506,17 @@ static void cpm1_set_pin16(int port, int
        else
                clrbits16(&iop->par, pin);
  
        else
                clrbits16(&iop->par, pin);
  
  
 --- a/arch/powerpc/sysdev/cpm2_common.c
 +++ b/arch/powerpc/sysdev/cpm2_common.c
  
 --- a/arch/powerpc/sysdev/cpm2_common.c
 +++ b/arch/powerpc/sysdev/cpm2_common.c
-@@ -82,6 +82,31 @@
+@@ -82,6 +82,31 @@ void __init cpm2_reset(void)
        cpmp = &cpm2_immr->im_cpm;
  }
  
        cpmp = &cpm2_immr->im_cpm;
  }
  
   * as clocks.  The BRGs are in two different block of internal
 --- a/arch/powerpc/sysdev/fsl_pci.c
 +++ b/arch/powerpc/sysdev/fsl_pci.c
   * as clocks.  The BRGs are in two different block of internal
 --- a/arch/powerpc/sysdev/fsl_pci.c
 +++ b/arch/powerpc/sysdev/fsl_pci.c
-@@ -33,8 +33,8 @@
+@@ -33,8 +33,8 @@ void __init setup_pci_atmu(struct pci_co
        struct ccsr_pci __iomem *pci;
        int i;
  
        struct ccsr_pci __iomem *pci;
        int i;
  
        pci = ioremap(rsrc->start, rsrc->end - rsrc->start + 1);
  
        /* Disable all windows (except powar0 since its ignored) */
        pci = ioremap(rsrc->start, rsrc->end - rsrc->start + 1);
  
        /* Disable all windows (except powar0 since its ignored) */
-@@ -46,17 +46,17 @@
+@@ -46,17 +46,17 @@ void __init setup_pci_atmu(struct pci_co
        /* Setup outbound MEM window */
        for(i = 0; i < 3; i++)
                if (hose->mem_resources[i].flags & IORESOURCE_MEM){
        /* Setup outbound MEM window */
        for(i = 0; i < 3; i++)
                if (hose->mem_resources[i].flags & IORESOURCE_MEM){
                        /* Enable, Mem R/W */
                        out_be32(&pci->pow[i+1].powar, 0x80044000
                                | (__ilog2(hose->mem_resources[i].end
                        /* Enable, Mem R/W */
                        out_be32(&pci->pow[i+1].powar, 0x80044000
                                | (__ilog2(hose->mem_resources[i].end
-@@ -65,15 +65,14 @@
+@@ -65,15 +65,14 @@ void __init setup_pci_atmu(struct pci_co
  
        /* Setup outbound IO window */
        if (hose->io_resource.flags & IORESOURCE_IO){
  
        /* Setup outbound IO window */
        if (hose->io_resource.flags & IORESOURCE_IO){
                /* Enable, IO R/W */
                out_be32(&pci->pow[i+1].powar, 0x80088000
                        | (__ilog2(hose->io_resource.end
                /* Enable, IO R/W */
                out_be32(&pci->pow[i+1].powar, 0x80088000
                        | (__ilog2(hose->io_resource.end
-@@ -107,55 +106,17 @@
+@@ -107,55 +106,17 @@ void __init setup_pci_cmd(struct pci_con
        }
  }
  
        }
  }
  
  }
  
  int __init fsl_pcie_check_link(struct pci_controller *hose)
  }
  
  int __init fsl_pcie_check_link(struct pci_controller *hose)
-@@ -172,11 +133,24 @@
+@@ -172,11 +133,24 @@ void fsl_pcibios_fixup_bus(struct pci_bu
        struct pci_controller *hose = (struct pci_controller *) bus->sysdata;
        int i;
  
        struct pci_controller *hose = (struct pci_controller *) bus->sysdata;
        int i;
  
                }
        }
  }
                }
        }
  }
-@@ -202,7 +176,7 @@
+@@ -202,7 +176,7 @@ int __init fsl_add_bridge(struct device_
                printk(KERN_WARNING "Can't get bus-range for %s, assume"
                        " bus 0\n", dev->full_name);
  
                printk(KERN_WARNING "Can't get bus-range for %s, assume"
                        " bus 0\n", dev->full_name);
  
        hose = pcibios_alloc_controller(dev);
        if (!hose)
                return -ENOMEM;
        hose = pcibios_alloc_controller(dev);
        if (!hose)
                return -ENOMEM;
-@@ -222,7 +196,7 @@
+@@ -222,7 +196,7 @@ int __init fsl_add_bridge(struct device_
                        hose->indirect_type |= PPC_INDIRECT_TYPE_NO_PCIE_LINK;
        }
  
                        hose->indirect_type |= PPC_INDIRECT_TYPE_NO_PCIE_LINK;
        }
  
                "Firmware bus number: %d->%d\n",
                (unsigned long long)rsrc.start, hose->first_busno,
                hose->last_busno);
                "Firmware bus number: %d->%d\n",
                (unsigned long long)rsrc.start, hose->first_busno,
                hose->last_busno);
-@@ -240,23 +214,23 @@
+@@ -240,23 +214,23 @@ int __init fsl_add_bridge(struct device_
        return 0;
  }
  
        return 0;
  }
  
  #include <linux/spi/spi.h>
  #include <linux/fsl_devices.h>
  #include <linux/fs_enet_pd.h>
  #include <linux/spi/spi.h>
  #include <linux/fsl_devices.h>
  #include <linux/fs_enet_pd.h>
-@@ -54,10 +55,18 @@
+@@ -54,10 +55,18 @@ phys_addr_t get_immrbase(void)
        soc = of_find_node_by_type(NULL, "soc");
        if (soc) {
                int size;
        soc = of_find_node_by_type(NULL, "soc");
        if (soc) {
                int size;
                of_node_put(soc);
        }
  
                of_node_put(soc);
        }
  
-@@ -130,17 +139,51 @@
+@@ -130,17 +139,51 @@ u32 get_baudrate(void)
  EXPORT_SYMBOL(get_baudrate);
  #endif /* CONFIG_CPM2 */
  
  EXPORT_SYMBOL(get_baudrate);
  #endif /* CONFIG_CPM2 */
  
                int k;
                struct device_node *child = NULL;
                struct gianfar_mdio_data mdio_data;
                int k;
                struct device_node *child = NULL;
                struct gianfar_mdio_data mdio_data;
-@@ -179,11 +222,13 @@
+@@ -179,11 +222,13 @@ static int __init gfar_mdio_of_init(void
                        goto unreg;
        }
  
                        goto unreg;
        }
  
        return ret;
  }
  
        return ret;
  }
  
-@@ -193,7 +238,6 @@
+@@ -193,7 +238,6 @@ static const char *gfar_tx_intr = "tx";
  static const char *gfar_rx_intr = "rx";
  static const char *gfar_err_intr = "error";
  
  static const char *gfar_rx_intr = "rx";
  static const char *gfar_err_intr = "error";
  
  static int __init gfar_of_init(void)
  {
        struct device_node *np;
  static int __init gfar_of_init(void)
  {
        struct device_node *np;
-@@ -277,29 +321,43 @@
+@@ -277,29 +321,43 @@ static int __init gfar_of_init(void)
                        gfar_data.interface = PHY_INTERFACE_MODE_MII;
  
                ph = of_get_property(np, "phy-handle", NULL);
                        gfar_data.interface = PHY_INTERFACE_MODE_MII;
  
                ph = of_get_property(np, "phy-handle", NULL);
                ret =
                    platform_device_add_data(gfar_dev, &gfar_data,
                                             sizeof(struct
                ret =
                    platform_device_add_data(gfar_dev, &gfar_data,
                                             sizeof(struct
-@@ -390,13 +448,11 @@
+@@ -390,13 +448,11 @@ static void __init of_register_i2c_devic
  static int __init fsl_i2c_of_init(void)
  {
        struct device_node *np;
  static int __init fsl_i2c_of_init(void)
  {
        struct device_node *np;
                struct resource r[2];
                struct fsl_i2c_platform_data i2c_data;
                const unsigned char *flags = NULL;
                struct resource r[2];
                struct fsl_i2c_platform_data i2c_data;
                const unsigned char *flags = NULL;
-@@ -432,7 +488,7 @@
+@@ -432,7 +488,7 @@ static int __init fsl_i2c_of_init(void)
                if (ret)
                        goto unreg;
  
                if (ret)
                        goto unreg;
  
        }
  
        return 0;
        }
  
        return 0;
-@@ -528,14 +584,12 @@
+@@ -528,14 +584,12 @@ static enum fsl_usb2_phy_modes determine
  static int __init fsl_usb_of_init(void)
  {
        struct device_node *np;
  static int __init fsl_usb_of_init(void)
  {
        struct device_node *np;
                struct resource r[2];
                struct fsl_usb2_platform_data usb_data;
                const unsigned char *prop = NULL;
                struct resource r[2];
                struct fsl_usb2_platform_data usb_data;
                const unsigned char *prop = NULL;
-@@ -578,11 +632,10 @@
+@@ -578,11 +632,10 @@ static int __init fsl_usb_of_init(void)
                                                    fsl_usb2_platform_data));
                if (ret)
                        goto unreg_mph;
                                                    fsl_usb2_platform_data));
                if (ret)
                        goto unreg_mph;
                struct resource r[2];
                struct fsl_usb2_platform_data usb_data;
                const unsigned char *prop = NULL;
                struct resource r[2];
                struct fsl_usb2_platform_data usb_data;
                const unsigned char *prop = NULL;
-@@ -654,6 +707,7 @@
+@@ -654,6 +707,7 @@ static int __init fsl_usb_of_init(void)
                                                fsl_usb2_platform_data))))
                                goto unreg_dr;
                }
                                                fsl_usb2_platform_data))))
                                goto unreg_dr;
                }
        }
        return 0;
  
        }
        return 0;
  
-@@ -1125,13 +1179,12 @@
+@@ -1125,13 +1179,12 @@ arch_initcall(fs_enet_of_init);
  
  static int __init fsl_pcmcia_of_init(void)
  {
  
  static int __init fsl_pcmcia_of_init(void)
  {
  
 --- a/arch/powerpc/sysdev/grackle.c
 +++ b/arch/powerpc/sysdev/grackle.c
  
 --- a/arch/powerpc/sysdev/grackle.c
 +++ b/arch/powerpc/sysdev/grackle.c
-@@ -57,7 +57,7 @@
+@@ -57,7 +57,7 @@ void __init setup_grackle(struct pci_con
  {
        setup_indirect_pci(hose, 0xfec00000, 0xfee00000, 0);
        if (machine_is_compatible("PowerMac1,1"))
  {
        setup_indirect_pci(hose, 0xfec00000, 0xfee00000, 0);
        if (machine_is_compatible("PowerMac1,1"))
                .mask   = IPIC_SIMSR_H,
                .prio   = IPIC_SIPRR_D,
                .force  = IPIC_SIFCR_H,
                .mask   = IPIC_SIMSR_H,
                .prio   = IPIC_SIPRR_D,
                .force  = IPIC_SIFCR_H,
-@@ -42,7 +98,6 @@
+@@ -42,7 +98,6 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 0,
        },
        [10] = {
                .prio_mask = 0,
        },
        [10] = {
                .mask   = IPIC_SIMSR_H,
                .prio   = IPIC_SIPRR_D,
                .force  = IPIC_SIFCR_H,
                .mask   = IPIC_SIMSR_H,
                .prio   = IPIC_SIPRR_D,
                .force  = IPIC_SIFCR_H,
-@@ -50,15 +105,27 @@
+@@ -50,15 +105,27 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 1,
        },
        [11] = {
                .prio_mask = 1,
        },
        [11] = {
                .mask   = IPIC_SIMSR_H,
                .prio   = IPIC_SIPRR_D,
                .force  = IPIC_SIFCR_H,
                .mask   = IPIC_SIMSR_H,
                .prio   = IPIC_SIPRR_D,
                .force  = IPIC_SIFCR_H,
-@@ -66,7 +133,6 @@
+@@ -66,7 +133,6 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 5,
        },
        [15] = {
                .prio_mask = 5,
        },
        [15] = {
                .mask   = IPIC_SIMSR_H,
                .prio   = IPIC_SIPRR_D,
                .force  = IPIC_SIFCR_H,
                .mask   = IPIC_SIMSR_H,
                .prio   = IPIC_SIPRR_D,
                .force  = IPIC_SIFCR_H,
-@@ -74,7 +140,6 @@
+@@ -74,7 +140,6 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 6,
        },
        [16] = {
                .prio_mask = 6,
        },
        [16] = {
                .mask   = IPIC_SIMSR_H,
                .prio   = IPIC_SIPRR_D,
                .force  = IPIC_SIFCR_H,
                .mask   = IPIC_SIMSR_H,
                .prio   = IPIC_SIPRR_D,
                .force  = IPIC_SIFCR_H,
-@@ -82,7 +147,7 @@
+@@ -82,7 +147,7 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 7,
        },
        [17] = {
                .prio_mask = 7,
        },
        [17] = {
                .mask   = IPIC_SEMSR,
                .prio   = IPIC_SMPRR_A,
                .force  = IPIC_SEFCR,
                .mask   = IPIC_SEMSR,
                .prio   = IPIC_SMPRR_A,
                .force  = IPIC_SEFCR,
-@@ -90,7 +155,7 @@
+@@ -90,7 +155,7 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 5,
        },
        [18] = {
                .prio_mask = 5,
        },
        [18] = {
                .mask   = IPIC_SEMSR,
                .prio   = IPIC_SMPRR_A,
                .force  = IPIC_SEFCR,
                .mask   = IPIC_SEMSR,
                .prio   = IPIC_SMPRR_A,
                .force  = IPIC_SEFCR,
-@@ -98,7 +163,7 @@
+@@ -98,7 +163,7 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 6,
        },
        [19] = {
                .prio_mask = 6,
        },
        [19] = {
                .mask   = IPIC_SEMSR,
                .prio   = IPIC_SMPRR_A,
                .force  = IPIC_SEFCR,
                .mask   = IPIC_SEMSR,
                .prio   = IPIC_SMPRR_A,
                .force  = IPIC_SEFCR,
-@@ -106,7 +171,7 @@
+@@ -106,7 +171,7 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 7,
        },
        [20] = {
                .prio_mask = 7,
        },
        [20] = {
                .mask   = IPIC_SEMSR,
                .prio   = IPIC_SMPRR_B,
                .force  = IPIC_SEFCR,
                .mask   = IPIC_SEMSR,
                .prio   = IPIC_SMPRR_B,
                .force  = IPIC_SEFCR,
-@@ -114,7 +179,7 @@
+@@ -114,7 +179,7 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 4,
        },
        [21] = {
                .prio_mask = 4,
        },
        [21] = {
                .mask   = IPIC_SEMSR,
                .prio   = IPIC_SMPRR_B,
                .force  = IPIC_SEFCR,
                .mask   = IPIC_SEMSR,
                .prio   = IPIC_SMPRR_B,
                .force  = IPIC_SEFCR,
-@@ -122,7 +187,7 @@
+@@ -122,7 +187,7 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 5,
        },
        [22] = {
                .prio_mask = 5,
        },
        [22] = {
                .mask   = IPIC_SEMSR,
                .prio   = IPIC_SMPRR_B,
                .force  = IPIC_SEFCR,
                .mask   = IPIC_SEMSR,
                .prio   = IPIC_SMPRR_B,
                .force  = IPIC_SEFCR,
-@@ -130,7 +195,7 @@
+@@ -130,7 +195,7 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 6,
        },
        [23] = {
                .prio_mask = 6,
        },
        [23] = {
                .mask   = IPIC_SEMSR,
                .prio   = IPIC_SMPRR_B,
                .force  = IPIC_SEFCR,
                .mask   = IPIC_SEMSR,
                .prio   = IPIC_SMPRR_B,
                .force  = IPIC_SEFCR,
-@@ -138,7 +203,6 @@
+@@ -138,7 +203,6 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 7,
        },
        [32] = {
                .prio_mask = 7,
        },
        [32] = {
                .mask   = IPIC_SIMSR_H,
                .prio   = IPIC_SIPRR_A,
                .force  = IPIC_SIFCR_H,
                .mask   = IPIC_SIMSR_H,
                .prio   = IPIC_SIPRR_A,
                .force  = IPIC_SIFCR_H,
-@@ -146,7 +210,6 @@
+@@ -146,7 +210,6 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 0,
        },
        [33] = {
                .prio_mask = 0,
        },
        [33] = {
                .mask   = IPIC_SIMSR_H,
                .prio   = IPIC_SIPRR_A,
                .force  = IPIC_SIFCR_H,
                .mask   = IPIC_SIMSR_H,
                .prio   = IPIC_SIPRR_A,
                .force  = IPIC_SIFCR_H,
-@@ -154,7 +217,6 @@
+@@ -154,7 +217,6 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 1,
        },
        [34] = {
                .prio_mask = 1,
        },
        [34] = {
                .mask   = IPIC_SIMSR_H,
                .prio   = IPIC_SIPRR_A,
                .force  = IPIC_SIFCR_H,
                .mask   = IPIC_SIMSR_H,
                .prio   = IPIC_SIPRR_A,
                .force  = IPIC_SIFCR_H,
-@@ -162,7 +224,6 @@
+@@ -162,7 +224,6 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 2,
        },
        [35] = {
                .prio_mask = 2,
        },
        [35] = {
                .mask   = IPIC_SIMSR_H,
                .prio   = IPIC_SIPRR_A,
                .force  = IPIC_SIFCR_H,
                .mask   = IPIC_SIMSR_H,
                .prio   = IPIC_SIPRR_A,
                .force  = IPIC_SIFCR_H,
-@@ -170,7 +231,6 @@
+@@ -170,7 +231,6 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 3,
        },
        [36] = {
                .prio_mask = 3,
        },
        [36] = {
                .mask   = IPIC_SIMSR_H,
                .prio   = IPIC_SIPRR_A,
                .force  = IPIC_SIFCR_H,
                .mask   = IPIC_SIMSR_H,
                .prio   = IPIC_SIPRR_A,
                .force  = IPIC_SIFCR_H,
-@@ -178,7 +238,6 @@
+@@ -178,7 +238,6 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 4,
        },
        [37] = {
                .prio_mask = 4,
        },
        [37] = {
                .mask   = IPIC_SIMSR_H,
                .prio   = IPIC_SIPRR_A,
                .force  = IPIC_SIFCR_H,
                .mask   = IPIC_SIMSR_H,
                .prio   = IPIC_SIPRR_A,
                .force  = IPIC_SIFCR_H,
-@@ -186,7 +245,6 @@
+@@ -186,7 +245,6 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 5,
        },
        [38] = {
                .prio_mask = 5,
        },
        [38] = {
                .mask   = IPIC_SIMSR_H,
                .prio   = IPIC_SIPRR_A,
                .force  = IPIC_SIFCR_H,
                .mask   = IPIC_SIMSR_H,
                .prio   = IPIC_SIPRR_A,
                .force  = IPIC_SIFCR_H,
-@@ -194,15 +252,69 @@
+@@ -194,15 +252,69 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 6,
        },
        [39] = {
                .prio_mask = 6,
        },
        [39] = {
                .mask   = IPIC_SEMSR,
                .prio   = IPIC_SMPRR_A,
                .force  = IPIC_SEFCR,
                .mask   = IPIC_SEMSR,
                .prio   = IPIC_SMPRR_A,
                .force  = IPIC_SEFCR,
-@@ -210,7 +322,6 @@
+@@ -210,7 +322,6 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 4,
        },
        [64] = {
                .prio_mask = 4,
        },
        [64] = {
                .mask   = IPIC_SIMSR_L,
                .prio   = IPIC_SMPRR_A,
                .force  = IPIC_SIFCR_L,
                .mask   = IPIC_SIMSR_L,
                .prio   = IPIC_SMPRR_A,
                .force  = IPIC_SIFCR_L,
-@@ -218,7 +329,6 @@
+@@ -218,7 +329,6 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 0,
        },
        [65] = {
                .prio_mask = 0,
        },
        [65] = {
                .mask   = IPIC_SIMSR_L,
                .prio   = IPIC_SMPRR_A,
                .force  = IPIC_SIFCR_L,
                .mask   = IPIC_SIMSR_L,
                .prio   = IPIC_SMPRR_A,
                .force  = IPIC_SIFCR_L,
-@@ -226,7 +336,6 @@
+@@ -226,7 +336,6 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 1,
        },
        [66] = {
                .prio_mask = 1,
        },
        [66] = {
                .mask   = IPIC_SIMSR_L,
                .prio   = IPIC_SMPRR_A,
                .force  = IPIC_SIFCR_L,
                .mask   = IPIC_SIMSR_L,
                .prio   = IPIC_SMPRR_A,
                .force  = IPIC_SIFCR_L,
-@@ -234,7 +343,6 @@
+@@ -234,7 +343,6 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 2,
        },
        [67] = {
                .prio_mask = 2,
        },
        [67] = {
                .mask   = IPIC_SIMSR_L,
                .prio   = IPIC_SMPRR_A,
                .force  = IPIC_SIFCR_L,
                .mask   = IPIC_SIMSR_L,
                .prio   = IPIC_SMPRR_A,
                .force  = IPIC_SIFCR_L,
-@@ -242,7 +350,6 @@
+@@ -242,7 +350,6 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 3,
        },
        [68] = {
                .prio_mask = 3,
        },
        [68] = {
                .mask   = IPIC_SIMSR_L,
                .prio   = IPIC_SMPRR_B,
                .force  = IPIC_SIFCR_L,
                .mask   = IPIC_SIMSR_L,
                .prio   = IPIC_SMPRR_B,
                .force  = IPIC_SIFCR_L,
-@@ -250,7 +357,6 @@
+@@ -250,7 +357,6 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 0,
        },
        [69] = {
                .prio_mask = 0,
        },
        [69] = {
                .mask   = IPIC_SIMSR_L,
                .prio   = IPIC_SMPRR_B,
                .force  = IPIC_SIFCR_L,
                .mask   = IPIC_SIMSR_L,
                .prio   = IPIC_SMPRR_B,
                .force  = IPIC_SIFCR_L,
-@@ -258,7 +364,6 @@
+@@ -258,7 +364,6 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 1,
        },
        [70] = {
                .prio_mask = 1,
        },
        [70] = {
                .mask   = IPIC_SIMSR_L,
                .prio   = IPIC_SMPRR_B,
                .force  = IPIC_SIFCR_L,
                .mask   = IPIC_SIMSR_L,
                .prio   = IPIC_SMPRR_B,
                .force  = IPIC_SIFCR_L,
-@@ -266,7 +371,6 @@
+@@ -266,7 +371,6 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 2,
        },
        [71] = {
                .prio_mask = 2,
        },
        [71] = {
                .mask   = IPIC_SIMSR_L,
                .prio   = IPIC_SMPRR_B,
                .force  = IPIC_SIFCR_L,
                .mask   = IPIC_SIMSR_L,
                .prio   = IPIC_SMPRR_B,
                .force  = IPIC_SIFCR_L,
-@@ -274,91 +378,120 @@
+@@ -274,91 +378,120 @@ static struct ipic_info ipic_info[] = {
                .prio_mask = 3,
        },
        [72] = {
                .prio_mask = 3,
        },
        [72] = {
                .mask   = IPIC_SIMSR_L,
                .prio   = 0,
                .force  = IPIC_SIFCR_L,
                .mask   = IPIC_SIMSR_L,
                .prio   = 0,
                .force  = IPIC_SIFCR_L,
-@@ -412,6 +545,10 @@
+@@ -412,6 +545,10 @@ static void ipic_mask_irq(unsigned int v
        temp &= ~(1 << (31 - ipic_info[src].bit));
        ipic_write(ipic->regs, ipic_info[src].mask, temp);
  
        temp &= ~(1 << (31 - ipic_info[src].bit));
        ipic_write(ipic->regs, ipic_info[src].mask, temp);
  
        spin_unlock_irqrestore(&ipic_lock, flags);
  }
  
        spin_unlock_irqrestore(&ipic_lock, flags);
  }
  
-@@ -424,9 +561,13 @@
+@@ -424,9 +561,13 @@ static void ipic_ack_irq(unsigned int vi
  
        spin_lock_irqsave(&ipic_lock, flags);
  
  
        spin_lock_irqsave(&ipic_lock, flags);
  
  
        spin_unlock_irqrestore(&ipic_lock, flags);
  }
  
        spin_unlock_irqrestore(&ipic_lock, flags);
  }
-@@ -444,9 +585,13 @@
+@@ -444,9 +585,13 @@ static void ipic_mask_irq_and_ack(unsign
        temp &= ~(1 << (31 - ipic_info[src].bit));
        ipic_write(ipic->regs, ipic_info[src].mask, temp);
  
        temp &= ~(1 << (31 - ipic_info[src].bit));
        ipic_write(ipic->regs, ipic_info[src].mask, temp);
  
  
        spin_unlock_irqrestore(&ipic_lock, flags);
  }
  
        spin_unlock_irqrestore(&ipic_lock, flags);
  }
-@@ -468,14 +613,22 @@
+@@ -468,14 +613,22 @@ static int ipic_set_irq_type(unsigned in
                        flow_type);
                return -EINVAL;
        }
                        flow_type);
                return -EINVAL;
        }
        }
  
        /* only EXT IRQ senses are programmable on ipic
        }
  
        /* only EXT IRQ senses are programmable on ipic
-@@ -500,7 +653,16 @@
+@@ -500,7 +653,16 @@ static int ipic_set_irq_type(unsigned in
        return 0;
  }
  
        return 0;
  }
  
        .typename       = " IPIC  ",
        .unmask         = ipic_unmask_irq,
        .mask           = ipic_mask_irq,
        .typename       = " IPIC  ",
        .unmask         = ipic_unmask_irq,
        .mask           = ipic_mask_irq,
-@@ -519,13 +681,9 @@
+@@ -519,13 +681,9 @@ static int ipic_host_map(struct irq_host
                         irq_hw_number_t hw)
  {
        struct ipic *ipic = h->host_data;
                         irq_hw_number_t hw)
  {
        struct ipic *ipic = h->host_data;
  
        /* Set default irq type */
        set_irq_type(virq, IRQ_TYPE_NONE);
  
        /* Set default irq type */
        set_irq_type(virq, IRQ_TYPE_NONE);
-@@ -584,7 +742,6 @@
+@@ -584,7 +742,6 @@ struct ipic * __init ipic_init(struct de
        ipic->regs = ioremap(res.start, res.end - res.start + 1);
  
        ipic->irqhost->host_data = ipic;
        ipic->regs = ioremap(res.start, res.end - res.start + 1);
  
        ipic->irqhost->host_data = ipic;
  
        /* init hw */
        ipic_write(ipic->regs, IPIC_SICNR, 0x0);
  
        /* init hw */
        ipic_write(ipic->regs, IPIC_SICNR, 0x0);
-@@ -593,6 +750,10 @@
+@@ -593,6 +750,10 @@ struct ipic * __init ipic_init(struct de
         * configure SICFR accordingly */
        if (flags & IPIC_SPREADMODE_GRP_A)
                temp |= SICFR_IPSA;
         * configure SICFR accordingly */
        if (flags & IPIC_SPREADMODE_GRP_A)
                temp |= SICFR_IPSA;
        if (flags & IPIC_SPREADMODE_GRP_D)
                temp |= SICFR_IPSD;
        if (flags & IPIC_SPREADMODE_MIX_A)
        if (flags & IPIC_SPREADMODE_GRP_D)
                temp |= SICFR_IPSD;
        if (flags & IPIC_SPREADMODE_MIX_A)
-@@ -600,7 +761,7 @@
+@@ -600,7 +761,7 @@ struct ipic * __init ipic_init(struct de
        if (flags & IPIC_SPREADMODE_MIX_B)
                temp |= SICFR_MPSB;
  
        if (flags & IPIC_SPREADMODE_MIX_B)
                temp |= SICFR_MPSB;
  
  
        /* handle MCP route */
        temp = 0;
  
        /* handle MCP route */
        temp = 0;
-@@ -672,10 +833,12 @@
+@@ -672,10 +833,12 @@ void ipic_set_highest_priority(unsigned 
  
  void ipic_set_default_priority(void)
  {
  
  void ipic_set_default_priority(void)
  {
  #define       SICFR_IPSD      0x00080000
  #define       SICFR_MPSA      0x00200000
  #define       SICFR_MPSB      0x00400000
  #define       SICFR_IPSD      0x00080000
  #define       SICFR_MPSA      0x00200000
  #define       SICFR_MPSB      0x00400000
-@@ -45,13 +44,11 @@
+@@ -45,13 +44,11 @@ struct ipic {
  
        /* The remapper for this IPIC */
        struct irq_host         *irqhost;
  
        /* The remapper for this IPIC */
        struct irq_host         *irqhost;
        u8      force;          /* force register offset from base */
 --- a/arch/powerpc/sysdev/mmio_nvram.c
 +++ b/arch/powerpc/sysdev/mmio_nvram.c
        u8      force;          /* force register offset from base */
 --- a/arch/powerpc/sysdev/mmio_nvram.c
 +++ b/arch/powerpc/sysdev/mmio_nvram.c
-@@ -99,7 +99,7 @@
+@@ -99,7 +99,7 @@ int __init mmio_nvram_init(void)
        nvram_addr = r.start;
        mmio_nvram_len = r.end - r.start + 1;
        if ( (!mmio_nvram_len) || (!nvram_addr) ) {
        nvram_addr = r.start;
        mmio_nvram_len = r.end - r.start + 1;
        if ( (!mmio_nvram_len) || (!nvram_addr) ) {
        }
 --- a/arch/powerpc/sysdev/mpic.c
 +++ b/arch/powerpc/sysdev/mpic.c
        }
 --- a/arch/powerpc/sysdev/mpic.c
 +++ b/arch/powerpc/sysdev/mpic.c
-@@ -83,6 +83,7 @@
+@@ -83,6 +83,7 @@ static u32 mpic_infos[][MPIC_IDX_END] = 
                MPIC_CPU_WHOAMI,
                MPIC_CPU_INTACK,
                MPIC_CPU_EOI,
                MPIC_CPU_WHOAMI,
                MPIC_CPU_INTACK,
                MPIC_CPU_EOI,
  
                MPIC_IRQ_BASE,
                MPIC_IRQ_STRIDE,
  
                MPIC_IRQ_BASE,
                MPIC_IRQ_STRIDE,
-@@ -121,6 +122,7 @@
+@@ -121,6 +122,7 @@ static u32 mpic_infos[][MPIC_IDX_END] = 
                TSI108_CPU_WHOAMI,
                TSI108_CPU_INTACK,
                TSI108_CPU_EOI,
                TSI108_CPU_WHOAMI,
                TSI108_CPU_INTACK,
                TSI108_CPU_EOI,
  
                TSI108_IRQ_BASE,
                TSI108_IRQ_STRIDE,
  
                TSI108_IRQ_BASE,
                TSI108_IRQ_STRIDE,
-@@ -265,7 +267,7 @@
+@@ -265,7 +267,7 @@ static inline void _mpic_irq_write(struc
   */
  
  
   */
  
  
                           struct mpic_reg_bank *rb, unsigned int offset,
                           unsigned int size)
  {
                           struct mpic_reg_bank *rb, unsigned int offset,
                           unsigned int size)
  {
-@@ -285,7 +287,7 @@
+@@ -285,7 +287,7 @@ static void _mpic_map_dcr(struct mpic *m
        BUG_ON(!DCR_MAP_OK(rb->dhost));
  }
  
        BUG_ON(!DCR_MAP_OK(rb->dhost));
  }
  
                            struct mpic_reg_bank *rb, unsigned int offset,
                            unsigned int size)
  {
                            struct mpic_reg_bank *rb, unsigned int offset,
                            unsigned int size)
  {
-@@ -612,12 +614,11 @@
+@@ -612,12 +614,11 @@ static inline void mpic_eoi(struct mpic 
  }
  
  #ifdef CONFIG_SMP
  }
  
  #ifdef CONFIG_SMP
  
        return IRQ_HANDLED;
  }
  
        return IRQ_HANDLED;
  }
-@@ -842,6 +843,24 @@
+@@ -842,6 +843,24 @@ int mpic_set_irq_type(unsigned int virq,
        return 0;
  }
  
        return 0;
  }
  
  static struct irq_chip mpic_irq_chip = {
        .mask           = mpic_mask_irq,
        .unmask         = mpic_unmask_irq,
  static struct irq_chip mpic_irq_chip = {
        .mask           = mpic_mask_irq,
        .unmask         = mpic_unmask_irq,
-@@ -1109,6 +1128,11 @@
+@@ -1109,6 +1128,11 @@ struct mpic * __init mpic_alloc(struct d
                        mb();
        }
  
                        mb();
        }
  
        /* Read feature register, calculate num CPUs and, for non-ISU
         * MPICs, num sources as well. On ISU MPICs, sources are counted
         * as ISUs are added
        /* Read feature register, calculate num CPUs and, for non-ISU
         * MPICs, num sources as well. On ISU MPICs, sources are counted
         * as ISUs are added
-@@ -1230,6 +1254,8 @@
+@@ -1230,6 +1254,8 @@ void __init mpic_init(struct mpic *mpic)
                mpic_u3msi_init(mpic);
        }
  
                mpic_u3msi_init(mpic);
        }
  
        for (i = 0; i < mpic->num_sources; i++) {
                /* start with vector = source number, and masked */
                u32 vecpri = MPIC_VECPRI_MASK | i |
        for (i = 0; i < mpic->num_sources; i++) {
                /* start with vector = source number, and masked */
                u32 vecpri = MPIC_VECPRI_MASK | i |
-@@ -1253,6 +1279,11 @@
+@@ -1253,6 +1279,11 @@ void __init mpic_init(struct mpic *mpic)
                           mpic_read(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0))
                           | MPIC_GREG_GCONF_8259_PTHROU_DIS);
  
                           mpic_read(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0))
                           | MPIC_GREG_GCONF_8259_PTHROU_DIS);
  
        /* Set current processor priority to 0 */
        mpic_cpu_write(MPIC_INFO(CPU_CURRENT_TASK_PRI), 0);
  
        /* Set current processor priority to 0 */
        mpic_cpu_write(MPIC_INFO(CPU_CURRENT_TASK_PRI), 0);
  
-@@ -1419,13 +1450,13 @@
+@@ -1419,13 +1450,13 @@ void mpic_send_ipi(unsigned int ipi_no, 
                       mpic_physmask(cpu_mask & cpus_addr(cpu_online_map)[0]));
  }
  
                       mpic_physmask(cpu_mask & cpus_addr(cpu_online_map)[0]));
  }
  
  #endif
        if (unlikely(src == mpic->spurious_vec)) {
                if (mpic->flags & MPIC_SPV_EOI)
  #endif
        if (unlikely(src == mpic->spurious_vec)) {
                if (mpic->flags & MPIC_SPV_EOI)
-@@ -1443,6 +1474,11 @@
+@@ -1443,6 +1474,11 @@ unsigned int mpic_get_one_irq(struct mpi
        return irq_linear_revmap(mpic->irqhost, src);
  }
  
        return irq_linear_revmap(mpic->irqhost, src);
  }
  
  unsigned int mpic_get_irq(void)
  {
        struct mpic *mpic = mpic_primary;
  unsigned int mpic_get_irq(void)
  {
        struct mpic *mpic = mpic_primary;
-@@ -1452,12 +1488,20 @@
+@@ -1452,12 +1488,20 @@ unsigned int mpic_get_irq(void)
        return mpic_get_one_irq(mpic);
  }
  
        return mpic_get_one_irq(mpic);
  }
  
        static char *ipi_names[] = {
                "IPI0 (call function)",
                "IPI1 (reschedule)",
        static char *ipi_names[] = {
                "IPI0 (call function)",
                "IPI1 (reschedule)",
-@@ -1472,14 +1516,14 @@
+@@ -1472,14 +1516,14 @@ void mpic_request_ipis(void)
                unsigned int vipi = irq_create_mapping(mpic->irqhost,
                                                       mpic->ipi_vecs[0] + i);
                if (vipi == NO_IRQ) {
                unsigned int vipi = irq_create_mapping(mpic->irqhost,
                                                       mpic->ipi_vecs[0] + i);
                if (vipi == NO_IRQ) {
                }
 --- a/arch/powerpc/sysdev/mpic.h
 +++ b/arch/powerpc/sysdev/mpic.h
                }
 --- a/arch/powerpc/sysdev/mpic.h
 +++ b/arch/powerpc/sysdev/mpic.h
-@@ -17,6 +17,7 @@
+@@ -17,6 +17,7 @@ extern int mpic_msi_init_allocator(struc
  extern irq_hw_number_t mpic_msi_alloc_hwirqs(struct mpic *mpic, int num);
  extern void mpic_msi_free_hwirqs(struct mpic *mpic, int offset, int num);
  extern int mpic_u3msi_init(struct mpic *mpic);
  extern irq_hw_number_t mpic_msi_alloc_hwirqs(struct mpic *mpic, int num);
  extern void mpic_msi_free_hwirqs(struct mpic *mpic, int offset, int num);
  extern int mpic_u3msi_init(struct mpic *mpic);
  #else
  static inline void mpic_msi_reserve_hwirq(struct mpic *mpic,
                                          irq_hw_number_t hwirq)
  #else
  static inline void mpic_msi_reserve_hwirq(struct mpic *mpic,
                                          irq_hw_number_t hwirq)
-@@ -28,12 +29,15 @@
+@@ -28,12 +29,15 @@ static inline int mpic_u3msi_init(struct
  {
        return -1;
  }
  {
        return -1;
  }
 +}
 --- a/arch/powerpc/sysdev/mv64x60_dev.c
 +++ b/arch/powerpc/sysdev/mv64x60_dev.c
 +}
 --- a/arch/powerpc/sysdev/mv64x60_dev.c
 +++ b/arch/powerpc/sysdev/mv64x60_dev.c
-@@ -241,7 +241,7 @@
+@@ -241,7 +241,7 @@ static int __init mv64x60_eth_device_set
  
        /* only register the shared platform device the first time through */
        if (id == 0 && (err = eth_register_shared_pdev(np)))
  
        /* only register the shared platform device the first time through */
        if (id == 0 && (err = eth_register_shared_pdev(np)))
  
        memset(r, 0, sizeof(r));
        of_irq_to_resource(np, 0, &r[0]);
  
        memset(r, 0, sizeof(r));
        of_irq_to_resource(np, 0, &r[0]);
-@@ -451,22 +451,19 @@
+@@ -451,22 +451,19 @@ static int __init mv64x60_device_setup(v
        int id;
        int err;
  
        int id;
        int err;
  
                        goto error;
  
        /* support up to one watchdog timer */
                        goto error;
  
        /* support up to one watchdog timer */
-@@ -477,7 +474,6 @@
+@@ -477,7 +474,6 @@ static int __init mv64x60_device_setup(v
                of_node_put(np);
        }
  
                of_node_put(np);
        }
  
  error:
 --- a/arch/powerpc/sysdev/mv64x60_pci.c
 +++ b/arch/powerpc/sysdev/mv64x60_pci.c
  error:
 --- a/arch/powerpc/sysdev/mv64x60_pci.c
 +++ b/arch/powerpc/sysdev/mv64x60_pci.c
-@@ -164,8 +164,8 @@
+@@ -164,8 +164,8 @@ static int __init mv64x60_add_bridge(str
  
  void __init mv64x60_pci_init(void)
  {
  
  void __init mv64x60_pci_init(void)
  {
  }
 --- a/arch/powerpc/sysdev/mv64x60_udbg.c
 +++ b/arch/powerpc/sysdev/mv64x60_udbg.c
  }
 --- a/arch/powerpc/sysdev/mv64x60_udbg.c
 +++ b/arch/powerpc/sysdev/mv64x60_udbg.c
-@@ -85,10 +85,10 @@
+@@ -85,10 +85,10 @@ static void mv64x60_udbg_init(void)
        if (!stdout)
                return;
  
        if (!stdout)
                return;
  
  #include <asm/irq.h>
  #include <asm/page.h>
  #include <asm/pgtable.h>
  #include <asm/irq.h>
  #include <asm/page.h>
  #include <asm/pgtable.h>
-@@ -167,19 +168,20 @@
+@@ -167,19 +168,20 @@ unsigned int get_brg_clk(void)
  
  /* Program the BRG to the given sampling rate and multiplier
   *
  
  /* Program the BRG to the given sampling rate and multiplier
   *
        divisor = get_brg_clk() / (rate * multiplier);
  
        if (divisor > QE_BRGC_DIVISOR_MAX + 1) {
        divisor = get_brg_clk() / (rate * multiplier);
  
        if (divisor > QE_BRGC_DIVISOR_MAX + 1) {
-@@ -196,8 +198,43 @@
+@@ -196,8 +198,43 @@ void qe_setbrg(unsigned int brg, unsigne
        tempval = ((divisor - 1) << QE_BRGC_DIVISOR_SHIFT) |
                QE_BRGC_ENABLE | div16;
  
        tempval = ((divisor - 1) << QE_BRGC_DIVISOR_SHIFT) |
                QE_BRGC_ENABLE | div16;
  
  
  /* Initialize SNUMs (thread serial numbers) according to
   * QE Module Control chapter, SNUM table
  
  /* Initialize SNUMs (thread serial numbers) according to
   * QE Module Control chapter, SNUM table
-@@ -358,3 +395,249 @@
+@@ -358,3 +395,249 @@ void *qe_muram_addr(unsigned long offset
        return (void *)&qe_immr->muram[offset];
  }
  EXPORT_SYMBOL(qe_muram_addr);
        return (void *)&qe_immr->muram[offset];
  }
  EXPORT_SYMBOL(qe_muram_addr);
  
  #include <asm/io.h>
  #include <asm/immap_qe.h>
  
  #include <asm/io.h>
  #include <asm/immap_qe.h>
-@@ -41,6 +42,7 @@
+@@ -41,6 +42,7 @@ u32 ucc_slow_get_qe_cr_subblock(int uccs
        default: return QE_CR_SUBBLOCK_INVALID;
        }
  }
        default: return QE_CR_SUBBLOCK_INVALID;
        }
  }
  
  void ucc_slow_poll_transmitter_now(struct ucc_slow_private * uccs)
  {
  
  void ucc_slow_poll_transmitter_now(struct ucc_slow_private * uccs)
  {
-@@ -56,6 +58,7 @@
+@@ -56,6 +58,7 @@ void ucc_slow_graceful_stop_tx(struct uc
        qe_issue_cmd(QE_GRACEFUL_STOP_TX, id,
                         QE_CR_PROTOCOL_UNSPECIFIED, 0);
  }
        qe_issue_cmd(QE_GRACEFUL_STOP_TX, id,
                         QE_CR_PROTOCOL_UNSPECIFIED, 0);
  }
  
  void ucc_slow_stop_tx(struct ucc_slow_private * uccs)
  {
  
  void ucc_slow_stop_tx(struct ucc_slow_private * uccs)
  {
-@@ -65,6 +68,7 @@
+@@ -65,6 +68,7 @@ void ucc_slow_stop_tx(struct ucc_slow_pr
        id = ucc_slow_get_qe_cr_subblock(us_info->ucc_num);
        qe_issue_cmd(QE_STOP_TX, id, QE_CR_PROTOCOL_UNSPECIFIED, 0);
  }
        id = ucc_slow_get_qe_cr_subblock(us_info->ucc_num);
        qe_issue_cmd(QE_STOP_TX, id, QE_CR_PROTOCOL_UNSPECIFIED, 0);
  }
  
  void ucc_slow_restart_tx(struct ucc_slow_private * uccs)
  {
  
  void ucc_slow_restart_tx(struct ucc_slow_private * uccs)
  {
-@@ -74,6 +78,7 @@
+@@ -74,6 +78,7 @@ void ucc_slow_restart_tx(struct ucc_slow
        id = ucc_slow_get_qe_cr_subblock(us_info->ucc_num);
        qe_issue_cmd(QE_RESTART_TX, id, QE_CR_PROTOCOL_UNSPECIFIED, 0);
  }
        id = ucc_slow_get_qe_cr_subblock(us_info->ucc_num);
        qe_issue_cmd(QE_RESTART_TX, id, QE_CR_PROTOCOL_UNSPECIFIED, 0);
  }
  
  void ucc_slow_enable(struct ucc_slow_private * uccs, enum comm_dir mode)
  {
  
  void ucc_slow_enable(struct ucc_slow_private * uccs, enum comm_dir mode)
  {
-@@ -94,6 +99,7 @@
+@@ -94,6 +99,7 @@ void ucc_slow_enable(struct ucc_slow_pri
        }
        out_be32(&us_regs->gumr_l, gumr_l);
  }
        }
        out_be32(&us_regs->gumr_l, gumr_l);
  }
  
  void ucc_slow_disable(struct ucc_slow_private * uccs, enum comm_dir mode)
  {
  
  void ucc_slow_disable(struct ucc_slow_private * uccs, enum comm_dir mode)
  {
-@@ -114,6 +120,7 @@
+@@ -114,6 +120,7 @@ void ucc_slow_disable(struct ucc_slow_pr
        }
        out_be32(&us_regs->gumr_l, gumr_l);
  }
        }
        out_be32(&us_regs->gumr_l, gumr_l);
  }
  
  /* Initialize the UCC for Slow operations
   *
  
  /* Initialize the UCC for Slow operations
   *
-@@ -347,6 +354,7 @@
+@@ -347,6 +354,7 @@ int ucc_slow_init(struct ucc_slow_info *
        *uccs_ret = uccs;
        return 0;
  }
        *uccs_ret = uccs;
        return 0;
  }
  
  void ucc_slow_free(struct ucc_slow_private * uccs)
  {
  
  void ucc_slow_free(struct ucc_slow_private * uccs)
  {
-@@ -366,5 +374,5 @@
+@@ -366,5 +374,5 @@ void ucc_slow_free(struct ucc_slow_priva
  
        kfree(uccs);
  }
  
        kfree(uccs);
  }
  
 --- a/arch/powerpc/sysdev/tsi108_dev.c
 +++ b/arch/powerpc/sysdev/tsi108_dev.c
  
 --- a/arch/powerpc/sysdev/tsi108_dev.c
 +++ b/arch/powerpc/sysdev/tsi108_dev.c
-@@ -66,14 +66,12 @@
+@@ -66,14 +66,12 @@ EXPORT_SYMBOL(get_vir_csrbase);
  static int __init tsi108_eth_of_init(void)
  {
        struct device_node *np;
  static int __init tsi108_eth_of_init(void)
  {
        struct device_node *np;
                struct resource r[2];
                struct device_node *phy, *mdio;
                hw_info tsi_eth_data;
                struct resource r[2];
                struct device_node *phy, *mdio;
                hw_info tsi_eth_data;
-@@ -98,7 +96,7 @@
+@@ -98,7 +96,7 @@ static int __init tsi108_eth_of_init(voi
                        __FUNCTION__,r[1].name, r[1].start, r[1].end);
  
                tsi_eth_dev =
                        __FUNCTION__,r[1].name, r[1].start, r[1].end);
  
                tsi_eth_dev =
                                                    1);
  
                if (IS_ERR(tsi_eth_dev)) {
                                                    1);
  
                if (IS_ERR(tsi_eth_dev)) {
-@@ -154,6 +152,7 @@
+@@ -154,6 +152,7 @@ static int __init tsi108_eth_of_init(voi
  unreg:
        platform_device_unregister(tsi_eth_dev);
  err:
  unreg:
        platform_device_unregister(tsi_eth_dev);
  err:
  
 --- a/arch/powerpc/sysdev/uic.c
 +++ b/arch/powerpc/sysdev/uic.c
  
 --- a/arch/powerpc/sysdev/uic.c
 +++ b/arch/powerpc/sysdev/uic.c
-@@ -53,21 +53,23 @@
+@@ -53,21 +53,23 @@ struct uic {
  
        /* The remapper for this UIC */
        struct irq_host *irqhost;
  
        /* The remapper for this UIC */
        struct irq_host *irqhost;
        mtdcr(uic->dcrbase + UIC_ER, er);
        spin_unlock_irqrestore(&uic->lock, flags);
  }
        mtdcr(uic->dcrbase + UIC_ER, er);
        spin_unlock_irqrestore(&uic->lock, flags);
  }
-@@ -99,6 +101,7 @@
+@@ -99,6 +101,7 @@ static void uic_ack_irq(unsigned int vir
  
  static void uic_mask_ack_irq(unsigned int virq)
  {
  
  static void uic_mask_ack_irq(unsigned int virq)
  {
        struct uic *uic = get_irq_chip_data(virq);
        unsigned int src = uic_irq_to_hw(virq);
        unsigned long flags;
        struct uic *uic = get_irq_chip_data(virq);
        unsigned int src = uic_irq_to_hw(virq);
        unsigned long flags;
-@@ -109,7 +112,16 @@
+@@ -109,7 +112,16 @@ static void uic_mask_ack_irq(unsigned in
        er = mfdcr(uic->dcrbase + UIC_ER);
        er &= ~sr;
        mtdcr(uic->dcrbase + UIC_ER, er);
        er = mfdcr(uic->dcrbase + UIC_ER);
        er &= ~sr;
        mtdcr(uic->dcrbase + UIC_ER, er);
        spin_unlock_irqrestore(&uic->lock, flags);
  }
  
        spin_unlock_irqrestore(&uic->lock, flags);
  }
  
-@@ -173,64 +185,6 @@
+@@ -173,64 +185,6 @@ static struct irq_chip uic_irq_chip = {
        .set_type       = uic_set_irq_type,
  };
  
        .set_type       = uic_set_irq_type,
  };
  
  static int uic_host_map(struct irq_host *h, unsigned int virq,
                        irq_hw_number_t hw)
  {
  static int uic_host_map(struct irq_host *h, unsigned int virq,
                        irq_hw_number_t hw)
  {
-@@ -239,7 +193,7 @@
+@@ -239,7 +193,7 @@ static int uic_host_map(struct irq_host 
        set_irq_chip_data(virq, uic);
        /* Despite the name, handle_level_irq() works for both level
         * and edge irqs on UIC.  FIXME: check this is correct */
        set_irq_chip_data(virq, uic);
        /* Despite the name, handle_level_irq() works for both level
         * and edge irqs on UIC.  FIXME: check this is correct */
  
        /* Set default irq type */
        set_irq_type(virq, IRQ_TYPE_NONE);
  
        /* Set default irq type */
        set_irq_type(virq, IRQ_TYPE_NONE);
-@@ -264,23 +218,36 @@
+@@ -264,23 +218,36 @@ static struct irq_host_ops uic_host_ops 
        .xlate  = uic_host_xlate,
  };
  
        .xlate  = uic_host_xlate,
  };
  
  }
  
  static struct uic * __init uic_init_one(struct device_node *node)
  }
  
  static struct uic * __init uic_init_one(struct device_node *node)
-@@ -342,33 +309,27 @@
+@@ -342,33 +309,27 @@ void __init uic_init_tree(void)
        const u32 *interrupts;
  
        /* First locate and initialize the top-level UIC */
        const u32 *interrupts;
  
        /* First locate and initialize the top-level UIC */
  
                        uic = uic_init_one(np);
                        if (! uic)
  
                        uic = uic_init_one(np);
                        if (! uic)
-@@ -377,20 +338,11 @@
+@@ -377,20 +338,11 @@ void __init uic_init_tree(void)
  
                        cascade_virq = irq_of_parse_and_map(np, 0);
  
  
                        cascade_virq = irq_of_parse_and_map(np, 0);
  
  
 --- a/arch/powerpc/sysdev/xilinx_intc.c
 +++ b/arch/powerpc/sysdev/xilinx_intc.c
  
 --- a/arch/powerpc/sysdev/xilinx_intc.c
 +++ b/arch/powerpc/sysdev/xilinx_intc.c
-@@ -135,10 +135,16 @@
+@@ -135,10 +135,16 @@ void __init xilinx_intc_init_tree(void)
        struct device_node *np;
  
        /* find top level interrupt controller */
        struct device_node *np;
  
        /* find top level interrupt controller */
  
  #ifdef CONFIG_PPC64
  #include <asm/hvcall.h>
  
  #ifdef CONFIG_PPC64
  #include <asm/hvcall.h>
-@@ -71,12 +72,9 @@
+@@ -71,12 +72,9 @@ static unsigned long ncsum = 4096;
  static int termch;
  static char tmpstr[128];
  
  static int termch;
  static char tmpstr[128];
  
  
  /* Breakpoint stuff */
  struct bpt {
  
  /* Breakpoint stuff */
  struct bpt {
-@@ -153,13 +151,15 @@
+@@ -153,13 +151,15 @@ static const char *getvecname(unsigned l
  
  static int do_spu_cmd(void);
  
  
  static int do_spu_cmd(void);
  
  extern void xmon_save_regs(struct pt_regs *);
  
  #ifdef CONFIG_PPC64
  extern void xmon_save_regs(struct pt_regs *);
  
  #ifdef CONFIG_PPC64
-@@ -231,6 +231,9 @@
+@@ -231,6 +231,9 @@ Commands:\n\
  #ifdef CONFIG_PPC_STD_MMU_32
  "  u  dump segment registers\n"
  #endif
  #ifdef CONFIG_PPC_STD_MMU_32
  "  u  dump segment registers\n"
  #endif
  "  ?  help\n"
  "  zr reboot\n\
    zh  halt\n"
  "  ?  help\n"
  "  zr reboot\n\
    zh  halt\n"
-@@ -856,6 +859,11 @@
+@@ -856,6 +859,11 @@ cmds(struct pt_regs *excp)
                        dump_segments();
                        break;
  #endif
                        dump_segments();
                        break;
  #endif
                default:
                        printf("Unrecognized command: ");
                        do {
                default:
                        printf("Unrecognized command: ");
                        do {
-@@ -2527,16 +2535,33 @@
+@@ -2527,16 +2535,33 @@ static void xmon_print_symbol(unsigned l
  static void dump_slb(void)
  {
        int i;
  static void dump_slb(void)
  {
        int i;
        }
  }
  
        }
  }
  
-@@ -2581,6 +2606,32 @@
+@@ -2581,6 +2606,32 @@ void dump_segments(void)
  }
  #endif
  
  }
  #endif
  
  #ifdef CONFIG_PPC_ISERIES
 --- a/arch/ppc/kernel/Makefile
 +++ b/arch/ppc/kernel/Makefile
  #ifdef CONFIG_PPC_ISERIES
 --- a/arch/ppc/kernel/Makefile
 +++ b/arch/ppc/kernel/Makefile
-@@ -13,7 +13,6 @@
+@@ -13,7 +13,6 @@ obj-y                                := entry.o traps.o time.o misc.
                                        ppc_htab.o
  obj-$(CONFIG_MODULES)         += ppc_ksyms.o
  obj-$(CONFIG_PCI)             += pci.o
                                        ppc_htab.o
  obj-$(CONFIG_MODULES)         += ppc_ksyms.o
  obj-$(CONFIG_PCI)             += pci.o
  obj-$(CONFIG_KEXEC)           += machine_kexec.o relocate_kernel.o
 --- a/arch/ppc/kernel/head_44x.S
 +++ b/arch/ppc/kernel/head_44x.S
  obj-$(CONFIG_KEXEC)           += machine_kexec.o relocate_kernel.o
 --- a/arch/ppc/kernel/head_44x.S
 +++ b/arch/ppc/kernel/head_44x.S
-@@ -195,7 +195,7 @@
+@@ -195,7 +195,7 @@ skpinv:    addi    r4,r4,1                         /* Increment */
        li      r5,0
        ori     r5,r5,(PPC44x_TLB_SW | PPC44x_TLB_SR | PPC44x_TLB_I | PPC44x_TLB_G)
  
        li      r5,0
        ori     r5,r5,(PPC44x_TLB_SW | PPC44x_TLB_SR | PPC44x_TLB_I | PPC44x_TLB_G)
  
                      defined(CONFIG_MPC10X_BRIDGE) || defined(CONFIG_8260) || \
 --- a/arch/ppc/kernel/traps.c
 +++ b/arch/ppc/kernel/traps.c
                      defined(CONFIG_MPC10X_BRIDGE) || defined(CONFIG_8260) || \
 --- a/arch/ppc/kernel/traps.c
 +++ b/arch/ppc/kernel/traps.c
-@@ -231,39 +231,25 @@
+@@ -231,39 +231,25 @@ platform_machine_check(struct pt_regs *r
  {
  }
  
  {
  }
  
        printk("Machine check in kernel mode.\n");
        if (reason & ESR_IMCP){
                printk("Instruction Synchronous Machine Check exception\n");
        printk("Machine check in kernel mode.\n");
        if (reason & ESR_IMCP){
                printk("Instruction Synchronous Machine Check exception\n");
-@@ -293,7 +279,13 @@
+@@ -293,7 +279,13 @@ void machine_check_exception(struct pt_r
                /* Clear MCSR */
                mtspr(SPRN_MCSR, mcsr);
        }
                /* Clear MCSR */
                mtspr(SPRN_MCSR, mcsr);
        }
        printk("Machine check in kernel mode.\n");
        printk("Caused by (from MCSR=%lx): ", reason);
  
        printk("Machine check in kernel mode.\n");
        printk("Caused by (from MCSR=%lx): ", reason);
  
-@@ -305,8 +297,6 @@
+@@ -305,8 +297,6 @@ void machine_check_exception(struct pt_r
                printk("Data Cache Push Parity Error\n");
        if (reason & MCSR_DCPERR)
                printk("Data Cache Parity Error\n");
                printk("Data Cache Push Parity Error\n");
        if (reason & MCSR_DCPERR)
                printk("Data Cache Parity Error\n");
        if (reason & MCSR_BUS_IAERR)
                printk("Bus - Instruction Address Error\n");
        if (reason & MCSR_BUS_RAERR)
        if (reason & MCSR_BUS_IAERR)
                printk("Bus - Instruction Address Error\n");
        if (reason & MCSR_BUS_RAERR)
-@@ -318,12 +308,19 @@
+@@ -318,12 +308,19 @@ void machine_check_exception(struct pt_r
        if (reason & MCSR_BUS_RBERR)
                printk("Bus - Read Data Bus Error\n");
        if (reason & MCSR_BUS_WBERR)
        if (reason & MCSR_BUS_RBERR)
                printk("Bus - Read Data Bus Error\n");
        if (reason & MCSR_BUS_WBERR)
        printk("Machine check in kernel mode.\n");
        printk("Caused by (from MCSR=%lx): ", reason);
  
        printk("Machine check in kernel mode.\n");
        printk("Caused by (from MCSR=%lx): ", reason);
  
-@@ -341,7 +338,14 @@
+@@ -341,7 +338,14 @@ void machine_check_exception(struct pt_r
                printk("Bus - Read Bus Error on data load\n");
        if (reason & MCSR_BUS_WRERR)
                printk("Bus - Write Bus Error on buffered store or cache line push\n");
                printk("Bus - Read Bus Error on data load\n");
        if (reason & MCSR_BUS_WRERR)
                printk("Bus - Write Bus Error on buffered store or cache line push\n");
        printk("Machine check in kernel mode.\n");
        printk("Caused by (from SRR1=%lx): ", reason);
        switch (reason & 0x601F0000) {
        printk("Machine check in kernel mode.\n");
        printk("Caused by (from SRR1=%lx): ", reason);
        switch (reason & 0x601F0000) {
-@@ -371,7 +375,39 @@
+@@ -371,7 +375,39 @@ void machine_check_exception(struct pt_r
        default:
                printk("Unknown values in msr\n");
        }
        default:
                printk("Unknown values in msr\n");
        }
         * Optional platform-provided routine to print out
 --- a/arch/ppc/mm/44x_mmu.c
 +++ b/arch/ppc/mm/44x_mmu.c
         * Optional platform-provided routine to print out
 --- a/arch/ppc/mm/44x_mmu.c
 +++ b/arch/ppc/mm/44x_mmu.c
-@@ -60,38 +60,28 @@
+@@ -60,38 +60,28 @@ extern char etext[], _stext[];
   * Just needed it declared someplace.
   */
  unsigned int tlb_44x_index = 0;
   * Just needed it declared someplace.
   */
  unsigned int tlb_44x_index = 0;
  void __init MMU_init_hw(void)
  {
        flush_instruction_cache();
  void __init MMU_init_hw(void)
  {
        flush_instruction_cache();
-@@ -99,22 +89,13 @@
+@@ -99,22 +89,13 @@ void __init MMU_init_hw(void)
  
  unsigned long __init mmu_mapin_ram(void)
  {
  
  unsigned long __init mmu_mapin_ram(void)
  {
  #include <platforms/85xx/mpc85xx_ads_common.h>
  
  #ifndef CONFIG_PCI
  #include <platforms/85xx/mpc85xx_ads_common.h>
  
  #ifndef CONFIG_PCI
-@@ -190,6 +188,7 @@
+@@ -190,6 +188,7 @@ mpc85xx_exclude_device(u_char bus, u_cha
  #endif /* CONFIG_PCI */
  
  #ifdef CONFIG_RAPIDIO
  #endif /* CONFIG_PCI */
  
  #ifdef CONFIG_RAPIDIO
  
  
  unsigned char __res[sizeof(bd_t)];
  
  
  unsigned char __res[sizeof(bd_t)];
-@@ -271,6 +269,7 @@
+@@ -271,6 +269,7 @@ int mpc85xx_exclude_device(u_char bus, u
  #endif /* CONFIG_PCI */
  
  #ifdef CONFIG_RAPIDIO
  #endif /* CONFIG_PCI */
  
  #ifdef CONFIG_RAPIDIO
  
  #ifndef CONFIG_PCI
  unsigned long isa_io_base = 0;
  
  #ifndef CONFIG_PCI
  unsigned long isa_io_base = 0;
-@@ -309,6 +308,7 @@
+@@ -309,6 +308,7 @@ int mpc85xx_exclude_device(u_char bus, u
  #endif /* CONFIG_PCI */
  
  #ifdef CONFIG_RAPIDIO
  #endif /* CONFIG_PCI */
  
  #ifdef CONFIG_RAPIDIO
        /* 512MB RIO LAW at 0xc0000000 */
 --- a/arch/ppc/platforms/ev64260.c
 +++ b/arch/ppc/platforms/ev64260.c
        /* 512MB RIO LAW at 0xc0000000 */
 --- a/arch/ppc/platforms/ev64260.c
 +++ b/arch/ppc/platforms/ev64260.c
-@@ -336,7 +336,7 @@
+@@ -336,7 +336,7 @@ ev64260_early_serial_map(void)
  #endif
  
                if (early_serial_setup(&port) != 0)
  #endif
  
                if (early_serial_setup(&port) != 0)
                                "failed\n");
  
                first_time = 0;
                                "failed\n");
  
                first_time = 0;
-@@ -388,7 +388,7 @@
+@@ -388,7 +388,7 @@ ev64260_setup_arch(void)
        ev64260_early_serial_map();
  #endif
  
        ev64260_early_serial_map();
  #endif
  
        if (ppc_md.progress)
 --- a/arch/ppc/platforms/prep_pci.c
 +++ b/arch/ppc/platforms/prep_pci.c
        if (ppc_md.progress)
 --- a/arch/ppc/platforms/prep_pci.c
 +++ b/arch/ppc/platforms/prep_pci.c
-@@ -1099,7 +1099,6 @@
+@@ -1099,7 +1099,6 @@ prep_pib_init(void)
                                pci_write_config_byte(dev, 0x43, reg);
                        }
                }
                                pci_write_config_byte(dev, 0x43, reg);
                        }
                }
        if ((dev = pci_get_device(PCI_VENDOR_ID_WINBOND,
 --- a/arch/ppc/syslib/Makefile
 +++ b/arch/ppc/syslib/Makefile
        if ((dev = pci_get_device(PCI_VENDOR_ID_WINBOND,
 --- a/arch/ppc/syslib/Makefile
 +++ b/arch/ppc/syslib/Makefile
-@@ -93,7 +93,6 @@
+@@ -93,7 +93,6 @@ obj-$(CONFIG_85xx)           += open_pic.o ppc85x
  ifeq ($(CONFIG_85xx),y)
  obj-$(CONFIG_PCI)             += pci_auto.o
  endif
  ifeq ($(CONFIG_85xx),y)
  obj-$(CONFIG_PCI)             += pci_auto.o
  endif
  #include <linux/interrupt.h>
 --- a/arch/ppc/syslib/ocp.c
 +++ b/arch/ppc/syslib/ocp.c
  #include <linux/interrupt.h>
 --- a/arch/ppc/syslib/ocp.c
 +++ b/arch/ppc/syslib/ocp.c
-@@ -376,7 +376,7 @@
+@@ -376,7 +376,7 @@ ocp_remove_one_device(unsigned int vendo
  
        down_write(&ocp_devices_sem);
        dev = __ocp_find_device(vendor, function, index);
  
        down_write(&ocp_devices_sem);
        dev = __ocp_find_device(vendor, function, index);
 -#endif                                /* __PPC_SYSLIB_PPC85XX_RIO_H */
 --- a/arch/ppc/syslib/ppc8xx_pic.c
 +++ b/arch/ppc/syslib/ppc8xx_pic.c
 -#endif                                /* __PPC_SYSLIB_PPC85XX_RIO_H */
 --- a/arch/ppc/syslib/ppc8xx_pic.c
 +++ b/arch/ppc/syslib/ppc8xx_pic.c
-@@ -16,7 +16,7 @@
+@@ -16,7 +16,7 @@ extern int cpm_get_irq(void);
   * the only interrupt controller.  Some boards, like the MBX and
   * Sandpoint have the 8259 as a secondary controller.  Depending
   * upon the processor type, the internal controller can have as
   * the only interrupt controller.  Some boards, like the MBX and
   * Sandpoint have the 8259 as a secondary controller.  Depending
   * upon the processor type, the internal controller can have as
   */
 --- a/arch/ppc/syslib/ppc_sys.c
 +++ b/arch/ppc/syslib/ppc_sys.c
   */
 --- a/arch/ppc/syslib/ppc_sys.c
 +++ b/arch/ppc/syslib/ppc_sys.c
-@@ -185,7 +185,7 @@
+@@ -185,7 +185,7 @@ void platform_notify_map(const struct pl
   */
  
  /*
   */
  
  /*
  #include <asm/delay.h>
 --- a/drivers/ata/Kconfig
 +++ b/drivers/ata/Kconfig
  #include <asm/delay.h>
 --- a/drivers/ata/Kconfig
 +++ b/drivers/ata/Kconfig
-@@ -607,13 +607,23 @@
+@@ -607,13 +607,23 @@ config PATA_WINBOND_VLB
  
  config PATA_PLATFORM
        tristate "Generic platform device PATA support"
  
  config PATA_PLATFORM
        tristate "Generic platform device PATA support"
        depends on ARM && ARCH_ACORN
 --- a/drivers/ata/Makefile
 +++ b/drivers/ata/Makefile
        depends on ARM && ARCH_ACORN
 --- a/drivers/ata/Makefile
 +++ b/drivers/ata/Makefile
-@@ -67,6 +67,7 @@
+@@ -67,6 +67,7 @@ obj-$(CONFIG_PATA_IXP4XX_CF) += pata_ixp
  obj-$(CONFIG_PATA_SCC)                += pata_scc.o
  obj-$(CONFIG_PATA_BF54X)      += pata_bf54x.o
  obj-$(CONFIG_PATA_PLATFORM)   += pata_platform.o
  obj-$(CONFIG_PATA_SCC)                += pata_scc.o
  obj-$(CONFIG_PATA_BF54X)      += pata_bf54x.o
  obj-$(CONFIG_PATA_PLATFORM)   += pata_platform.o
 +MODULE_LICENSE("GPL");
 --- a/drivers/ata/pata_platform.c
 +++ b/drivers/ata/pata_platform.c
 +MODULE_LICENSE("GPL");
 --- a/drivers/ata/pata_platform.c
 +++ b/drivers/ata/pata_platform.c
-@@ -93,14 +93,9 @@
+@@ -93,14 +93,9 @@ static struct ata_port_operations pata_p
  };
  
  static void pata_platform_setup_port(struct ata_ioports *ioaddr,
  };
  
  static void pata_platform_setup_port(struct ata_ioports *ioaddr,
        ioaddr->data_addr       = ioaddr->cmd_addr + (ATA_REG_DATA    << shift);
        ioaddr->error_addr      = ioaddr->cmd_addr + (ATA_REG_ERR     << shift);
        ioaddr->feature_addr    = ioaddr->cmd_addr + (ATA_REG_FEATURE << shift);
        ioaddr->data_addr       = ioaddr->cmd_addr + (ATA_REG_DATA    << shift);
        ioaddr->error_addr      = ioaddr->cmd_addr + (ATA_REG_ERR     << shift);
        ioaddr->feature_addr    = ioaddr->cmd_addr + (ATA_REG_FEATURE << shift);
-@@ -114,8 +109,13 @@
+@@ -114,8 +109,13 @@ static void pata_platform_setup_port(str
  }
  
  /**
  }
  
  /**
   *
   *    Register a platform bus IDE interface. Such interfaces are PIO and we
   *    assume do not support IRQ sharing.
   *
   *    Register a platform bus IDE interface. Such interfaces are PIO and we
   *    assume do not support IRQ sharing.
-@@ -135,42 +135,18 @@
+@@ -135,42 +135,18 @@ static void pata_platform_setup_port(str
   *
   *    If no IRQ resource is present, PIO polling mode is used instead.
   */
   *
   *    If no IRQ resource is present, PIO polling mode is used instead.
   */
  
        /*
         * Check for MMIO
  
        /*
         * Check for MMIO
-@@ -181,20 +157,21 @@
+@@ -181,20 +157,21 @@ static int __devinit pata_platform_probe
        /*
         * And the IRQ
         */
        /*
         * And the IRQ
         */
        ap->flags |= ATA_FLAG_SLAVE_POSS;
  
        /*
        ap->flags |= ATA_FLAG_SLAVE_POSS;
  
        /*
-@@ -209,25 +186,24 @@
+@@ -209,25 +186,24 @@ static int __devinit pata_platform_probe
         * Handle the MMIO case
         */
        if (mmio) {
         * Handle the MMIO case
         */
        if (mmio) {
  
        ata_port_desc(ap, "%s cmd 0x%llx ctl 0x%llx", mmio ? "mmio" : "ioport",
                      (unsigned long long)io_res->start,
  
        ata_port_desc(ap, "%s cmd 0x%llx ctl 0x%llx", mmio ? "mmio" : "ioport",
                      (unsigned long long)io_res->start,
-@@ -235,26 +211,78 @@
+@@ -235,26 +211,78 @@ static int __devinit pata_platform_probe
  
        /* activate */
        return ata_host_activate(host, irq, irq ? ata_interrupt : NULL,
  
        /* activate */
        return ata_host_activate(host, irq, irq ? ata_interrupt : NULL,
        .probe          = pata_platform_probe,
 --- a/drivers/char/hw_random/Kconfig
 +++ b/drivers/char/hw_random/Kconfig
        .probe          = pata_platform_probe,
 --- a/drivers/char/hw_random/Kconfig
 +++ b/drivers/char/hw_random/Kconfig
-@@ -98,7 +98,7 @@
+@@ -98,7 +98,7 @@ config HW_RANDOM_PASEMI
        default HW_RANDOM
        ---help---
          This driver provides kernel-side support for the Random Number
        default HW_RANDOM
        ---help---
          This driver provides kernel-side support for the Random Number
          module will be called pasemi-rng.
 --- a/drivers/char/hw_random/pasemi-rng.c
 +++ b/drivers/char/hw_random/pasemi-rng.c
          module will be called pasemi-rng.
 --- a/drivers/char/hw_random/pasemi-rng.c
 +++ b/drivers/char/hw_random/pasemi-rng.c
-@@ -126,10 +126,9 @@
+@@ -126,10 +126,9 @@ static int __devexit rng_remove(struct o
  }
  
  static struct of_device_id rng_match[] = {
  }
  
  static struct of_device_id rng_match[] = {
  static struct of_platform_driver rng_driver = {
 --- a/drivers/edac/pasemi_edac.c
 +++ b/drivers/edac/pasemi_edac.c
  static struct of_platform_driver rng_driver = {
 --- a/drivers/edac/pasemi_edac.c
 +++ b/drivers/edac/pasemi_edac.c
-@@ -225,7 +225,7 @@
+@@ -225,7 +225,7 @@ static int __devinit pasemi_edac_probe(s
                EDAC_FLAG_NONE;
        mci->mod_name = MODULE_NAME;
        mci->dev_name = pci_name(pdev);
                EDAC_FLAG_NONE;
        mci->mod_name = MODULE_NAME;
        mci->dev_name = pci_name(pdev);
        mci->edac_check = pasemi_edac_check;
        mci->ctl_page_to_phys = NULL;
        pci_read_config_dword(pdev, MCCFG_SCRUB, &scrub);
        mci->edac_check = pasemi_edac_check;
        mci->ctl_page_to_phys = NULL;
        pci_read_config_dword(pdev, MCCFG_SCRUB, &scrub);
-@@ -297,4 +297,4 @@
+@@ -297,4 +297,4 @@ module_exit(pasemi_edac_exit);
  
  MODULE_LICENSE("GPL");
  MODULE_AUTHOR("Egor Martovetsky <egor@pasemi.com>");
  
  MODULE_LICENSE("GPL");
  MODULE_AUTHOR("Egor Martovetsky <egor@pasemi.com>");
  
  #include <asm/uaccess.h>
  #include <asm/semaphore.h>
  
  #include <asm/uaccess.h>
  #include <asm/semaphore.h>
-@@ -82,21 +83,11 @@
+@@ -82,21 +83,11 @@ struct adb_driver *adb_controller;
  BLOCKING_NOTIFIER_HEAD(adb_client_list);
  static int adb_got_sleep;
  static int adb_inited;
  BLOCKING_NOTIFIER_HEAD(adb_client_list);
  static int adb_got_sleep;
  static int adb_inited;
  static int adb_scan_bus(void);
  static int do_adb_reset_bus(void);
  static void adbdev_init(void);
  static int adb_scan_bus(void);
  static int do_adb_reset_bus(void);
  static void adbdev_init(void);
-@@ -134,16 +125,6 @@
+@@ -134,16 +125,6 @@ static void printADBreply(struct adb_req
  }
  #endif
  
  }
  #endif
  
  static int adb_scan_bus(void)
  {
        int i, highFree=0, noMovement;
  static int adb_scan_bus(void)
  {
        int i, highFree=0, noMovement;
-@@ -248,13 +229,10 @@
+@@ -248,13 +229,10 @@ static int adb_scan_bus(void)
  static int
  adb_probe_task(void *x)
  {
  static int
  adb_probe_task(void *x)
  {
        up(&adb_probe_mutex);
  
        return 0;
        up(&adb_probe_mutex);
  
        return 0;
-@@ -263,7 +241,7 @@
+@@ -263,7 +241,7 @@ adb_probe_task(void *x)
  static void
  __adb_probe_task(struct work_struct *bullshit)
  {
  static void
  __adb_probe_task(struct work_struct *bullshit)
  {
  }
  
  static DECLARE_WORK(adb_reset_work, __adb_probe_task);
  }
  
  static DECLARE_WORK(adb_reset_work, __adb_probe_task);
-@@ -281,6 +259,36 @@
+@@ -281,6 +259,36 @@ adb_reset_bus(void)
        return 0;
  }
  
        return 0;
  }
  
  int __init adb_init(void)
  {
        struct adb_driver *driver;
  int __init adb_init(void)
  {
        struct adb_driver *driver;
-@@ -313,15 +321,12 @@
+@@ -313,15 +321,12 @@ int __init adb_init(void)
                printk(KERN_WARNING "Warning: no ADB interface detected\n");
                adb_controller = NULL;
        } else {
                printk(KERN_WARNING "Warning: no ADB interface detected\n");
                adb_controller = NULL;
        } else {
                adbdev_init();
                adb_reset_bus();
        }
                adbdev_init();
                adb_reset_bus();
        }
-@@ -330,33 +335,6 @@
+@@ -330,33 +335,6 @@ int __init adb_init(void)
  
  __initcall(adb_init);
  
  
  __initcall(adb_init);
  
  static int
  do_adb_reset_bus(void)
  {
  static int
  do_adb_reset_bus(void)
  {
-@@ -373,7 +351,7 @@
+@@ -373,7 +351,7 @@ do_adb_reset_bus(void)
  
        if (sleepy_trackpad) {
                /* Let the trackpad settle down */
  
        if (sleepy_trackpad) {
                /* Let the trackpad settle down */
        }
  
        down(&adb_handler_sem);
        }
  
        down(&adb_handler_sem);
-@@ -389,7 +367,7 @@
+@@ -389,7 +367,7 @@ do_adb_reset_bus(void)
  
        if (sleepy_trackpad) {
                /* Let the trackpad settle down */
  
        if (sleepy_trackpad) {
                /* Let the trackpad settle down */
        }
  
        if (!ret) {
        }
  
        if (!ret) {
-@@ -413,41 +391,27 @@
+@@ -413,41 +391,27 @@ adb_poll(void)
        adb_controller->poll();
  }
  
        adb_controller->poll();
  }
  
        req->nbytes = nbytes+1;
        req->done = done;
        req->reply_expected = flags & ADBREQ_REPLY;
        req->nbytes = nbytes+1;
        req->done = done;
        req->reply_expected = flags & ADBREQ_REPLY;
-@@ -460,25 +424,18 @@
+@@ -460,25 +424,18 @@ adb_request(struct adb_request *req, voi
        if (flags & ADBREQ_NOSEND)
                return 0;
  
        if (flags & ADBREQ_NOSEND)
                return 0;
  
  
        return rc;
  }
  
        return rc;
  }
-@@ -864,7 +821,29 @@
+@@ -864,7 +821,29 @@ static const struct file_operations adb_
        .release        = adb_release,
  };
  
        .release        = adb_release,
  };
  
  adbdev_init(void)
  {
        if (register_chrdev(ADB_MAJOR, "adb", &adb_fops)) {
  adbdev_init(void)
  {
        if (register_chrdev(ADB_MAJOR, "adb", &adb_fops)) {
-@@ -876,4 +855,7 @@
+@@ -876,4 +855,7 @@ adbdev_init(void)
        if (IS_ERR(adb_dev_class))
                return;
        class_device_create(adb_dev_class, NULL, MKDEV(ADB_MAJOR, 0), NULL, "adb");
        if (IS_ERR(adb_dev_class))
                return;
        class_device_create(adb_dev_class, NULL, MKDEV(ADB_MAJOR, 0), NULL, "adb");
  
  #ifdef MB_DEBUG
  #define MBDBG(fmt, arg...)    printk(KERN_INFO fmt , ## arg)
  
  #ifdef MB_DEBUG
  #define MBDBG(fmt, arg...)    printk(KERN_INFO fmt , ## arg)
-@@ -622,12 +622,7 @@
+@@ -622,12 +622,7 @@ static int media_bay_task(void *x)
  {
        int     i;
  
  {
        int     i;
  
                for (i = 0; i < media_bay_count; ++i) {
                        down(&media_bays[i].lock);
                        if (!media_bays[i].sleeping)
                for (i = 0; i < media_bay_count; ++i) {
                        down(&media_bays[i].lock);
                        if (!media_bays[i].sleeping)
-@@ -636,9 +631,8 @@
+@@ -636,9 +631,8 @@ static int media_bay_task(void *x)
                }
  
                msleep_interruptible(MB_POLL_DELAY);
                }
  
                msleep_interruptible(MB_POLL_DELAY);
  }
  
  static int __devinit media_bay_attach(struct macio_dev *mdev, const struct of_device_id *match)
  }
  
  static int __devinit media_bay_attach(struct macio_dev *mdev, const struct of_device_id *match)
-@@ -699,7 +693,7 @@
+@@ -699,7 +693,7 @@ static int __devinit media_bay_attach(st
  
        /* Startup kernel thread */
        if (i == 0)
  
        /* Startup kernel thread */
        if (i == 0)
  
 --- a/drivers/macintosh/therm_adt746x.c
 +++ b/drivers/macintosh/therm_adt746x.c
  
 --- a/drivers/macintosh/therm_adt746x.c
 +++ b/drivers/macintosh/therm_adt746x.c
-@@ -553,6 +553,7 @@
+@@ -553,6 +553,7 @@ thermostat_init(void)
        struct device_node* np;
        const u32 *prop;
        int i = 0, offset = 0;
        struct device_node* np;
        const u32 *prop;
        int i = 0, offset = 0;
        
        np = of_find_node_by_name(NULL, "fan");
        if (!np)
        
        np = of_find_node_by_name(NULL, "fan");
        if (!np)
-@@ -612,17 +613,20 @@
+@@ -612,17 +613,20 @@ thermostat_init(void)
                return -ENODEV;
        }
        
                return -ENODEV;
        }
        
  #include <asm/prom.h>
  #include <asm/machdep.h>
  #include <asm/io.h>
  #include <asm/prom.h>
  #include <asm/machdep.h>
  #include <asm/io.h>
-@@ -161,7 +162,7 @@
+@@ -161,7 +162,7 @@ static struct slots_pid_state              slots_sta
  static int                            state;
  static int                            cpu_count;
  static int                            cpu_pid_type;
  static int                            state;
  static int                            cpu_count;
  static int                            cpu_pid_type;
  static struct completion              ctrl_complete;
  static int                            critical_state;
  static int                            rackmac;
  static struct completion              ctrl_complete;
  static int                            critical_state;
  static int                            rackmac;
-@@ -1156,6 +1157,8 @@
+@@ -1156,6 +1157,8 @@ static void do_monitor_cpu_rack(struct c
   */
  static int init_cpu_state(struct cpu_pid_state *state, int index)
  {
   */
  static int init_cpu_state(struct cpu_pid_state *state, int index)
  {
        state->index = index;
        state->first = 1;
        state->rpm = (cpu_pid_type == CPU_PID_TYPE_RACKMAC) ? 4000 : 1000;
        state->index = index;
        state->first = 1;
        state->rpm = (cpu_pid_type == CPU_PID_TYPE_RACKMAC) ? 4000 : 1000;
-@@ -1181,18 +1184,21 @@
+@@ -1181,18 +1184,21 @@ static int init_cpu_state(struct cpu_pid
        DBG("CPU %d Using %d power history entries\n", index, state->count_power);
  
        if (index == 0) {
        DBG("CPU %d Using %d power history entries\n", index, state->count_power);
  
        if (index == 0) {
  
        return 0;
   fail:
  
        return 0;
   fail:
-@@ -1328,6 +1334,7 @@
+@@ -1328,6 +1334,7 @@ static int init_backside_state(struct ba
  {
        struct device_node *u3;
        int u3h = 1; /* conservative by default */
  {
        struct device_node *u3;
        int u3h = 1; /* conservative by default */
  
        /*
         * There are different PID params for machines with U3 and machines
  
        /*
         * There are different PID params for machines with U3 and machines
-@@ -1379,8 +1386,11 @@
+@@ -1379,8 +1386,11 @@ static int init_backside_state(struct ba
        if (state->monitor == NULL)
                return -ENODEV;
  
        if (state->monitor == NULL)
                return -ENODEV;
  
  
        return 0;
  }
  
        return 0;
  }
-@@ -1491,6 +1501,8 @@
+@@ -1491,6 +1501,8 @@ static void do_monitor_drives(struct dri
   */
  static int init_drives_state(struct drives_pid_state *state)
  {
   */
  static int init_drives_state(struct drives_pid_state *state)
  {
        state->ticks = 1;
        state->first = 1;
        state->rpm = 1000;
        state->ticks = 1;
        state->first = 1;
        state->rpm = 1000;
-@@ -1499,8 +1511,11 @@
+@@ -1499,8 +1511,11 @@ static int init_drives_state(struct driv
        if (state->monitor == NULL)
                return -ENODEV;
  
        if (state->monitor == NULL)
                return -ENODEV;
  
  
        return 0;
  }
  
        return 0;
  }
-@@ -1621,7 +1636,9 @@
+@@ -1621,7 +1636,9 @@ static int init_dimms_state(struct dimm_
        if (state->monitor == NULL)
                return -ENODEV;
  
        if (state->monitor == NULL)
                return -ENODEV;
  
  
        return 0;
  }
  
        return 0;
  }
-@@ -1731,6 +1748,8 @@
+@@ -1731,6 +1748,8 @@ static void do_monitor_slots(struct slot
   */
  static int init_slots_state(struct slots_pid_state *state)
  {
   */
  static int init_slots_state(struct slots_pid_state *state)
  {
        state->ticks = 1;
        state->first = 1;
        state->pwm = 50;
        state->ticks = 1;
        state->first = 1;
        state->pwm = 50;
-@@ -1739,8 +1758,11 @@
+@@ -1739,8 +1758,11 @@ static int init_slots_state(struct slots
        if (state->monitor == NULL)
                return -ENODEV;
  
        if (state->monitor == NULL)
                return -ENODEV;
  
  
        return 0;
  }
  
        return 0;
  }
-@@ -1779,8 +1801,6 @@
+@@ -1779,8 +1801,6 @@ static int call_critical_overtemp(void)
   */
  static int main_control_loop(void *x)
  {
   */
  static int main_control_loop(void *x)
  {
        DBG("main_control_loop started\n");
  
        down(&driver_lock);
        DBG("main_control_loop started\n");
  
        down(&driver_lock);
-@@ -1956,7 +1976,7 @@
+@@ -1956,7 +1976,7 @@ static void start_control_loops(void)
  {
        init_completion(&ctrl_complete);
  
  {
        init_completion(&ctrl_complete);
  
  }
  
  /*
  }
  
  /*
-@@ -1964,7 +1984,7 @@
+@@ -1964,7 +1984,7 @@ static void start_control_loops(void)
   */
  static void stop_control_loops(void)
  {
   */
  static void stop_control_loops(void)
  {
  
  #include <asm/prom.h>
  #include <asm/machdep.h>
  
  #include <asm/prom.h>
  #include <asm/machdep.h>
-@@ -61,8 +62,7 @@
+@@ -61,8 +62,7 @@ I2C_CLIENT_INSMOD;
  
  static struct {
        volatile int            running;
  
  static struct {
        volatile int            running;
        
        struct semaphore        lock;
        struct of_device        *of_dev;
        
        struct semaphore        lock;
        struct of_device        *of_dev;
-@@ -223,6 +223,7 @@
+@@ -223,6 +223,7 @@ static void
  setup_hardware( void )
  {
        int val;
  setup_hardware( void )
  {
        int val;
  
        /* save registers (if we unload the module) */
        x.r0 = read_reg( x.fan, 0x00, 1 );
  
        /* save registers (if we unload the module) */
        x.r0 = read_reg( x.fan, 0x00, 1 );
-@@ -265,8 +266,11 @@
+@@ -265,8 +266,11 @@ setup_hardware( void )
        x.upind = -1;
        /* tune_fan( fan_up_table[x.upind].fan_setting ); */
  
        x.upind = -1;
        /* tune_fan( fan_up_table[x.upind].fan_setting ); */
  
  }
  
  static void
  }
  
  static void
-@@ -282,27 +286,27 @@
+@@ -282,27 +286,27 @@ restore_regs( void )
        write_reg( x.fan, 0x00, x.r0, 1 );
  }
  
        write_reg( x.fan, 0x00, x.r0, 1 );
  }
  
  }
  
  
  }
  
  
-@@ -322,8 +326,7 @@
+@@ -322,8 +326,7 @@ do_attach( struct i2c_adapter *adapter )
                ret = i2c_probe( adapter, &addr_data, &do_probe );
                if( x.thermostat && x.fan ) {
                        x.running = 1;
                ret = i2c_probe( adapter, &addr_data, &do_probe );
                if( x.thermostat && x.fan ) {
                        x.running = 1;
                }
        }
        return ret;
                }
        }
        return ret;
-@@ -339,7 +342,8 @@
+@@ -339,7 +342,8 @@ do_detach( struct i2c_client *client )
        else {
                if( x.running ) {
                        x.running = 0;
        else {
                if( x.running ) {
                        x.running = 0;
                        x.thermostat = NULL;
 --- a/drivers/macintosh/via-pmu-backlight.c
 +++ b/drivers/macintosh/via-pmu-backlight.c
                        x.thermostat = NULL;
 --- a/drivers/macintosh/via-pmu-backlight.c
 +++ b/drivers/macintosh/via-pmu-backlight.c
-@@ -22,7 +22,7 @@
+@@ -22,7 +22,7 @@ static u8 bl_curve[FB_BACKLIGHT_LEVELS];
  
  static void pmu_backlight_init_curve(u8 off, u8 min, u8 max)
  {
  
  static void pmu_backlight_init_curve(u8 off, u8 min, u8 max)
  {
  
        bl_curve[0] = off;
  
  
        bl_curve[0] = off;
  
-@@ -68,17 +68,11 @@
+@@ -68,17 +68,11 @@ static int pmu_backlight_get_level_brigh
        return pmulevel;
  }
  
        return pmulevel;
  }
  
  
        if (bd->props.power != FB_BLANK_UNBLANK ||
            bd->props.fb_blank != FB_BLANK_UNBLANK)
  
        if (bd->props.power != FB_BLANK_UNBLANK ||
            bd->props.fb_blank != FB_BLANK_UNBLANK)
-@@ -99,12 +93,23 @@
+@@ -99,12 +93,23 @@ static int pmu_backlight_update_status(s
                pmu_wait_complete(&req);
        }
  
                pmu_wait_complete(&req);
        }
  
  static int pmu_backlight_get_brightness(struct backlight_device *bd)
  {
        return bd->props.brightness;
  static int pmu_backlight_get_brightness(struct backlight_device *bd)
  {
        return bd->props.brightness;
-@@ -123,6 +128,16 @@
+@@ -123,6 +128,16 @@ void pmu_backlight_set_sleep(int sleep)
  
        spin_lock_irqsave(&pmu_backlight_lock, flags);
        sleeping = sleep;
  
        spin_lock_irqsave(&pmu_backlight_lock, flags);
        sleeping = sleep;
        spin_unlock_irqrestore(&pmu_backlight_lock, flags);
  }
  #endif /* CONFIG_PM */
        spin_unlock_irqrestore(&pmu_backlight_lock, flags);
  }
  #endif /* CONFIG_PM */
-@@ -148,8 +163,8 @@
+@@ -148,8 +163,8 @@ void __init pmu_backlight_init()
  
        bd = backlight_device_register(name, NULL, NULL, &pmu_backlight_data);
        if (IS_ERR(bd)) {
  
        bd = backlight_device_register(name, NULL, NULL, &pmu_backlight_data);
        if (IS_ERR(bd)) {
        }
        bd->props.max_brightness = FB_BACKLIGHT_LEVELS - 1;
        pmu_backlight_init_curve(0x7F, 0x46, 0x0E);
        }
        bd->props.max_brightness = FB_BACKLIGHT_LEVELS - 1;
        pmu_backlight_init_curve(0x7F, 0x46, 0x0E);
-@@ -171,10 +186,5 @@
+@@ -171,10 +186,5 @@ void __init pmu_backlight_init()
        bd->props.power = FB_BLANK_UNBLANK;
        backlight_update_status(bd);
  
        bd->props.power = FB_BLANK_UNBLANK;
        backlight_update_status(bd);
  
  
  /* Misc minor number allocated for /dev/pmu */
  #define PMU_MINOR             154
  
  /* Misc minor number allocated for /dev/pmu */
  #define PMU_MINOR             154
-@@ -152,12 +147,9 @@
+@@ -152,12 +147,9 @@ static spinlock_t pmu_lock;
  static u8 pmu_intr_mask;
  static int pmu_version;
  static int drop_interrupts;
  static u8 pmu_intr_mask;
  static int pmu_version;
  static int drop_interrupts;
  static unsigned long async_req_locks;
  static unsigned int pmu_irq_stats[11];
  
  static unsigned long async_req_locks;
  static unsigned int pmu_irq_stats[11];
  
-@@ -177,7 +169,6 @@
+@@ -177,7 +169,6 @@ static struct proc_dir_entry *proc_pmu_b
  
  int __fake_sleep;
  int asleep;
  
  int __fake_sleep;
  int asleep;
  
  #ifdef CONFIG_ADB
  static int adb_dev_map;
  
  #ifdef CONFIG_ADB
  static int adb_dev_map;
-@@ -224,7 +215,7 @@
+@@ -224,7 +215,7 @@ extern void enable_kernel_fp(void);
  
  #ifdef DEBUG_SLEEP
  int pmu_polled_request(struct adb_request *req);
  
  #ifdef DEBUG_SLEEP
  int pmu_polled_request(struct adb_request *req);
  #endif
  
  /*
  #endif
  
  /*
-@@ -875,7 +866,7 @@
+@@ -875,7 +866,7 @@ proc_read_options(char *page, char **sta
  {
        char *p = page;
  
  {
        char *p = page;
  
        if (pmu_kind == PMU_KEYLARGO_BASED &&
            pmac_call_feature(PMAC_FTR_SLEEP_STATE,NULL,0,-1) >= 0)
                p += sprintf(p, "lid_wakeup=%d\n", option_lid_wakeup);
        if (pmu_kind == PMU_KEYLARGO_BASED &&
            pmac_call_feature(PMAC_FTR_SLEEP_STATE,NULL,0,-1) >= 0)
                p += sprintf(p, "lid_wakeup=%d\n", option_lid_wakeup);
-@@ -916,7 +907,7 @@
+@@ -916,7 +907,7 @@ proc_write_options(struct file *file, co
        *(val++) = 0;
        while(*val == ' ')
                val++;
        *(val++) = 0;
        while(*val == ' ')
                val++;
        if (pmu_kind == PMU_KEYLARGO_BASED &&
            pmac_call_feature(PMAC_FTR_SLEEP_STATE,NULL,0,-1) >= 0)
                if (!strcmp(label, "lid_wakeup"))
        if (pmu_kind == PMU_KEYLARGO_BASED &&
            pmac_call_feature(PMAC_FTR_SLEEP_STATE,NULL,0,-1) >= 0)
                if (!strcmp(label, "lid_wakeup"))
-@@ -1256,9 +1247,7 @@
+@@ -1256,9 +1247,7 @@ void
  pmu_suspend(void)
  {
        unsigned long flags;
  pmu_suspend(void)
  {
        unsigned long flags;
        if (!via)
                return;
        
        if (!via)
                return;
        
-@@ -1276,17 +1265,10 @@
+@@ -1276,17 +1265,10 @@ pmu_suspend(void)
                via_pmu_interrupt(0, NULL);
                spin_lock_irqsave(&pmu_lock, flags);
                if (!adb_int_pending && pmu_state == idle && !req_awaiting_reply) {
                via_pmu_interrupt(0, NULL);
                spin_lock_irqsave(&pmu_lock, flags);
                if (!adb_int_pending && pmu_state == idle && !req_awaiting_reply) {
                        break;
                }
        } while (1);
                        break;
                }
        } while (1);
-@@ -1307,18 +1289,11 @@
+@@ -1307,18 +1289,11 @@ pmu_resume(void)
                return;
        }
        adb_int_pending = 1;
                return;
        }
        adb_int_pending = 1;
  }
  
  /* Interrupt data could be the result data from an ADB cmd */
  }
  
  /* Interrupt data could be the result data from an ADB cmd */
-@@ -1738,228 +1713,7 @@
+@@ -1738,228 +1713,7 @@ pmu_present(void)
        return via != 0;
  }
  
        return via != 0;
  }
  
  /*
   * Put the powerbook to sleep.
   */
  /*
   * Put the powerbook to sleep.
   */
-@@ -1994,134 +1748,6 @@
+@@ -1994,134 +1748,6 @@ restore_via_state(void)
        out_8(&via[IER], IER_SET | SR_INT | CB1_INT);
  }
  
        out_8(&via[IER], IER_SET | SR_INT | CB1_INT);
  }
  
  #define       GRACKLE_PM      (1<<7)
  #define GRACKLE_DOZE  (1<<5)
  #define       GRACKLE_NAP     (1<<4)
  #define       GRACKLE_PM      (1<<7)
  #define GRACKLE_DOZE  (1<<5)
  #define       GRACKLE_NAP     (1<<4)
-@@ -2132,19 +1758,12 @@
+@@ -2132,19 +1758,12 @@ static int powerbook_sleep_grackle(void)
        unsigned long save_l2cr;
        unsigned short pmcr1;
        struct adb_request req;
        unsigned long save_l2cr;
        unsigned short pmcr1;
        struct adb_request req;
        /* Turn off various things. Darwin does some retry tests here... */
        pmu_request(&req, NULL, 2, PMU_POWER_CTRL0, PMU_POW0_OFF|PMU_POW0_HARD_DRIVE);
        pmu_wait_complete(&req);
        /* Turn off various things. Darwin does some retry tests here... */
        pmu_request(&req, NULL, 2, PMU_POWER_CTRL0, PMU_POW0_OFF|PMU_POW0_HARD_DRIVE);
        pmu_wait_complete(&req);
-@@ -2207,8 +1826,6 @@
+@@ -2207,8 +1826,6 @@ static int powerbook_sleep_grackle(void)
                        PMU_POW_ON|PMU_POW_BACKLIGHT|PMU_POW_CHARGER|PMU_POW_IRLED|PMU_POW_MEDIABAY);
        pmu_wait_complete(&req);
  
                        PMU_POW_ON|PMU_POW_BACKLIGHT|PMU_POW_CHARGER|PMU_POW_IRLED|PMU_POW_MEDIABAY);
        pmu_wait_complete(&req);
  
        return 0;
  }
  
        return 0;
  }
  
-@@ -2218,7 +1835,6 @@
+@@ -2218,7 +1835,6 @@ powerbook_sleep_Core99(void)
        unsigned long save_l2cr;
        unsigned long save_l3cr;
        struct adb_request req;
        unsigned long save_l2cr;
        unsigned long save_l3cr;
        struct adb_request req;
        
        if (pmac_call_feature(PMAC_FTR_SLEEP_STATE,NULL,0,-1) < 0) {
                printk(KERN_ERR "Sleep mode not supported on this machine\n");
        
        if (pmac_call_feature(PMAC_FTR_SLEEP_STATE,NULL,0,-1) < 0) {
                printk(KERN_ERR "Sleep mode not supported on this machine\n");
-@@ -2228,12 +1844,6 @@
+@@ -2228,12 +1844,6 @@ powerbook_sleep_Core99(void)
        if (num_online_cpus() > 1 || cpu_is_offline(0))
                return -EAGAIN;
  
        if (num_online_cpus() > 1 || cpu_is_offline(0))
                return -EAGAIN;
  
        /* Stop environment and ADB interrupts */
        pmu_request(&req, NULL, 2, PMU_SET_INTR_MASK, 0);
        pmu_wait_complete(&req);
        /* Stop environment and ADB interrupts */
        pmu_request(&req, NULL, 2, PMU_SET_INTR_MASK, 0);
        pmu_wait_complete(&req);
-@@ -2304,45 +1914,33 @@
+@@ -2304,45 +1914,33 @@ powerbook_sleep_Core99(void)
        /* Restore LPJ, cpufreq will adjust the cpu frequency */
        loops_per_jiffy /= 2;
  
        /* Restore LPJ, cpufreq will adjust the cpu frequency */
        loops_per_jiffy /= 2;
  
  
        /* Set the memory controller to keep the memory refreshed
           while we're asleep */
  
        /* Set the memory controller to keep the memory refreshed
           while we're asleep */
-@@ -2357,41 +1955,34 @@
+@@ -2357,41 +1955,34 @@ powerbook_sleep_3400(void)
  
        /* Ask the PMU to put us to sleep */
        pmu_request(&sleep_req, NULL, 5, PMU_SLEEP, 'M', 'A', 'T', 'T');
  
        /* Ask the PMU to put us to sleep */
        pmu_request(&sleep_req, NULL, 5, PMU_SLEEP, 'M', 'A', 'T', 'T');
  
  /*
   * Support for /dev/pmu device
  
  /*
   * Support for /dev/pmu device
-@@ -2548,7 +2139,6 @@
+@@ -2548,7 +2139,6 @@ pmu_release(struct inode *inode, struct 
        struct pmu_private *pp = file->private_data;
        unsigned long flags;
  
        struct pmu_private *pp = file->private_data;
        unsigned long flags;
  
        if (pp != 0) {
                file->private_data = NULL;
                spin_lock_irqsave(&all_pvt_lock, flags);
        if (pp != 0) {
                file->private_data = NULL;
                spin_lock_irqsave(&all_pvt_lock, flags);
-@@ -2562,10 +2152,96 @@
+@@ -2562,10 +2152,96 @@ pmu_release(struct inode *inode, struct 
  
                kfree(pp);
        }
  
                kfree(pp);
        }
  static int
  pmu_ioctl(struct inode * inode, struct file *filp,
                     u_int cmd, u_long arg)
  static int
  pmu_ioctl(struct inode * inode, struct file *filp,
                     u_int cmd, u_long arg)
-@@ -2574,35 +2250,15 @@
+@@ -2574,35 +2250,15 @@ pmu_ioctl(struct inode * inode, struct f
        int error = -EINVAL;
  
        switch (cmd) {
        int error = -EINVAL;
  
        switch (cmd) {
  
  #ifdef CONFIG_PMAC_BACKLIGHT_LEGACY
        /* Compatibility ioctl's for backlight */
  
  #ifdef CONFIG_PMAC_BACKLIGHT_LEGACY
        /* Compatibility ioctl's for backlight */
-@@ -2610,9 +2266,6 @@
+@@ -2610,9 +2266,6 @@ pmu_ioctl(struct inode * inode, struct f
        {
                int brightness;
  
        {
                int brightness;
  
                brightness = pmac_backlight_get_legacy_brightness();
                if (brightness < 0)
                        return brightness;
                brightness = pmac_backlight_get_legacy_brightness();
                if (brightness < 0)
                        return brightness;
-@@ -2624,9 +2277,6 @@
+@@ -2624,9 +2277,6 @@ pmu_ioctl(struct inode * inode, struct f
        {
                int brightness;
  
        {
                int brightness;
  
                error = get_user(brightness, argp);
                if (error)
                        return error;
                error = get_user(brightness, argp);
                if (error)
                        return error;
-@@ -2751,15 +2401,43 @@
+@@ -2751,15 +2401,43 @@ pmu_polled_request(struct adb_request *r
        local_irq_restore(flags);
        return 0;
  }
        local_irq_restore(flags);
        return 0;
  }
  int pmu_sys_suspended;
  
  static int pmu_sys_suspend(struct sys_device *sysdev, pm_message_t state)
  int pmu_sys_suspended;
  
  static int pmu_sys_suspend(struct sys_device *sysdev, pm_message_t state)
-@@ -2767,10 +2445,15 @@
+@@ -2767,10 +2445,15 @@ static int pmu_sys_suspend(struct sys_de
        if (state.event != PM_EVENT_SUSPEND || pmu_sys_suspended)
                return 0;
  
        if (state.event != PM_EVENT_SUSPEND || pmu_sys_suspended)
                return 0;
  
        return 0;
  }
  
        return 0;
  }
  
-@@ -2785,15 +2468,18 @@
+@@ -2785,15 +2468,18 @@ static int pmu_sys_resume(struct sys_dev
        pmu_request(&req, NULL, 2, PMU_SYSTEM_READY, 2);
        pmu_wait_complete(&req);
  
        pmu_request(&req, NULL, 2, PMU_SYSTEM_READY, 2);
        pmu_wait_complete(&req);
  
  
  static struct sysdev_class pmu_sysclass = {
        set_kset_name("pmu"),
  
  static struct sysdev_class pmu_sysclass = {
        set_kset_name("pmu"),
-@@ -2804,10 +2490,10 @@
+@@ -2804,10 +2490,10 @@ static struct sys_device device_pmu = {
  };
  
  static struct sysdev_driver driver_pmu = {
  };
  
  static struct sysdev_driver driver_pmu = {
  };
  
  static int __init init_pmu_sysfs(void)
  };
  
  static int __init init_pmu_sysfs(void)
-@@ -2842,10 +2528,10 @@
+@@ -2842,10 +2528,10 @@ EXPORT_SYMBOL(pmu_wait_complete);
  EXPORT_SYMBOL(pmu_suspend);
  EXPORT_SYMBOL(pmu_resume);
  EXPORT_SYMBOL(pmu_unlock);
  EXPORT_SYMBOL(pmu_suspend);
  EXPORT_SYMBOL(pmu_resume);
  EXPORT_SYMBOL(pmu_unlock);
  
 --- a/drivers/net/fs_enet/fs_enet-main.c
 +++ b/drivers/net/fs_enet/fs_enet-main.c
  
 --- a/drivers/net/fs_enet/fs_enet-main.c
 +++ b/drivers/net/fs_enet/fs_enet-main.c
-@@ -1178,8 +1178,15 @@
+@@ -1178,8 +1178,15 @@ static int __devinit find_phy(struct dev
        struct device_node *phynode, *mdionode;
        struct resource res;
        int ret = 0, len;
        struct device_node *phynode, *mdionode;
        struct resource res;
        int ret = 0, len;
  #include <asm/io.h>
 --- a/drivers/net/phy/Kconfig
 +++ b/drivers/net/phy/Kconfig
  #include <asm/io.h>
 --- a/drivers/net/phy/Kconfig
 +++ b/drivers/net/phy/Kconfig
-@@ -61,34 +61,12 @@
+@@ -61,34 +61,12 @@ config ICPLUS_PHY
          Currently supports the IP175C PHY.
  
  config FIXED_PHY
          Currently supports the IP175C PHY.
  
  config FIXED_PHY
 +MODULE_LICENSE("GPL");
 --- a/drivers/net/ps3_gelic_net.c
 +++ b/drivers/net/ps3_gelic_net.c
 +MODULE_LICENSE("GPL");
 --- a/drivers/net/ps3_gelic_net.c
 +++ b/drivers/net/ps3_gelic_net.c
-@@ -58,11 +58,11 @@
+@@ -58,11 +58,11 @@ static inline struct device *ctodev(stru
  {
        return &card->dev->core;
  }
  {
        return &card->dev->core;
  }
  }
 --- a/drivers/net/ucc_geth.c
 +++ b/drivers/net/ucc_geth.c
  }
 --- a/drivers/net/ucc_geth.c
 +++ b/drivers/net/ucc_geth.c
-@@ -3822,6 +3822,7 @@
+@@ -3822,6 +3822,7 @@ static int ucc_geth_probe(struct of_devi
        int err, ucc_num, max_speed = 0;
        const phandle *ph;
        const unsigned int *prop;
        int err, ucc_num, max_speed = 0;
        const phandle *ph;
        const unsigned int *prop;
        const void *mac_addr;
        phy_interface_t phy_interface;
        static const int enet_to_speed[] = {
        const void *mac_addr;
        phy_interface_t phy_interface;
        static const int enet_to_speed[] = {
-@@ -3854,10 +3855,56 @@
+@@ -3854,10 +3855,56 @@ static int ucc_geth_probe(struct of_devi
  
        ug_info->uf_info.ucc_num = ucc_num;
  
  
        ug_info->uf_info.ucc_num = ucc_num;
  
                return -EINVAL;
 --- a/drivers/of/base.c
 +++ b/drivers/of/base.c
                return -EINVAL;
 --- a/drivers/of/base.c
 +++ b/drivers/of/base.c
-@@ -273,3 +273,61 @@
+@@ -273,3 +273,61 @@ struct device_node *of_find_compatible_n
        return np;
  }
  EXPORT_SYMBOL(of_find_compatible_node);
        return np;
  }
  EXPORT_SYMBOL(of_find_compatible_node);
   * @ids: array of of device match structures to search in
 --- a/drivers/ps3/Makefile
 +++ b/drivers/ps3/Makefile
   * @ids: array of of device match structures to search in
 --- a/drivers/ps3/Makefile
 +++ b/drivers/ps3/Makefile
-@@ -4,3 +4,4 @@
+@@ -4,3 +4,4 @@ ps3av_mod-objs         += ps3av.o ps3av_cmd.o
  obj-$(CONFIG_PPC_PS3) += sys-manager-core.o
  obj-$(CONFIG_PS3_SYS_MANAGER) += ps3-sys-manager.o
  obj-$(CONFIG_PS3_STORAGE) += ps3stor_lib.o
  obj-$(CONFIG_PPC_PS3) += sys-manager-core.o
  obj-$(CONFIG_PS3_SYS_MANAGER) += ps3-sys-manager.o
  obj-$(CONFIG_PS3_STORAGE) += ps3stor_lib.o
 +MODULE_ALIAS(PS3_MODULE_ALIAS_LPM);
 --- a/drivers/ps3/ps3-sys-manager.c
 +++ b/drivers/ps3/ps3-sys-manager.c
 +MODULE_ALIAS(PS3_MODULE_ALIAS_LPM);
 --- a/drivers/ps3/ps3-sys-manager.c
 +++ b/drivers/ps3/ps3-sys-manager.c
-@@ -452,7 +452,7 @@
+@@ -452,7 +452,7 @@ static int ps3_sys_manager_handle_event(
        case PS3_SM_EVENT_THERMAL_ALERT:
                dev_dbg(&dev->core, "%s:%d: THERMAL_ALERT (zone %u)\n",
                        __func__, __LINE__, event.value);
        case PS3_SM_EVENT_THERMAL_ALERT:
                dev_dbg(&dev->core, "%s:%d: THERMAL_ALERT (zone %u)\n",
                        __func__, __LINE__, event.value);
                break;
        case PS3_SM_EVENT_THERMAL_CLEARED:
                dev_dbg(&dev->core, "%s:%d: THERMAL_CLEARED (zone %u)\n",
                break;
        case PS3_SM_EVENT_THERMAL_CLEARED:
                dev_dbg(&dev->core, "%s:%d: THERMAL_CLEARED (zone %u)\n",
-@@ -488,7 +488,7 @@
+@@ -488,7 +488,7 @@ static int ps3_sys_manager_handle_cmd(st
        result = ps3_vuart_read(dev, &cmd, sizeof(cmd));
        BUG_ON(result && "need to retry here");
  
        result = ps3_vuart_read(dev, &cmd, sizeof(cmd));
        BUG_ON(result && "need to retry here");
  
                return result;
  
        if (cmd.version != 1) {
                return result;
  
        if (cmd.version != 1) {
-@@ -521,7 +521,7 @@
+@@ -521,7 +521,7 @@ static int ps3_sys_manager_handle_msg(st
        result = ps3_vuart_read(dev, &header,
                sizeof(struct ps3_sys_manager_header));
  
        result = ps3_vuart_read(dev, &header,
                sizeof(struct ps3_sys_manager_header));
  
                return result;
  
        if (header.version != 1) {
                return result;
  
        if (header.version != 1) {
-@@ -589,9 +589,9 @@
+@@ -589,9 +589,9 @@ static void ps3_sys_manager_final_power_
                PS3_SM_WAKE_DEFAULT);
        ps3_sys_manager_send_request_shutdown(dev);
  
                PS3_SM_WAKE_DEFAULT);
        ps3_sys_manager_send_request_shutdown(dev);
  
                ps3_sys_manager_handle_msg(dev);
  }
  
                ps3_sys_manager_handle_msg(dev);
  }
  
-@@ -626,9 +626,9 @@
+@@ -626,9 +626,9 @@ static void ps3_sys_manager_final_restar
                PS3_SM_WAKE_DEFAULT);
        ps3_sys_manager_send_request_shutdown(dev);
  
                PS3_SM_WAKE_DEFAULT);
        ps3_sys_manager_send_request_shutdown(dev);
  
  
 --- a/drivers/ps3/ps3-vuart.c
 +++ b/drivers/ps3/ps3-vuart.c
  
 --- a/drivers/ps3/ps3-vuart.c
 +++ b/drivers/ps3/ps3-vuart.c
-@@ -108,18 +108,18 @@
+@@ -108,18 +108,18 @@ static struct ps3_vuart_port_priv *to_po
  struct ports_bmp {
        u64 status;
        u64 unused[3];
  struct ports_bmp {
        u64 status;
        u64 unused[3];
  {
  #if defined(DEBUG)
        static const char *strings[] = {
  {
  #if defined(DEBUG)
        static const char *strings[] = {
-@@ -363,7 +363,7 @@
+@@ -363,7 +363,7 @@ int ps3_vuart_disable_interrupt_disconne
   */
  
  static int ps3_vuart_raw_write(struct ps3_system_bus_device *dev,
   */
  
  static int ps3_vuart_raw_write(struct ps3_system_bus_device *dev,
  {
        int result;
        struct ps3_vuart_port_priv *priv = to_port_priv(dev);
  {
        int result;
        struct ps3_vuart_port_priv *priv = to_port_priv(dev);
-@@ -431,7 +431,7 @@
+@@ -431,7 +431,7 @@ void ps3_vuart_clear_rx_bytes(struct ps3
        int result;
        struct ps3_vuart_port_priv *priv = to_port_priv(dev);
        u64 bytes_waiting;
        int result;
        struct ps3_vuart_port_priv *priv = to_port_priv(dev);
        u64 bytes_waiting;
  
        result = ps3_vuart_get_rx_bytes_waiting(dev, &bytes_waiting);
  
  
        result = ps3_vuart_get_rx_bytes_waiting(dev, &bytes_waiting);
  
-@@ -526,9 +526,8 @@
+@@ -526,9 +526,8 @@ int ps3_vuart_write(struct ps3_system_bu
  
        lb = kmalloc(sizeof(struct list_buffer) + bytes, GFP_KERNEL);
  
  
        lb = kmalloc(sizeof(struct list_buffer) + bytes, GFP_KERNEL);
  
  
        memcpy(lb->data, buf, bytes);
        lb->head = lb->data;
  
        memcpy(lb->data, buf, bytes);
        lb->head = lb->data;
-@@ -878,7 +877,7 @@
+@@ -878,7 +877,7 @@ static int ps3_vuart_handle_port_interru
  struct vuart_bus_priv {
        struct ports_bmp *bmp;
        unsigned int virq;
  struct vuart_bus_priv {
        struct ports_bmp *bmp;
        unsigned int virq;
        int use_count;
        struct ps3_system_bus_device *devices[PORT_COUNT];
  } static vuart_bus_priv;
        int use_count;
        struct ps3_system_bus_device *devices[PORT_COUNT];
  } static vuart_bus_priv;
-@@ -926,9 +925,8 @@
+@@ -926,9 +925,8 @@ static int ps3_vuart_bus_interrupt_get(v
  
        BUG_ON(vuart_bus_priv.use_count > 2);
  
  
        BUG_ON(vuart_bus_priv.use_count > 2);
  
  
        BUG_ON(vuart_bus_priv.bmp);
  
  
        BUG_ON(vuart_bus_priv.bmp);
  
-@@ -1017,7 +1015,7 @@
+@@ -1017,7 +1015,7 @@ static int ps3_vuart_probe(struct ps3_sy
                return -EINVAL;
        }
  
                return -EINVAL;
        }
  
  
        result = ps3_vuart_bus_interrupt_get();
  
  
        result = ps3_vuart_bus_interrupt_get();
  
-@@ -1077,7 +1075,7 @@
+@@ -1077,7 +1075,7 @@ static int ps3_vuart_probe(struct ps3_sy
                goto fail_probe;
        }
  
                goto fail_probe;
        }
  
  
        return result;
  
  
        return result;
  
-@@ -1090,7 +1088,7 @@
+@@ -1090,7 +1088,7 @@ fail_dev_malloc:
  fail_busy:
        ps3_vuart_bus_interrupt_put();
  fail_setup_interrupt:
  fail_busy:
        ps3_vuart_bus_interrupt_put();
  fail_setup_interrupt:
        dev_dbg(&dev->core, "%s:%d: failed\n", __func__, __LINE__);
        return result;
  }
        dev_dbg(&dev->core, "%s:%d: failed\n", __func__, __LINE__);
        return result;
  }
-@@ -1129,7 +1127,7 @@
+@@ -1129,7 +1127,7 @@ static int ps3_vuart_remove(struct ps3_s
  
        BUG_ON(!dev);
  
  
        BUG_ON(!dev);
  
  
        dev_dbg(&dev->core, " -> %s:%d: match_id %d\n", __func__, __LINE__,
                dev->match_id);
  
        dev_dbg(&dev->core, " -> %s:%d: match_id %d\n", __func__, __LINE__,
                dev->match_id);
-@@ -1137,7 +1135,7 @@
+@@ -1137,7 +1135,7 @@ static int ps3_vuart_remove(struct ps3_s
        if (!dev->core.driver) {
                dev_dbg(&dev->core, "%s:%d: no driver bound\n", __func__,
                        __LINE__);
        if (!dev->core.driver) {
                dev_dbg(&dev->core, "%s:%d: no driver bound\n", __func__,
                        __LINE__);
                return 0;
        }
  
                return 0;
        }
  
-@@ -1160,7 +1158,7 @@
+@@ -1160,7 +1158,7 @@ static int ps3_vuart_remove(struct ps3_s
        priv = NULL;
  
        dev_dbg(&dev->core, " <- %s:%d\n", __func__, __LINE__);
        priv = NULL;
  
        dev_dbg(&dev->core, " <- %s:%d\n", __func__, __LINE__);
        return 0;
  }
  
        return 0;
  }
  
-@@ -1180,7 +1178,7 @@
+@@ -1180,7 +1178,7 @@ static int ps3_vuart_shutdown(struct ps3
  
        BUG_ON(!dev);
  
  
        BUG_ON(!dev);
  
  
        dev_dbg(&dev->core, " -> %s:%d: match_id %d\n", __func__, __LINE__,
                dev->match_id);
  
        dev_dbg(&dev->core, " -> %s:%d: match_id %d\n", __func__, __LINE__,
                dev->match_id);
-@@ -1188,7 +1186,7 @@
+@@ -1188,7 +1186,7 @@ static int ps3_vuart_shutdown(struct ps3
        if (!dev->core.driver) {
                dev_dbg(&dev->core, "%s:%d: no driver bound\n", __func__,
                        __LINE__);
        if (!dev->core.driver) {
                dev_dbg(&dev->core, "%s:%d: no driver bound\n", __func__,
                        __LINE__);
                return 0;
        }
  
                return 0;
        }
  
-@@ -1212,7 +1210,7 @@
+@@ -1212,7 +1210,7 @@ static int ps3_vuart_shutdown(struct ps3
  
        dev_dbg(&dev->core, " <- %s:%d\n", __func__, __LINE__);
  
  
        dev_dbg(&dev->core, " <- %s:%d\n", __func__, __LINE__);
  
        return 0;
  }
  
        return 0;
  }
  
-@@ -1223,7 +1221,7 @@
+@@ -1223,7 +1221,7 @@ static int __init ps3_vuart_bus_init(voi
        if (!firmware_has_feature(FW_FEATURE_PS3_LV1))
                return -ENODEV;
  
        if (!firmware_has_feature(FW_FEATURE_PS3_LV1))
                return -ENODEV;
  
  }
 --- a/drivers/serial/Kconfig
 +++ b/drivers/serial/Kconfig
  }
 --- a/drivers/serial/Kconfig
 +++ b/drivers/serial/Kconfig
-@@ -1284,4 +1284,14 @@
+@@ -1284,4 +1284,14 @@ config SERIAL_OF_PLATFORM
          Currently, only 8250 compatible ports are supported, but
          others can easily be added.
  
          Currently, only 8250 compatible ports are supported, but
          others can easily be added.
  
  endmenu
 --- a/drivers/serial/Makefile
 +++ b/drivers/serial/Makefile
  endmenu
 --- a/drivers/serial/Makefile
 +++ b/drivers/serial/Makefile
-@@ -64,3 +64,4 @@
+@@ -64,3 +64,4 @@ obj-$(CONFIG_SERIAL_UARTLITE) += uartlit
  obj-$(CONFIG_SERIAL_NETX) += netx-serial.o
  obj-$(CONFIG_SERIAL_OF_PLATFORM) += of_serial.o
  obj-$(CONFIG_SERIAL_KS8695) += serial_ks8695.o
  obj-$(CONFIG_SERIAL_NETX) += netx-serial.o
  obj-$(CONFIG_SERIAL_OF_PLATFORM) += of_serial.o
  obj-$(CONFIG_SERIAL_KS8695) += serial_ks8695.o
  }
  #else
  void cpm_line_cr_cmd(struct uart_cpm_port *port, int cmd)
  }
  #else
  void cpm_line_cr_cmd(struct uart_cpm_port *port, int cmd)
-@@ -171,9 +165,9 @@
+@@ -171,9 +165,9 @@ void scc2_lineif(struct uart_cpm_port *p
         * really has to get out of the driver so boards can
         * be supported in a sane fashion.
         */
         * really has to get out of the driver so boards can
         * be supported in a sane fashion.
         */
  #else
  #include <linux/platform_device.h>
  #endif
  #else
  #include <linux/platform_device.h>
  #endif
-@@ -111,16 +112,18 @@
+@@ -111,16 +112,18 @@ static void mpc52xx_uart_of_enumerate(vo
  #endif
  
  #define PSC(port) ((struct mpc52xx_psc __iomem *)((port)->membase))
  #endif
  
  #define PSC(port) ((struct mpc52xx_psc __iomem *)((port)->membase))
  #else
  #define uart_console(port)    (0)
  #endif
  #else
  #define uart_console(port)    (0)
  #endif
-@@ -162,7 +165,7 @@
+@@ -162,7 +165,7 @@ mpc52xx_uart_stop_tx(struct uart_port *p
  {
        /* port->lock taken by caller */
        port->read_status_mask &= ~MPC52xx_PSC_IMR_TXRDY;
  {
        /* port->lock taken by caller */
        port->read_status_mask &= ~MPC52xx_PSC_IMR_TXRDY;
  }
  
  static void
  }
  
  static void
-@@ -170,7 +173,7 @@
+@@ -170,7 +173,7 @@ mpc52xx_uart_start_tx(struct uart_port *
  {
        /* port->lock taken by caller */
        port->read_status_mask |= MPC52xx_PSC_IMR_TXRDY;
  {
        /* port->lock taken by caller */
        port->read_status_mask |= MPC52xx_PSC_IMR_TXRDY;
  }
  
  static void
  }
  
  static void
-@@ -184,7 +187,7 @@
+@@ -184,7 +187,7 @@ mpc52xx_uart_send_xchar(struct uart_port
                /* Make sure tx interrupts are on */
                /* Truly necessary ??? They should be anyway */
                port->read_status_mask |= MPC52xx_PSC_IMR_TXRDY;
                /* Make sure tx interrupts are on */
                /* Truly necessary ??? They should be anyway */
                port->read_status_mask |= MPC52xx_PSC_IMR_TXRDY;
        }
  
        spin_unlock_irqrestore(&port->lock, flags);
        }
  
        spin_unlock_irqrestore(&port->lock, flags);
-@@ -195,7 +198,7 @@
+@@ -195,7 +198,7 @@ mpc52xx_uart_stop_rx(struct uart_port *p
  {
        /* port->lock taken by caller */
        port->read_status_mask &= ~MPC52xx_PSC_IMR_RXRDY;
  {
        /* port->lock taken by caller */
        port->read_status_mask &= ~MPC52xx_PSC_IMR_RXRDY;
  }
  
  static void
  }
  
  static void
-@@ -210,10 +213,10 @@
+@@ -210,10 +213,10 @@ mpc52xx_uart_break_ctl(struct uart_port 
        unsigned long flags;
        spin_lock_irqsave(&port->lock, flags);
  
        unsigned long flags;
        spin_lock_irqsave(&port->lock, flags);
  
  
        spin_unlock_irqrestore(&port->lock, flags);
  }
  
        spin_unlock_irqrestore(&port->lock, flags);
  }
-@@ -222,6 +225,7 @@
+@@ -222,6 +225,7 @@ static int
  mpc52xx_uart_startup(struct uart_port *port)
  {
        struct mpc52xx_psc __iomem *psc = PSC(port);
  mpc52xx_uart_startup(struct uart_port *port)
  {
        struct mpc52xx_psc __iomem *psc = PSC(port);
        int ret;
  
        /* Request IRQ */
        int ret;
  
        /* Request IRQ */
-@@ -231,23 +235,23 @@
+@@ -231,23 +235,23 @@ mpc52xx_uart_startup(struct uart_port *p
                return ret;
  
        /* Reset/activate the port, clear and enable interrupts */
                return ret;
  
        /* Reset/activate the port, clear and enable interrupts */
  
        return 0;
  }
  
        return 0;
  }
-@@ -258,12 +262,12 @@
+@@ -258,12 +262,12 @@ mpc52xx_uart_shutdown(struct uart_port *
        struct mpc52xx_psc __iomem *psc = PSC(port);
  
        /* Shut down the port.  Leave TX active if on a console port */
        struct mpc52xx_psc __iomem *psc = PSC(port);
  
        /* Shut down the port.  Leave TX active if on a console port */
  
        /* Release interrupt */
        free_irq(port->irq, port);
  
        /* Release interrupt */
        free_irq(port->irq, port);
-@@ -271,7 +275,7 @@
+@@ -271,7 +275,7 @@ mpc52xx_uart_shutdown(struct uart_port *
  
  static void
  mpc52xx_uart_set_termios(struct uart_port *port, struct ktermios *new,
  
  static void
  mpc52xx_uart_set_termios(struct uart_port *port, struct ktermios *new,
  {
        struct mpc52xx_psc __iomem *psc = PSC(port);
        unsigned long flags;
  {
        struct mpc52xx_psc __iomem *psc = PSC(port);
        unsigned long flags;
-@@ -283,14 +287,14 @@
+@@ -283,14 +287,14 @@ mpc52xx_uart_set_termios(struct uart_por
        mr1 = 0;
  
        switch (new->c_cflag & CSIZE) {
        mr1 = 0;
  
        switch (new->c_cflag & CSIZE) {
        }
  
        if (new->c_cflag & PARENB) {
        }
  
        if (new->c_cflag & PARENB) {
-@@ -332,24 +336,24 @@
+@@ -332,24 +336,24 @@ mpc52xx_uart_set_termios(struct uart_por
                udelay(1);
  
        if (!j)
                udelay(1);
  
        if (!j)
  
        /* We're all set, release the lock */
        spin_unlock_irqrestore(&port->lock, flags);
  
        /* We're all set, release the lock */
        spin_unlock_irqrestore(&port->lock, flags);
-@@ -364,7 +368,8 @@
+@@ -364,7 +368,8 @@ mpc52xx_uart_type(struct uart_port *port
  static void
  mpc52xx_uart_release_port(struct uart_port *port)
  {
  static void
  mpc52xx_uart_release_port(struct uart_port *port)
  {
                iounmap(port->membase);
                port->membase = NULL;
        }
                iounmap(port->membase);
                port->membase = NULL;
        }
-@@ -379,7 +384,7 @@
+@@ -379,7 +384,7 @@ mpc52xx_uart_request_port(struct uart_po
  
        if (port->flags & UPF_IOREMAP) /* Need to remap ? */
                port->membase = ioremap(port->mapbase,
  
        if (port->flags & UPF_IOREMAP) /* Need to remap ? */
                port->membase = ioremap(port->mapbase,
  
        if (!port->membase)
                return -EINVAL;
  
        if (!port->membase)
                return -EINVAL;
-@@ -398,22 +403,22 @@
+@@ -398,22 +403,22 @@ mpc52xx_uart_request_port(struct uart_po
  static void
  mpc52xx_uart_config_port(struct uart_port *port, int flags)
  {
  static void
  mpc52xx_uart_config_port(struct uart_port *port, int flags)
  {
                return -EINVAL;
  
        return 0;
                return -EINVAL;
  
        return 0;
-@@ -455,8 +460,8 @@
+@@ -455,8 +460,8 @@ mpc52xx_uart_int_rx_chars(struct uart_po
        unsigned short status;
  
        /* While we can read, do so ! */
        unsigned short status;
  
        /* While we can read, do so ! */
  
                /* Get the char */
                ch = in_8(&PSC(port)->mpc52xx_psc_buffer_8);
  
                /* Get the char */
                ch = in_8(&PSC(port)->mpc52xx_psc_buffer_8);
-@@ -474,9 +479,9 @@
+@@ -474,9 +479,9 @@ mpc52xx_uart_int_rx_chars(struct uart_po
                flag = TTY_NORMAL;
                port->icount.rx++;
  
                flag = TTY_NORMAL;
                port->icount.rx++;
  
  
                        if (status & MPC52xx_PSC_SR_RB) {
                                flag = TTY_BREAK;
  
                        if (status & MPC52xx_PSC_SR_RB) {
                                flag = TTY_BREAK;
-@@ -487,7 +492,7 @@
+@@ -487,7 +492,7 @@ mpc52xx_uart_int_rx_chars(struct uart_po
                                flag = TTY_FRAME;
  
                        /* Clear error condition */
                                flag = TTY_FRAME;
  
                        /* Clear error condition */
  
                }
                tty_insert_flip_char(tty, ch, flag);
  
                }
                tty_insert_flip_char(tty, ch, flag);
-@@ -568,16 +573,16 @@
+@@ -568,16 +573,16 @@ mpc52xx_uart_int(int irq, void *dev_id)
  
                /* Do we need to receive chars ? */
                /* For this RX interrupts must be on and some chars waiting */
  
                /* Do we need to receive chars ? */
                /* For this RX interrupts must be on and some chars waiting */
                        keepgoing = 0;
  
        } while (keepgoing);
                        keepgoing = 0;
  
        } while (keepgoing);
-@@ -596,7 +601,7 @@
+@@ -596,7 +601,7 @@ mpc52xx_uart_int(int irq, void *dev_id)
  
  static void __init
  mpc52xx_console_get_options(struct uart_port *port,
  
  static void __init
  mpc52xx_console_get_options(struct uart_port *port,
  {
        struct mpc52xx_psc __iomem *psc = PSC(port);
        unsigned char mr1;
  {
        struct mpc52xx_psc __iomem *psc = PSC(port);
        unsigned char mr1;
-@@ -604,7 +609,7 @@
+@@ -604,7 +609,7 @@ mpc52xx_console_get_options(struct uart_
        pr_debug("mpc52xx_console_get_options(port=%p)\n", port);
  
        /* Read the mode registers */
        pr_debug("mpc52xx_console_get_options(port=%p)\n", port);
  
        /* Read the mode registers */
        mr1 = in_8(&psc->mode);
  
        /* CT{U,L}R are write-only ! */
        mr1 = in_8(&psc->mode);
  
        /* CT{U,L}R are write-only ! */
-@@ -616,11 +621,18 @@
+@@ -616,11 +621,18 @@ mpc52xx_console_get_options(struct uart_
  
        /* Parse them */
        switch (mr1 & MPC52xx_PSC_MODE_BITS_MASK) {
  
        /* Parse them */
        switch (mr1 & MPC52xx_PSC_MODE_BITS_MASK) {
        }
  
        if (mr1 & MPC52xx_PSC_MODE_PARNONE)
        }
  
        if (mr1 & MPC52xx_PSC_MODE_PARNONE)
-@@ -657,7 +669,7 @@
+@@ -657,7 +669,7 @@ mpc52xx_console_write(struct console *co
                /* Wait the TX buffer to be empty */
                j = 20000;      /* Maximum wait */
                while (!(in_be16(&psc->mpc52xx_psc_status) &
                /* Wait the TX buffer to be empty */
                j = 20000;      /* Maximum wait */
                while (!(in_be16(&psc->mpc52xx_psc_status) &
                        udelay(1);
        }
  
                        udelay(1);
        }
  
-@@ -730,16 +742,18 @@
+@@ -730,16 +742,18 @@ mpc52xx_console_setup(struct console *co
        }
  
        pr_debug("Console on ttyPSC%x is %s\n",
        }
  
        pr_debug("Console on ttyPSC%x is %s\n",
                pr_debug("Could not find IPB bus frequency!\n");
                return -EINVAL;
        }
                pr_debug("Could not find IPB bus frequency!\n");
                return -EINVAL;
        }
-@@ -757,7 +771,8 @@
+@@ -757,7 +771,8 @@ mpc52xx_console_setup(struct console *co
                return -EINVAL;
  
        pr_debug("mpc52xx-psc uart at %p, mapped to %p, irq=%x, freq=%i\n",
                return -EINVAL;
  
        pr_debug("mpc52xx-psc uart at %p, mapped to %p, irq=%x, freq=%i\n",
  
        /* Setup the port parameters accoding to options */
        if (options)
  
        /* Setup the port parameters accoding to options */
        if (options)
-@@ -766,7 +781,7 @@
+@@ -766,7 +781,7 @@ mpc52xx_console_setup(struct console *co
                mpc52xx_console_get_options(port, &baud, &parity, &bits, &flow);
  
        pr_debug("Setting console parameters: %i %i%c1 flow=%c\n",
                mpc52xx_console_get_options(port, &baud, &parity, &bits, &flow);
  
        pr_debug("Setting console parameters: %i %i%c1 flow=%c\n",
  
        return uart_set_options(port, co, baud, parity, bits, flow);
  }
  
        return uart_set_options(port, co, baud, parity, bits, flow);
  }
-@@ -781,7 +796,7 @@
+@@ -781,7 +796,7 @@ static struct console mpc52xx_console = 
        .device = uart_console_device,
        .setup  = mpc52xx_console_setup,
        .flags  = CON_PRINTBUFFER,
        .device = uart_console_device,
        .setup  = mpc52xx_console_setup,
        .flags  = CON_PRINTBUFFER,
        .data   = &mpc52xx_uart_driver,
  };
  
        .data   = &mpc52xx_uart_driver,
  };
  
-@@ -809,7 +824,6 @@
+@@ -809,7 +824,6 @@ console_initcall(mpc52xx_console_init);
  /* ======================================================================== */
  
  static struct uart_driver mpc52xx_uart_driver = {
  /* ======================================================================== */
  
  static struct uart_driver mpc52xx_uart_driver = {
        .driver_name    = "mpc52xx_psc_uart",
        .dev_name       = "ttyPSC",
        .major          = SERIAL_PSC_MAJOR,
        .driver_name    = "mpc52xx_psc_uart",
        .dev_name       = "ttyPSC",
        .major          = SERIAL_PSC_MAJOR,
-@@ -837,7 +851,7 @@
+@@ -837,7 +851,7 @@ mpc52xx_uart_probe(struct platform_devic
        if (idx < 0 || idx >= MPC52xx_PSC_MAXNUM)
                return -EINVAL;
  
        if (idx < 0 || idx >= MPC52xx_PSC_MAXNUM)
                return -EINVAL;
  
                return -ENODEV;
  
        /* Init the port structure */
                return -ENODEV;
  
        /* Init the port structure */
-@@ -848,13 +862,13 @@
+@@ -848,13 +862,13 @@ mpc52xx_uart_probe(struct platform_devic
        port->fifosize  = 512;
        port->iotype    = UPIO_MEM;
        port->flags     = UPF_BOOT_AUTOCONF |
        port->fifosize  = 512;
        port->iotype    = UPIO_MEM;
        port->flags     = UPF_BOOT_AUTOCONF |
                if (res->flags & IORESOURCE_MEM)
                        port->mapbase = res->start;
                else if (res->flags & IORESOURCE_IRQ)
                if (res->flags & IORESOURCE_MEM)
                        port->mapbase = res->start;
                else if (res->flags & IORESOURCE_IRQ)
-@@ -866,7 +880,7 @@
+@@ -866,7 +880,7 @@ mpc52xx_uart_probe(struct platform_devic
        /* Add the port to the uart sub-system */
        ret = uart_add_one_port(&mpc52xx_uart_driver, port);
        if (!ret)
        /* Add the port to the uart sub-system */
        ret = uart_add_one_port(&mpc52xx_uart_driver, port);
        if (!ret)
  
        return ret;
  }
  
        return ret;
  }
-@@ -917,6 +931,7 @@
+@@ -917,6 +931,7 @@ static struct platform_driver mpc52xx_ua
        .resume         = mpc52xx_uart_resume,
  #endif
        .driver         = {
        .resume         = mpc52xx_uart_resume,
  #endif
        .driver         = {
                .name   = "mpc52xx-psc",
        },
  };
                .name   = "mpc52xx-psc",
        },
  };
-@@ -946,10 +961,11 @@
+@@ -946,10 +961,11 @@ mpc52xx_uart_of_probe(struct of_device *
        if (idx >= MPC52xx_PSC_MAXNUM)
                return -EINVAL;
        pr_debug("Found %s assigned to ttyPSC%x\n",
        if (idx >= MPC52xx_PSC_MAXNUM)
                return -EINVAL;
        pr_debug("Found %s assigned to ttyPSC%x\n",
                dev_dbg(&op->dev, "Could not find IPB bus frequency!\n");
                return -EINVAL;
        }
                dev_dbg(&op->dev, "Could not find IPB bus frequency!\n");
                return -EINVAL;
        }
-@@ -962,22 +978,23 @@
+@@ -962,22 +978,23 @@ mpc52xx_uart_of_probe(struct of_device *
        port->fifosize  = 512;
        port->iotype    = UPIO_MEM;
        port->flags     = UPF_BOOT_AUTOCONF |
        port->fifosize  = 512;
        port->iotype    = UPIO_MEM;
        port->flags     = UPF_BOOT_AUTOCONF |
                printk(KERN_ERR "Could not allocate resources for PSC\n");
                return -EINVAL;
        }
                printk(KERN_ERR "Could not allocate resources for PSC\n");
                return -EINVAL;
        }
-@@ -985,7 +1002,7 @@
+@@ -985,7 +1002,7 @@ mpc52xx_uart_of_probe(struct of_device *
        /* Add the port to the uart sub-system */
        ret = uart_add_one_port(&mpc52xx_uart_driver, port);
        if (!ret)
        /* Add the port to the uart sub-system */
        ret = uart_add_one_port(&mpc52xx_uart_driver, port);
        if (!ret)
  
        return ret;
  }
  
        return ret;
  }
-@@ -1048,6 +1065,7 @@
+@@ -1048,6 +1065,7 @@ mpc52xx_uart_of_assign(struct device_nod
        if (idx < 0)
                return; /* No free slot; abort */
  
        if (idx < 0)
                return; /* No free slot; abort */
  
        /* If the slot is already occupied, then swap slots */
        if (mpc52xx_uart_nodes[idx] && (free_idx != -1))
                mpc52xx_uart_nodes[free_idx] = mpc52xx_uart_nodes[idx];
        /* If the slot is already occupied, then swap slots */
        if (mpc52xx_uart_nodes[idx] && (free_idx != -1))
                mpc52xx_uart_nodes[free_idx] = mpc52xx_uart_nodes[idx];
-@@ -1057,7 +1075,7 @@
+@@ -1057,7 +1075,7 @@ mpc52xx_uart_of_assign(struct device_nod
  static void
  mpc52xx_uart_of_enumerate(void)
  {
  static void
  mpc52xx_uart_of_enumerate(void)
  {
        struct device_node *np;
        const unsigned int *devno;
        int i;
        struct device_node *np;
        const unsigned int *devno;
        int i;
-@@ -1071,7 +1089,7 @@
+@@ -1071,7 +1089,7 @@ mpc52xx_uart_of_enumerate(void)
  
                /* Is a particular device number requested? */
                devno = of_get_property(np, "port-number", NULL);
  
                /* Is a particular device number requested? */
                devno = of_get_property(np, "port-number", NULL);
        }
  
        enum_done = 1;
        }
  
        enum_done = 1;
-@@ -1079,15 +1097,13 @@
+@@ -1079,15 +1097,13 @@ mpc52xx_uart_of_enumerate(void)
        for (i = 0; i < MPC52xx_PSC_MAXNUM; i++) {
                if (mpc52xx_uart_nodes[i])
                        pr_debug("%s assigned to ttyPSC%x\n",
        for (i = 0; i < MPC52xx_PSC_MAXNUM; i++) {
                if (mpc52xx_uart_nodes[i])
                        pr_debug("%s assigned to ttyPSC%x\n",
        .match_table    = mpc52xx_uart_of_match,
        .probe          = mpc52xx_uart_of_probe,
        .remove         = mpc52xx_uart_of_remove,
        .match_table    = mpc52xx_uart_of_match,
        .probe          = mpc52xx_uart_of_probe,
        .remove         = mpc52xx_uart_of_remove,
-@@ -1113,7 +1129,8 @@
+@@ -1113,7 +1129,8 @@ mpc52xx_uart_init(void)
  
        printk(KERN_INFO "Serial: MPC52xx PSC UART driver\n");
  
  
        printk(KERN_INFO "Serial: MPC52xx PSC UART driver\n");
  
                return ret;
 --- a/drivers/serial/uartlite.c
 +++ b/drivers/serial/uartlite.c
                return ret;
 --- a/drivers/serial/uartlite.c
 +++ b/drivers/serial/uartlite.c
-@@ -539,7 +539,7 @@
+@@ -539,7 +539,7 @@ static int __devinit ulite_assign(struct
   *
   * @dev: pointer to device structure
   */
   *
   * @dev: pointer to device structure
   */
  {
        struct uart_port *port = dev_get_drvdata(dev);
        int rc = 0;
  {
        struct uart_port *port = dev_get_drvdata(dev);
        int rc = 0;
-@@ -572,14 +572,14 @@
+@@ -572,14 +572,14 @@ static int __devinit ulite_probe(struct 
        return ulite_assign(&pdev->dev, pdev->id, res->start, res2->start);
  }
  
        return ulite_assign(&pdev->dev, pdev->id, res->start, res2->start);
  }
  
 +
 --- a/drivers/spi/mpc52xx_psc_spi.c
 +++ b/drivers/spi/mpc52xx_psc_spi.c
 +
 --- a/drivers/spi/mpc52xx_psc_spi.c
 +++ b/drivers/spi/mpc52xx_psc_spi.c
-@@ -330,6 +330,7 @@
+@@ -330,6 +330,7 @@ static void mpc52xx_psc_spi_cleanup(stru
  
  static int mpc52xx_psc_spi_port_config(int psc_id, struct mpc52xx_psc_spi *mps)
  {
  
  static int mpc52xx_psc_spi_port_config(int psc_id, struct mpc52xx_psc_spi *mps)
  {
        struct mpc52xx_cdm __iomem *cdm;
        struct mpc52xx_gpio __iomem *gpio;
        struct mpc52xx_psc __iomem *psc = mps->psc;
        struct mpc52xx_cdm __iomem *cdm;
        struct mpc52xx_gpio __iomem *gpio;
        struct mpc52xx_psc __iomem *psc = mps->psc;
-@@ -338,8 +339,12 @@
+@@ -338,8 +339,12 @@ static int mpc52xx_psc_spi_port_config(i
        int ret = 0;
  
  #if defined(CONFIG_PPC_MERGE)
        int ret = 0;
  
  #if defined(CONFIG_PPC_MERGE)
        gpio = ioremap(MPC52xx_PA(MPC52xx_GPIO_OFFSET), MPC52xx_GPIO_SIZE);
 --- a/fs/openpromfs/inode.c
 +++ b/fs/openpromfs/inode.c
        gpio = ioremap(MPC52xx_PA(MPC52xx_GPIO_OFFSET), MPC52xx_GPIO_SIZE);
 --- a/fs/openpromfs/inode.c
 +++ b/fs/openpromfs/inode.c
-@@ -131,7 +131,7 @@
+@@ -131,7 +131,7 @@ static void property_stop(struct seq_fil
        /* Nothing to do */
  }
  
        /* Nothing to do */
  }
  
        .stop           = property_stop,
 --- a/include/asm-powerpc/8xx_immap.h
 +++ b/include/asm-powerpc/8xx_immap.h
        .stop           = property_stop,
 --- a/include/asm-powerpc/8xx_immap.h
 +++ b/include/asm-powerpc/8xx_immap.h
-@@ -123,7 +123,7 @@
+@@ -123,7 +123,7 @@ typedef struct     mem_ctlr {
  #define OR_G5LA               0x00000400      /* Output #GPL5 on #GPL_A5              */
  #define OR_G5LS               0x00000200      /* Drive #GPL high on falling edge of...*/
  #define OR_BI         0x00000100      /* Burst inhibit                        */
  #define OR_G5LA               0x00000400      /* Output #GPL5 on #GPL_A5              */
  #define OR_G5LS               0x00000200      /* Drive #GPL high on falling edge of...*/
  #define OR_BI         0x00000100      /* Burst inhibit                        */
  #define OR_SCY_2_CLK  0x00000020      /* 2 clock cycles wait states           */
 --- a/include/asm-powerpc/commproc.h
 +++ b/include/asm-powerpc/commproc.h
  #define OR_SCY_2_CLK  0x00000020      /* 2 clock cycles wait states           */
 --- a/include/asm-powerpc/commproc.h
 +++ b/include/asm-powerpc/commproc.h
-@@ -693,7 +693,7 @@
+@@ -693,7 +693,7 @@ typedef struct risc_timer_pram {
  #define       CICR_SCC_SCC3           ((uint)0x00200000)      /* SCC3 @ SCCc */
  #define       CICR_SCB_SCC2           ((uint)0x00040000)      /* SCC2 @ SCCb */
  #define       CICR_SCA_SCC1           ((uint)0x00000000)      /* SCC1 @ SCCa */
  #define       CICR_SCC_SCC3           ((uint)0x00200000)      /* SCC3 @ SCCc */
  #define       CICR_SCB_SCC2           ((uint)0x00040000)      /* SCC2 @ SCCb */
  #define       CICR_SCA_SCC1           ((uint)0x00000000)      /* SCC1 @ SCCa */
  #define CICR_SPS              ((uint)0x00000001)      /* SCC Spread */
 --- a/include/asm-powerpc/cpm.h
 +++ b/include/asm-powerpc/cpm.h
  #define CICR_SPS              ((uint)0x00000001)      /* SCC Spread */
 --- a/include/asm-powerpc/cpm.h
 +++ b/include/asm-powerpc/cpm.h
-@@ -10,5 +10,6 @@
+@@ -10,5 +10,6 @@ int cpm_muram_free(unsigned long offset)
  unsigned long cpm_muram_alloc_fixed(unsigned long offset, unsigned long size);
  void __iomem *cpm_muram_addr(unsigned long offset);
  dma_addr_t cpm_muram_dma(void __iomem *addr);
  unsigned long cpm_muram_alloc_fixed(unsigned long offset, unsigned long size);
  void __iomem *cpm_muram_addr(unsigned long offset);
  dma_addr_t cpm_muram_dma(void __iomem *addr);
  #endif
 --- a/include/asm-powerpc/cputable.h
 +++ b/include/asm-powerpc/cputable.h
  #endif
 --- a/include/asm-powerpc/cputable.h
 +++ b/include/asm-powerpc/cputable.h
-@@ -57,6 +57,14 @@
+@@ -57,6 +57,14 @@ enum powerpc_pmc_type {
        PPC_PMC_PA6T = 2,
  };
  
        PPC_PMC_PA6T = 2,
  };
  
  /* NOTE WELL: Update identify_cpu() if fields are added or removed! */
  struct cpu_spec {
        /* CPU is matched via (PVR & pvr_mask) == pvr_value */
  /* NOTE WELL: Update identify_cpu() if fields are added or removed! */
  struct cpu_spec {
        /* CPU is matched via (PVR & pvr_mask) == pvr_value */
-@@ -97,6 +105,11 @@
+@@ -97,6 +105,11 @@ struct cpu_spec {
  
        /* Name of processor class, for the ELF AT_PLATFORM entry */
        char            *platform;
  
        /* Name of processor class, for the ELF AT_PLATFORM entry */
        char            *platform;
  typedef struct {
        unsigned int base;
  } dcr_host_t;
  typedef struct {
        unsigned int base;
  } dcr_host_t;
-@@ -55,20 +57,28 @@
+@@ -55,20 +57,28 @@ do {                                                               \
  } while (0)
  
  /* R/W of indirect DCRs make use of standard naming conventions for DCRs */
  } while (0)
  
  /* R/W of indirect DCRs make use of standard naming conventions for DCRs */
 +#endif /* __DCR_REGS_H__ */
 --- a/include/asm-powerpc/dma-mapping.h
 +++ b/include/asm-powerpc/dma-mapping.h
 +#endif /* __DCR_REGS_H__ */
 --- a/include/asm-powerpc/dma-mapping.h
 +++ b/include/asm-powerpc/dma-mapping.h
-@@ -87,6 +87,9 @@
+@@ -87,6 +87,9 @@ static inline int dma_supported(struct d
        return dma_ops->dma_supported(dev, mask);
  }
  
        return dma_ops->dma_supported(dev, mask);
  }
  
  static inline int dma_set_mask(struct device *dev, u64 dma_mask)
  {
        struct dma_mapping_ops *dma_ops = get_dma_ops(dev);
  static inline int dma_set_mask(struct device *dev, u64 dma_mask)
  {
        struct dma_mapping_ops *dma_ops = get_dma_ops(dev);
-@@ -186,8 +189,6 @@
+@@ -186,8 +189,6 @@ static inline void dma_unmap_sg(struct d
  extern struct dma_mapping_ops dma_iommu_ops;
  extern struct dma_mapping_ops dma_direct_ops;
  
  extern struct dma_mapping_ops dma_iommu_ops;
  extern struct dma_mapping_ops dma_direct_ops;
  
  #define dma_supported(dev, mask)      (1)
 --- a/include/asm-powerpc/firmware.h
 +++ b/include/asm-powerpc/firmware.h
  #define dma_supported(dev, mask)      (1)
 --- a/include/asm-powerpc/firmware.h
 +++ b/include/asm-powerpc/firmware.h
-@@ -64,7 +64,7 @@
+@@ -64,7 +64,7 @@ enum {
        FW_FEATURE_PS3_POSSIBLE = FW_FEATURE_LPAR | FW_FEATURE_PS3_LV1,
        FW_FEATURE_PS3_ALWAYS = FW_FEATURE_LPAR | FW_FEATURE_PS3_LV1,
        FW_FEATURE_CELLEB_POSSIBLE = FW_FEATURE_LPAR | FW_FEATURE_BEAT,
        FW_FEATURE_PS3_POSSIBLE = FW_FEATURE_LPAR | FW_FEATURE_PS3_LV1,
        FW_FEATURE_PS3_ALWAYS = FW_FEATURE_LPAR | FW_FEATURE_PS3_LV1,
        FW_FEATURE_CELLEB_POSSIBLE = FW_FEATURE_LPAR | FW_FEATURE_BEAT,
        FW_FEATURE_POSSIBLE =
 --- a/include/asm-powerpc/immap_86xx.h
 +++ b/include/asm-powerpc/immap_86xx.h
        FW_FEATURE_POSSIBLE =
 --- a/include/asm-powerpc/immap_86xx.h
 +++ b/include/asm-powerpc/immap_86xx.h
-@@ -89,14 +89,14 @@
+@@ -89,14 +89,14 @@ struct ccsr_guts {
   * them.
   *
   * guts: Pointer to GUTS structure
   * them.
   *
   * guts: Pointer to GUTS structure
  
        clrsetbits_be32(&guts->dmacr, 3 << shift, device << shift);
  }
  
        clrsetbits_be32(&guts->dmacr, 3 << shift, device << shift);
  }
-@@ -118,6 +118,27 @@
+@@ -118,6 +118,27 @@ static inline void guts_set_dmacr(struct
  #define CCSR_GUTS_PMUXCR_DMA1_0               0x00000002
  #define CCSR_GUTS_PMUXCR_DMA1_3               0x00000001
  
  #define CCSR_GUTS_PMUXCR_DMA1_0               0x00000002
  #define CCSR_GUTS_PMUXCR_DMA1_3               0x00000001
  
  #define CCSR_GUTS_CLKDVDR_PXCKINV     0x10000000
 --- a/include/asm-powerpc/immap_qe.h
 +++ b/include/asm-powerpc/immap_qe.h
  #define CCSR_GUTS_CLKDVDR_PXCKINV     0x10000000
 --- a/include/asm-powerpc/immap_qe.h
 +++ b/include/asm-powerpc/immap_qe.h
-@@ -393,9 +393,39 @@
+@@ -393,9 +393,39 @@ struct dbg {
        u8      res2[0x48];
  } __attribute__ ((packed));
  
        u8      res2[0x48];
  } __attribute__ ((packed));
  
  struct qe_immap {
 --- a/include/asm-powerpc/io.h
 +++ b/include/asm-powerpc/io.h
  struct qe_immap {
 --- a/include/asm-powerpc/io.h
 +++ b/include/asm-powerpc/io.h
-@@ -50,15 +50,16 @@
+@@ -50,15 +50,16 @@ extern int check_legacy_ioport(unsigned 
  #define PCI_DRAM_OFFSET       pci_dram_offset
  #else
  #define _IO_BASE      pci_io_base
  #define PCI_DRAM_OFFSET       pci_dram_offset
  #else
  #define _IO_BASE      pci_io_base
  #endif
 --- a/include/asm-powerpc/iommu.h
 +++ b/include/asm-powerpc/iommu.h
  #endif
 --- a/include/asm-powerpc/iommu.h
 +++ b/include/asm-powerpc/iommu.h
-@@ -69,10 +69,9 @@
+@@ -69,10 +69,9 @@ struct iommu_table {
  };
  
  struct scatterlist;
  };
  
  struct scatterlist;
  #define IPIC_SICFR    0x00    /* System Global Interrupt Configuration Register */
 --- a/include/asm-powerpc/iseries/hv_lp_event.h
 +++ b/include/asm-powerpc/iseries/hv_lp_event.h
  #define IPIC_SICFR    0x00    /* System Global Interrupt Configuration Register */
 --- a/include/asm-powerpc/iseries/hv_lp_event.h
 +++ b/include/asm-powerpc/iseries/hv_lp_event.h
-@@ -78,7 +78,7 @@
+@@ -78,7 +78,7 @@ extern int HvLpEvent_openPath(HvLpEvent_
  
  /*
   * Close an Lp Event Path for a type and partition
  
  /*
   * Close an Lp Event Path for a type and partition
  
 --- a/include/asm-powerpc/kexec.h
 +++ b/include/asm-powerpc/kexec.h
  
 --- a/include/asm-powerpc/kexec.h
 +++ b/include/asm-powerpc/kexec.h
-@@ -123,6 +123,9 @@
+@@ -123,6 +123,9 @@ struct pt_regs;
  extern void default_machine_kexec(struct kimage *image);
  extern int default_machine_kexec_prepare(struct kimage *image);
  extern void default_machine_crash_shutdown(struct pt_regs *regs);
  extern void default_machine_kexec(struct kimage *image);
  extern int default_machine_kexec_prepare(struct kimage *image);
  extern void default_machine_crash_shutdown(struct pt_regs *regs);
  extern void crash_kexec_secondary(struct pt_regs *regs);
 --- a/include/asm-powerpc/lmb.h
 +++ b/include/asm-powerpc/lmb.h
  extern void crash_kexec_secondary(struct pt_regs *regs);
 --- a/include/asm-powerpc/lmb.h
 +++ b/include/asm-powerpc/lmb.h
-@@ -51,6 +51,7 @@
+@@ -51,6 +51,7 @@ extern unsigned long __init __lmb_alloc_
  extern unsigned long __init lmb_phys_mem_size(void);
  extern unsigned long __init lmb_end_of_DRAM(void);
  extern void __init lmb_enforce_memory_limit(unsigned long memory_limit);
  extern unsigned long __init lmb_phys_mem_size(void);
  extern unsigned long __init lmb_end_of_DRAM(void);
  extern void __init lmb_enforce_memory_limit(unsigned long memory_limit);
  
 --- a/include/asm-powerpc/machdep.h
 +++ b/include/asm-powerpc/machdep.h
  
 --- a/include/asm-powerpc/machdep.h
 +++ b/include/asm-powerpc/machdep.h
-@@ -204,6 +204,13 @@
+@@ -204,6 +204,13 @@ struct machdep_calls {
        /*
         * optional PCI "hooks"
         */
        /*
         * optional PCI "hooks"
         */
  
        /* Called after PPC generic resource fixup to perform
           machine specific fixups */
  
        /* Called after PPC generic resource fixup to perform
           machine specific fixups */
-@@ -212,18 +219,9 @@
+@@ -212,18 +219,9 @@ struct machdep_calls {
        /* Called for each PCI bus in the system when it's probed */
        void (*pcibios_fixup_bus)(struct pci_bus *);
  
        /* Called for each PCI bus in the system when it's probed */
        void (*pcibios_fixup_bus)(struct pci_bus *);
  
  
        /* Called to shutdown machine specific hardware not already controlled
         * by other drivers.
  
        /* Called to shutdown machine specific hardware not already controlled
         * by other drivers.
-@@ -253,6 +251,16 @@
+@@ -253,6 +251,16 @@ struct machdep_calls {
         */
        void (*machine_kexec)(struct kimage *image);
  #endif /* CONFIG_KEXEC */
         */
        void (*machine_kexec)(struct kimage *image);
  #endif /* CONFIG_KEXEC */
  };
  
  extern void power4_idle(void);
  };
  
  extern void power4_idle(void);
-@@ -326,5 +334,31 @@
+@@ -326,5 +334,31 @@ static inline void log_error(char *buf, 
                ppc_md.log_error(buf, err_type, fatal);
  }
  
                ppc_md.log_error(buf, err_type, fatal);
  }
  
  #endif /* _ASM_POWERPC_MACHDEP_H */
 --- a/include/asm-powerpc/mmu-hash64.h
 +++ b/include/asm-powerpc/mmu-hash64.h
  #endif /* _ASM_POWERPC_MACHDEP_H */
 --- a/include/asm-powerpc/mmu-hash64.h
 +++ b/include/asm-powerpc/mmu-hash64.h
-@@ -80,7 +80,7 @@
+@@ -80,7 +80,7 @@ extern char initial_stab[];
  #define HPTE_V_AVPN_SHIFT     7
  #define HPTE_V_AVPN           ASM_CONST(0x3fffffffffffff80)
  #define HPTE_V_AVPN_VAL(x)    (((x) & HPTE_V_AVPN) >> HPTE_V_AVPN_SHIFT)
  #define HPTE_V_AVPN_SHIFT     7
  #define HPTE_V_AVPN           ASM_CONST(0x3fffffffffffff80)
  #define HPTE_V_AVPN_VAL(x)    (((x) & HPTE_V_AVPN) >> HPTE_V_AVPN_SHIFT)
  #define HPTE_V_BOLTED         ASM_CONST(0x0000000000000010)
  #define HPTE_V_LOCK           ASM_CONST(0x0000000000000008)
  #define HPTE_V_LARGE          ASM_CONST(0x0000000000000004)
  #define HPTE_V_BOLTED         ASM_CONST(0x0000000000000010)
  #define HPTE_V_LOCK           ASM_CONST(0x0000000000000008)
  #define HPTE_V_LARGE          ASM_CONST(0x0000000000000004)
-@@ -180,6 +180,7 @@
+@@ -180,6 +180,7 @@ extern int mmu_vmalloc_psize;
  extern int mmu_io_psize;
  extern int mmu_kernel_ssize;
  extern int mmu_highuser_ssize;
  extern int mmu_io_psize;
  extern int mmu_kernel_ssize;
  extern int mmu_highuser_ssize;
  
  /*
   * If the processor supports 64k normal pages but not 64k cache
  
  /*
   * If the processor supports 64k normal pages but not 64k cache
-@@ -277,6 +278,7 @@
+@@ -277,6 +278,7 @@ extern int hash_huge_page(struct mm_stru
  extern int htab_bolt_mapping(unsigned long vstart, unsigned long vend,
                             unsigned long pstart, unsigned long mode,
                             int psize, int ssize);
  extern int htab_bolt_mapping(unsigned long vstart, unsigned long vend,
                             unsigned long pstart, unsigned long mode,
                             int psize, int ssize);
  extern void htab_initialize_secondary(void);
 --- a/include/asm-powerpc/mpc52xx.h
 +++ b/include/asm-powerpc/mpc52xx.h
  extern void htab_initialize_secondary(void);
 --- a/include/asm-powerpc/mpc52xx.h
 +++ b/include/asm-powerpc/mpc52xx.h
-@@ -248,8 +248,6 @@
+@@ -248,8 +248,6 @@ struct mpc52xx_cdm {
  
  #ifndef __ASSEMBLY__
  
  
  #ifndef __ASSEMBLY__
  
  extern unsigned int mpc52xx_find_ipb_freq(struct device_node *node);
  extern void mpc5200_setup_xlb_arbiter(void);
  extern void mpc52xx_declare_of_platform_devices(void);
  extern unsigned int mpc52xx_find_ipb_freq(struct device_node *node);
  extern void mpc5200_setup_xlb_arbiter(void);
  extern void mpc52xx_declare_of_platform_devices(void);
-@@ -257,7 +255,12 @@
+@@ -257,7 +255,12 @@ extern void mpc52xx_declare_of_platform_
  extern void mpc52xx_init_irq(void);
  extern unsigned int mpc52xx_get_irq(void);
  
  extern void mpc52xx_init_irq(void);
  extern unsigned int mpc52xx_get_irq(void);
  
  extern void mpc52xx_restart(char *cmd);
 --- a/include/asm-powerpc/mpc52xx_psc.h
 +++ b/include/asm-powerpc/mpc52xx_psc.h
  extern void mpc52xx_restart(char *cmd);
 --- a/include/asm-powerpc/mpc52xx_psc.h
 +++ b/include/asm-powerpc/mpc52xx_psc.h
-@@ -153,6 +153,9 @@
+@@ -153,6 +153,9 @@ struct mpc52xx_psc {
        u8              reserved16[3];
        u8              irfdr;          /* PSC + 0x54 */
        u8              reserved17[3];
        u8              reserved16[3];
        u8              irfdr;          /* PSC + 0x54 */
        u8              reserved17[3];
  
  /*
   * Per-source registers
  
  /*
   * Per-source registers
-@@ -183,6 +187,7 @@
+@@ -183,6 +187,7 @@ enum {
        MPIC_IDX_CPU_WHOAMI,
        MPIC_IDX_CPU_INTACK,
        MPIC_IDX_CPU_EOI,
        MPIC_IDX_CPU_WHOAMI,
        MPIC_IDX_CPU_INTACK,
        MPIC_IDX_CPU_EOI,
  
        MPIC_IDX_IRQ_BASE,
        MPIC_IDX_IRQ_STRIDE,
  
        MPIC_IDX_IRQ_BASE,
        MPIC_IDX_IRQ_STRIDE,
-@@ -344,6 +349,10 @@
+@@ -344,6 +349,10 @@ struct mpic
  #define MPIC_USES_DCR                 0x00000080
  /* MPIC has 11-bit vector fields (or larger) */
  #define MPIC_LARGE_VECTORS            0x00000100
  #define MPIC_USES_DCR                 0x00000080
  /* MPIC has 11-bit vector fields (or larger) */
  #define MPIC_LARGE_VECTORS            0x00000100
  
  /* MPIC HW modification ID */
  #define MPIC_REGSET_MASK              0xf0000000
  
  /* MPIC HW modification ID */
  #define MPIC_REGSET_MASK              0xf0000000
-@@ -447,10 +456,19 @@
+@@ -447,10 +456,19 @@ extern void mpic_send_ipi(unsigned int i
  /* Send a message (IPI) to a given target (cpu number or MSG_*) */
  void smp_mpic_message_pass(int target, int msg);
  
  /* Send a message (IPI) to a given target (cpu number or MSG_*) */
  void smp_mpic_message_pass(int target, int msg);
  
  #define NVRW_CNT 0x20
  #define NVRAM_HEADER_LEN 16 /* sizeof(struct nvram_header) */
  #define NVRAM_BLOCK_LEN 16
  #define NVRW_CNT 0x20
  #define NVRAM_HEADER_LEN 16 /* sizeof(struct nvram_header) */
  #define NVRAM_BLOCK_LEN 16
-@@ -71,7 +73,16 @@
+@@ -71,7 +73,16 @@ extern int nvram_clear_error_log(void);
  extern struct nvram_partition *nvram_find_partition(int sig, const char *name);
  
  extern int pSeries_nvram_init(void);
  extern struct nvram_partition *nvram_find_partition(int sig, const char *name);
  
  extern int pSeries_nvram_init(void);
  
  /* Platform devices and busses creation */
  extern struct of_device *of_platform_device_create(struct device_node *np,
  
  /* Platform devices and busses creation */
  extern struct of_device *of_platform_device_create(struct device_node *np,
-@@ -26,9 +32,11 @@
+@@ -26,9 +32,11 @@ extern struct of_device *of_platform_dev
  #define OF_NO_DEEP_PROBE ((struct of_device_id *)-1)
  
  extern int of_platform_bus_probe(struct device_node *root,
  #define OF_NO_DEEP_PROBE ((struct of_device_id *)-1)
  
  extern int of_platform_bus_probe(struct device_node *root,
  
  /*
   * Structure of a PCI controller (host bridge)
  
  /*
   * Structure of a PCI controller (host bridge)
-@@ -17,26 +44,41 @@
+@@ -17,26 +44,41 @@ struct pci_controller;
  struct pci_controller {
        struct pci_bus *bus;
        char is_dynamic;
  struct pci_controller {
        struct pci_bus *bus;
        char is_dynamic;
        /*
         * Used for variants of PCI indirect handling and possible quirks:
         *  SET_CFG_TYPE - used on 4xx or any PHB that does explicit type0/1
        /*
         * Used for variants of PCI indirect handling and possible quirks:
         *  SET_CFG_TYPE - used on 4xx or any PHB that does explicit type0/1
-@@ -51,21 +93,30 @@
+@@ -51,21 +93,30 @@ struct pci_controller {
         *   set.
         *  BIG_ENDIAN - cfg_addr is a big endian register
         */
         *   set.
         *  BIG_ENDIAN - cfg_addr is a big endian register
         */
  static inline struct pci_controller *pci_bus_to_host(struct pci_bus *bus)
  {
        return bus->sysdata;
  static inline struct pci_controller *pci_bus_to_host(struct pci_bus *bus)
  {
        return bus->sysdata;
-@@ -81,18 +132,18 @@
+@@ -81,18 +132,18 @@ static inline int isa_vaddr_is_ioport(vo
  
  /* These are used for config access before all the PCI probing
     has been done. */
  
  /* These are used for config access before all the PCI probing
     has been done. */
  
  extern int early_find_capability(struct pci_controller *hose, int bus,
                                 int dev_fn, int cap);
  
  extern int early_find_capability(struct pci_controller *hose, int bus,
                                 int dev_fn, int cap);
-@@ -101,87 +152,33 @@
+@@ -101,87 +152,33 @@ extern void setup_indirect_pci(struct pc
                               resource_size_t cfg_addr,
                               resource_size_t cfg_data, u32 flags);
  extern void setup_grackle(struct pci_controller *hose);
                               resource_size_t cfg_addr,
                               resource_size_t cfg_data, u32 flags);
  extern void setup_grackle(struct pci_controller *hose);
        u32     config_space[16];       /* saved PCI config space */
  #endif
  };
        u32     config_space[16];       /* saved PCI config space */
  #endif
  };
-@@ -189,7 +186,7 @@
+@@ -189,7 +186,7 @@ struct pci_dn {
  /* Get the pointer to a device_node's pci_dn */
  #define PCI_DN(dn)    ((struct pci_dn *) (dn)->data)
  
  /* Get the pointer to a device_node's pci_dn */
  #define PCI_DN(dn)    ((struct pci_dn *) (dn)->data)
  
  
  /* Get a device_node from a pci_dev.  This code must be fast except
   * in the case where the sysdata is incorrect and needs to be fixed
  
  /* Get a device_node from a pci_dev.  This code must be fast except
   * in the case where the sysdata is incorrect and needs to be fixed
-@@ -227,14 +224,14 @@
+@@ -227,14 +224,14 @@ static inline struct device_node *pci_bu
  }
  
  /** Find the bus corresponding to the indicated device node */
  }
  
  /** Find the bus corresponding to the indicated device node */
  
  extern int pcibios_remove_root_bus(struct pci_controller *phb);
  
  
  extern int pcibios_remove_root_bus(struct pci_controller *phb);
  
-@@ -270,20 +267,18 @@
+@@ -270,20 +267,18 @@ extern int pcibios_map_io_space(struct p
  #define PHB_SET_NODE(PHB, NODE)               ((PHB)->node = -1)
  #endif
  
  #define PHB_SET_NODE(PHB, NODE)               ((PHB)->node = -1)
  #endif
  
  extern void pcibios_free_controller(struct pci_controller *phb);
  
  #ifdef CONFIG_PCI
  extern void pcibios_free_controller(struct pci_controller *phb);
  
  #ifdef CONFIG_PCI
-@@ -298,9 +293,7 @@
+@@ -298,9 +293,7 @@ static inline int pcibios_vaddr_is_iopor
  {
        return 0;
  }
  {
        return 0;
  }
 +#endif        /* _ASM_POWERPC_PCI_BRIDGE_H */
 --- a/include/asm-powerpc/pci.h
 +++ b/include/asm-powerpc/pci.h
 +#endif        /* _ASM_POWERPC_PCI_BRIDGE_H */
 --- a/include/asm-powerpc/pci.h
 +++ b/include/asm-powerpc/pci.h
-@@ -36,11 +36,10 @@
+@@ -36,11 +36,10 @@ struct pci_dev;
  
  /*
   * Set this to 1 if you want the kernel to re-assign all PCI
  
  /*
   * Set this to 1 if you want the kernel to re-assign all PCI
  #define pcibios_scan_all_fns(a, b)    0
  
  static inline void pcibios_set_master(struct pci_dev *dev)
  #define pcibios_scan_all_fns(a, b)    0
  
  static inline void pcibios_set_master(struct pci_dev *dev)
-@@ -95,9 +94,6 @@
+@@ -95,9 +94,6 @@ static inline void pci_dma_burst_advice(
  #define get_pci_dma_ops()     NULL
  #endif
  
  #define get_pci_dma_ops()     NULL
  #endif
  
  #else /* 32-bit */
  
  #ifdef CONFIG_PCI
  #else /* 32-bit */
  
  #ifdef CONFIG_PCI
-@@ -109,17 +105,14 @@
+@@ -109,17 +105,14 @@ static inline void pci_dma_burst_advice(
        *strategy_parameter = ~0UL;
  }
  #endif
        *strategy_parameter = ~0UL;
  }
  #endif
  struct vm_area_struct;
  /* Map a range of PCI memory or I/O space for a device into user space */
  int pci_mmap_page_range(struct pci_dev *pdev, struct vm_area_struct *vma,
  struct vm_area_struct;
  /* Map a range of PCI memory or I/O space for a device into user space */
  int pci_mmap_page_range(struct pci_dev *pdev, struct vm_area_struct *vma,
-@@ -199,13 +192,12 @@
+@@ -199,13 +192,12 @@ static inline struct resource *pcibios_s
        return root;
  }
  
        return root;
  }
  
  extern struct pci_controller *init_phb_dynamic(struct device_node *dn);
  
  extern struct pci_dev *of_create_pci_dev(struct device_node *node,
  extern struct pci_controller *init_phb_dynamic(struct device_node *dn);
  
  extern struct pci_dev *of_create_pci_dev(struct device_node *node,
-@@ -229,5 +221,8 @@
+@@ -229,5 +221,8 @@ extern void pci_resource_to_user(const s
                                 const struct resource *rsrc,
                                 resource_size_t *start, resource_size_t *end);
  
                                 const struct resource *rsrc,
                                 resource_size_t *start, resource_size_t *end);
  
  #endif /* __ASM_POWERPC_PCI_H */
 --- a/include/asm-powerpc/ppc-pci.h
 +++ b/include/asm-powerpc/ppc-pci.h
  #endif /* __ASM_POWERPC_PCI_H */
 --- a/include/asm-powerpc/ppc-pci.h
 +++ b/include/asm-powerpc/ppc-pci.h
-@@ -22,7 +22,6 @@
+@@ -22,7 +22,6 @@ extern void pci_setup_phb_io_dynamic(str
  
  
  extern struct list_head hose_list;
  
  
  extern struct list_head hose_list;
  
  extern void find_and_init_phbs(void);
  
  
  extern void find_and_init_phbs(void);
  
-@@ -47,9 +46,6 @@
+@@ -47,9 +46,6 @@ extern void init_pci_config_tokens (void
  extern unsigned long get_phb_buid (struct device_node *);
  extern int rtas_setup_phb(struct pci_controller *phb);
  
  extern unsigned long get_phb_buid (struct device_node *);
  extern int rtas_setup_phb(struct pci_controller *phb);
  
  /* ---- EEH internal-use-only related routines ---- */
 --- a/include/asm-powerpc/prom.h
 +++ b/include/asm-powerpc/prom.h
  /* ---- EEH internal-use-only related routines ---- */
 --- a/include/asm-powerpc/prom.h
 +++ b/include/asm-powerpc/prom.h
-@@ -202,6 +202,10 @@
+@@ -202,6 +202,10 @@ static inline unsigned long of_read_ulon
   */
  extern u64 of_translate_address(struct device_node *np, const u32 *addr);
  
   */
  extern u64 of_translate_address(struct device_node *np, const u32 *addr);
  
  
  union ps3_firmware_version {
        u64 raw;
  
  union ps3_firmware_version {
        u64 raw;
-@@ -317,6 +318,7 @@
+@@ -317,6 +318,7 @@ enum ps3_match_id {
        PS3_MATCH_ID_STOR_FLASH     = 8,
        PS3_MATCH_ID_SOUND          = 9,
        PS3_MATCH_ID_GRAPHICS       = 10,
        PS3_MATCH_ID_STOR_FLASH     = 8,
        PS3_MATCH_ID_SOUND          = 9,
        PS3_MATCH_ID_GRAPHICS       = 10,
  };
  
  #define PS3_MODULE_ALIAS_EHCI           "ps3:1"
  };
  
  #define PS3_MODULE_ALIAS_EHCI           "ps3:1"
-@@ -329,11 +331,13 @@
+@@ -329,11 +331,13 @@ enum ps3_match_id {
  #define PS3_MODULE_ALIAS_STOR_FLASH     "ps3:8"
  #define PS3_MODULE_ALIAS_SOUND          "ps3:9"
  #define PS3_MODULE_ALIAS_GRAPHICS       "ps3:10"
  #define PS3_MODULE_ALIAS_STOR_FLASH     "ps3:8"
  #define PS3_MODULE_ALIAS_SOUND          "ps3:9"
  #define PS3_MODULE_ALIAS_GRAPHICS       "ps3:10"
  };
  
  /**
  };
  
  /**
-@@ -344,12 +348,17 @@
+@@ -344,12 +348,17 @@ struct ps3_system_bus_device {
        enum ps3_match_id match_id;
        enum ps3_system_bus_device_type dev_type;
  
        enum ps3_match_id match_id;
        enum ps3_system_bus_device_type dev_type;
  
  
  /*    struct iommu_table *iommu_table; -- waiting for BenH's cleanups */
        struct device core;
  
  /*    struct iommu_table *iommu_table; -- waiting for BenH's cleanups */
        struct device core;
-@@ -438,5 +447,66 @@
+@@ -438,5 +447,66 @@ struct ps3_prealloc {
  extern struct ps3_prealloc ps3fb_videomemory;
  extern struct ps3_prealloc ps3flash_bounce_buffer;
  
  extern struct ps3_prealloc ps3fb_videomemory;
  extern struct ps3_prealloc ps3flash_bounce_buffer;
  
  #endif
 --- a/include/asm-powerpc/ptrace.h
 +++ b/include/asm-powerpc/ptrace.h
  #endif
 --- a/include/asm-powerpc/ptrace.h
 +++ b/include/asm-powerpc/ptrace.h
-@@ -106,7 +106,8 @@
+@@ -106,7 +106,8 @@ extern int ptrace_put_reg(struct task_st
   */
  #define FULL_REGS(regs)               (((regs)->trap & 1) == 0)
  #ifndef __powerpc64__
   */
  #define FULL_REGS(regs)               (((regs)->trap & 1) == 0)
  #ifndef __powerpc64__
  /* Export QE common operations */
  extern void qe_reset(void);
  extern int par_io_init(struct device_node *np);
  /* Export QE common operations */
  extern void qe_reset(void);
  extern int par_io_init(struct device_node *np);
-@@ -38,7 +84,8 @@
+@@ -38,7 +84,8 @@ extern int par_io_data_set(u8 port, u8 p
  
  /* QE internal API */
  int qe_issue_cmd(u32 cmd, u32 device, u8 mcn_protocol, u32 cmd_input);
  
  /* QE internal API */
  int qe_issue_cmd(u32 cmd, u32 device, u8 mcn_protocol, u32 cmd_input);
  int qe_get_snum(void);
  void qe_put_snum(u8 snum);
  unsigned long qe_muram_alloc(int size, int align);
  int qe_get_snum(void);
  void qe_put_snum(u8 snum);
  unsigned long qe_muram_alloc(int size, int align);
-@@ -47,6 +94,58 @@
+@@ -47,6 +94,58 @@ unsigned long qe_muram_alloc_fixed(unsig
  void qe_muram_dump(void);
  void *qe_muram_addr(unsigned long offset);
  
  void qe_muram_dump(void);
  void *qe_muram_addr(unsigned long offset);
  
  /* Buffer descriptors */
  struct qe_bd {
        __be16 status;
  /* Buffer descriptors */
  struct qe_bd {
        __be16 status;
-@@ -129,52 +228,6 @@
+@@ -129,52 +228,6 @@ enum comm_dir {
        COMM_DIR_RX_AND_TX = 3
  };
  
        COMM_DIR_RX_AND_TX = 3
  };
  
  /* QE CMXUCR Registers.
   * There are two UCCs represented in each of the four CMXUCR registers.
   * These values are for the UCC in the LSBs
  /* QE CMXUCR Registers.
   * There are two UCCs represented in each of the four CMXUCR registers.
   * These values are for the UCC in the LSBs
-@@ -328,6 +381,15 @@
+@@ -328,6 +381,15 @@ enum qe_clock {
  
  #define QE_SDEBCR_BA_MASK     0x01FFFFFF
  
  
  #define QE_SDEBCR_BA_MASK     0x01FFFFFF
  
  
  /*
   * - Kernel side interface -
  
  /*
   * - Kernel side interface -
-@@ -564,13 +688,13 @@
+@@ -564,13 +688,13 @@ struct smu_user_cmd_hdr
  
        __u8            cmd;                    /* SMU command byte */
        __u8            pad[3];                 /* padding */
  
        __u8            cmd;                    /* SMU command byte */
        __u8            pad[3];                 /* padding */
  struct device_node;
  
  enum spu_utilization_state {
  struct device_node;
  
  enum spu_utilization_state {
-@@ -145,7 +146,6 @@
+@@ -145,7 +146,6 @@ struct spu {
        void (* ibox_callback)(struct spu *spu);
        void (* stop_callback)(struct spu *spu);
        void (* mfc_callback)(struct spu *spu);
        void (* ibox_callback)(struct spu *spu);
        void (* stop_callback)(struct spu *spu);
        void (* mfc_callback)(struct spu *spu);
  
        char irq_c0[8];
        char irq_c1[8];
  
        char irq_c0[8];
        char irq_c1[8];
-@@ -196,10 +196,11 @@
+@@ -196,10 +196,11 @@ struct cbe_spu_info {
  extern struct cbe_spu_info cbe_spu_info[];
  
  void spu_init_channels(struct spu *spu);
  extern struct cbe_spu_info cbe_spu_info[];
  
  void spu_init_channels(struct spu *spu);
  #ifdef CONFIG_KEXEC
  void crash_register_spus(struct list_head *list);
  #else
  #ifdef CONFIG_KEXEC
  void crash_register_spus(struct list_head *list);
  #else
-@@ -210,6 +211,7 @@
+@@ -210,6 +211,7 @@ static inline void crash_register_spus(s
  
  extern void spu_invalidate_slbs(struct spu *spu);
  extern void spu_associate_mm(struct spu *spu, struct mm_struct *mm);
  
  extern void spu_invalidate_slbs(struct spu *spu);
  extern void spu_associate_mm(struct spu *spu, struct mm_struct *mm);
  
  /* Calls from the memory management to the SPU */
  struct mm_struct;
  
  /* Calls from the memory management to the SPU */
  struct mm_struct;
-@@ -279,6 +281,8 @@
+@@ -279,6 +281,8 @@ void spu_remove_sysdev_attr(struct sysde
  int spu_add_sysdev_attr_group(struct attribute_group *attrs);
  void spu_remove_sysdev_attr_group(struct attribute_group *attrs);
  
  int spu_add_sysdev_attr_group(struct attribute_group *attrs);
  void spu_remove_sysdev_attr_group(struct attribute_group *attrs);
  
  
  /*
   * Notifier blocks:
  
  /*
   * Notifier blocks:
-@@ -303,7 +307,7 @@
+@@ -303,7 +307,7 @@ extern void notify_spus_active(void);
  extern void do_notify_spus_active(void);
  
  /*
  extern void do_notify_spus_active(void);
  
  /*
   */
  
  union mfc_tag_size_class_cmd {
   */
  
  union mfc_tag_size_class_cmd {
-@@ -524,8 +528,24 @@
+@@ -524,8 +528,24 @@ struct spu_priv1 {
  #define CLASS2_ENABLE_SPU_STOP_INTR                   0x2L
  #define CLASS2_ENABLE_SPU_HALT_INTR                   0x4L
  #define CLASS2_ENABLE_SPU_DMA_TAG_GROUP_COMPLETE_INTR 0x8L
  #define CLASS2_ENABLE_SPU_STOP_INTR                   0x2L
  #define CLASS2_ENABLE_SPU_HALT_INTR                   0x4L
  #define CLASS2_ENABLE_SPU_DMA_TAG_GROUP_COMPLETE_INTR 0x8L
  
 --- a/include/asm-powerpc/spu_csa.h
 +++ b/include/asm-powerpc/spu_csa.h
  
 --- a/include/asm-powerpc/spu_csa.h
 +++ b/include/asm-powerpc/spu_csa.h
-@@ -194,7 +194,7 @@
+@@ -194,7 +194,7 @@ struct spu_priv1_collapsed {
  };
  
  /*
  };
  
  /*
   */
  struct spu_priv2_collapsed {
        u64 slb_index_W;
   */
  struct spu_priv2_collapsed {
        u64 slb_index_W;
-@@ -254,20 +254,11 @@
+@@ -254,20 +254,11 @@ struct spu_state {
        u64 spu_chnldata_RW[32];
        u32 spu_mailbox_data[4];
        u32 pu_mailbox_data[1];
        u64 spu_chnldata_RW[32];
        u32 spu_mailbox_data[4];
        u32 pu_mailbox_data[1];
  
  /* access to priv1 registers */
  
  
  /* access to priv1 registers */
  
-@@ -178,6 +179,8 @@
+@@ -178,6 +179,8 @@ struct spu_management_ops {
        int (*enumerate_spus)(int (*fn)(void *data));
        int (*create_spu)(struct spu *spu, void *data);
        int (*destroy_spu)(struct spu *spu);
        int (*enumerate_spus)(int (*fn)(void *data));
        int (*create_spu)(struct spu *spu, void *data);
        int (*destroy_spu)(struct spu *spu);
        int (*init_affinity)(void);
  };
  
        int (*init_affinity)(void);
  };
  
-@@ -207,6 +210,18 @@
+@@ -207,6 +210,18 @@ spu_init_affinity (void)
        return spu_management_ops->init_affinity();
  }
  
        return spu_management_ops->init_affinity();
  }
  
   * and only intended to be used by the platform setup code.
 --- a/include/asm-powerpc/system.h
 +++ b/include/asm-powerpc/system.h
   * and only intended to be used by the platform setup code.
 --- a/include/asm-powerpc/system.h
 +++ b/include/asm-powerpc/system.h
-@@ -169,6 +169,8 @@
+@@ -169,6 +169,8 @@ extern int do_page_fault(struct pt_regs 
  extern void bad_page_fault(struct pt_regs *, unsigned long, int);
  extern int die(const char *, struct pt_regs *, long);
  extern void _exception(int, struct pt_regs *, int, unsigned long);
  extern void bad_page_fault(struct pt_regs *, unsigned long, int);
  extern int die(const char *, struct pt_regs *, long);
  extern void _exception(int, struct pt_regs *, int, unsigned long);
  extern u32 booke_wdt_period;
 --- a/include/asm-powerpc/udbg.h
 +++ b/include/asm-powerpc/udbg.h
  extern u32 booke_wdt_period;
 --- a/include/asm-powerpc/udbg.h
 +++ b/include/asm-powerpc/udbg.h
-@@ -48,6 +48,7 @@
+@@ -48,6 +48,7 @@ extern void __init udbg_init_rtas_consol
  extern void __init udbg_init_debug_beat(void);
  extern void __init udbg_init_btext(void);
  extern void __init udbg_init_44x_as1(void);
  extern void __init udbg_init_debug_beat(void);
  extern void __init udbg_init_btext(void);
  extern void __init udbg_init_44x_as1(void);
  #endif /* __KERNEL__ */
 --- a/include/asm-ppc/8xx_immap.h
 +++ b/include/asm-ppc/8xx_immap.h
  #endif /* __KERNEL__ */
 --- a/include/asm-ppc/8xx_immap.h
 +++ b/include/asm-ppc/8xx_immap.h
-@@ -123,7 +123,7 @@
+@@ -123,7 +123,7 @@ typedef struct     mem_ctlr {
  #define OR_G5LA               0x00000400      /* Output #GPL5 on #GPL_A5              */
  #define OR_G5LS               0x00000200      /* Drive #GPL high on falling edge of...*/
  #define OR_BI         0x00000100      /* Burst inhibit                        */
  #define OR_G5LA               0x00000400      /* Output #GPL5 on #GPL_A5              */
  #define OR_G5LS               0x00000200      /* Drive #GPL high on falling edge of...*/
  #define OR_BI         0x00000100      /* Burst inhibit                        */
  #define OR_SCY_2_CLK  0x00000020      /* 2 clock cycles wait states           */
 --- a/include/asm-ppc/commproc.h
 +++ b/include/asm-ppc/commproc.h
  #define OR_SCY_2_CLK  0x00000020      /* 2 clock cycles wait states           */
 --- a/include/asm-ppc/commproc.h
 +++ b/include/asm-ppc/commproc.h
-@@ -681,7 +681,7 @@
+@@ -681,7 +681,7 @@ typedef struct risc_timer_pram {
  #define       CICR_SCC_SCC3           ((uint)0x00200000)      /* SCC3 @ SCCc */
  #define       CICR_SCB_SCC2           ((uint)0x00040000)      /* SCC2 @ SCCb */
  #define       CICR_SCA_SCC1           ((uint)0x00000000)      /* SCC1 @ SCCa */
  #define       CICR_SCC_SCC3           ((uint)0x00200000)      /* SCC3 @ SCCc */
  #define       CICR_SCB_SCC2           ((uint)0x00040000)      /* SCC2 @ SCCb */
  #define       CICR_SCA_SCC1           ((uint)0x00000000)      /* SCC1 @ SCCa */
  #define CICR_SPS              ((uint)0x00000001)      /* SCC Spread */
 --- a/include/asm-ppc/mmu.h
 +++ b/include/asm-ppc/mmu.h
  #define CICR_SPS              ((uint)0x00000001)      /* SCC Spread */
 --- a/include/asm-ppc/mmu.h
 +++ b/include/asm-ppc/mmu.h
-@@ -383,6 +383,12 @@
+@@ -383,6 +383,12 @@ typedef struct _P601_BAT {
  #define BOOKE_PAGESZ_256GB    14
  #define BOOKE_PAGESZ_1TB      15
  
  #define BOOKE_PAGESZ_256GB    14
  #define BOOKE_PAGESZ_1TB      15
  
   */
 --- a/include/asm-ppc/mpc52xx_psc.h
 +++ b/include/asm-ppc/mpc52xx_psc.h
   */
 --- a/include/asm-ppc/mpc52xx_psc.h
 +++ b/include/asm-ppc/mpc52xx_psc.h
-@@ -159,6 +159,9 @@
+@@ -159,6 +159,9 @@ struct mpc52xx_psc {
        u8              reserved16[3];
        u8              irfdr;          /* PSC + 0x54 */
        u8              reserved17[3];
        u8              reserved16[3];
        u8              irfdr;          /* PSC + 0x54 */
        u8              reserved17[3];
  
  #include <asm/prom.h>
  
  
  #include <asm/prom.h>
  
-@@ -41,11 +42,20 @@
+@@ -41,11 +42,20 @@ extern struct device_node *of_find_compa
  #define for_each_compatible_node(dn, type, compatible) \
        for (dn = of_find_compatible_node(NULL, type, compatible); dn; \
             dn = of_find_compatible_node(dn, type, compatible))
  #define for_each_compatible_node(dn, type, compatible) \
        for (dn = of_find_compatible_node(NULL, type, compatible); dn; \
             dn = of_find_compatible_node(dn, type, compatible))
  extern struct property *of_find_property(const struct device_node *np,
                                         const char *name,
                                         int *lenp);
  extern struct property *of_find_property(const struct device_node *np,
                                         const char *name,
                                         int *lenp);
-@@ -56,5 +66,7 @@
+@@ -56,5 +66,7 @@ extern const void *of_get_property(const
                                int *lenp);
  extern int of_n_addr_cells(struct device_node *np);
  extern int of_n_size_cells(struct device_node *np);
                                int *lenp);
  extern int of_n_addr_cells(struct device_node *np);
  extern int of_n_size_cells(struct device_node *np);
  
 --- a/include/linux/pata_platform.h
 +++ b/include/linux/pata_platform.h
  
 --- a/include/linux/pata_platform.h
 +++ b/include/linux/pata_platform.h
-@@ -15,4 +15,13 @@
+@@ -15,4 +15,13 @@ struct pata_platform_info {
        unsigned int irq_flags;
  };
  
        unsigned int irq_flags;
  };
  
  #endif /* __PHY_FIXED_H */
 --- a/include/linux/pmu.h
 +++ b/include/linux/pmu.h
  #endif /* __PHY_FIXED_H */
 --- a/include/linux/pmu.h
 +++ b/include/linux/pmu.h
-@@ -159,41 +159,7 @@
+@@ -159,41 +159,7 @@ extern void pmu_unlock(void);
  extern int pmu_present(void);
  extern int pmu_get_model(void);
  
  extern int pmu_present(void);
  extern int pmu_get_model(void);
  
This page took 0.498968 seconds and 4 git commands to generate.