LinuxPPC-Dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* Re: SW TLB MMU rework and SMP issues
From: Benjamin Herrenschmidt @ 2008-07-16  2:07 UTC (permalink / raw)
  To: Kumar Gala; +Cc: linuxppc-dev list
In-Reply-To: <BF59BFC7-736B-4D3F-9227-97DC90CE4739@kernel.crashing.org>

On Tue, 2008-07-15 at 16:58 -0500, Kumar Gala wrote:
> Ben,
> 
> I've been giving some thought to the new software managed TLBs and SMP  
> issues.  I was wondering if you had any insights on how we should deal  
> with the following issues:

As discussed on IRC (might interest others...)

> * tlb invalidates -- need to ensure we don't have multiple tlbsync's  
> on the bus.  I'm thinking for e500/fsl we will move to IPI based  
> invalidate broadcast and do invalidates locally
> (http://patchwork.ozlabs.org/linuxppc/patch?id=19657 )

Well, you can just have all your invalidations wrapped in a spinlock.

The "trick" of course is for full-mm invalidates such as page tables
teardown or fork, to avoid doing a lock/unlock & IPI for every PTE of
course. A way to do it is to do some batching, though it isn't trivial. 

Without support for TLB invalidate all or by PID, what you can do maybe
is to manually do an invalidate by PID with a tlbre/tlbwe loop. Check
the worst case scenario of walking your entire TLB vs. small processes
that carry only a handful of PTEs....

You can use the batch interface to 'count' things on page table teardown
and decide based on a threshold of invalidated PTEs what approach is
more likely to be useful, but can't really use the batch interface for
fork. 

> * 64-bit PTEs and reader vs writer hazards.  How do we ensure that the  
> TLB miss handler samples a consistent view of the pte.  pte_updates  
> seem ok since we only update the flag word.  However set_pte_at seems  
> like it could be problematic.

eieio on the writer and a data dependency on the reader. segher
suggested a nice way to do it on the reader side, by doing a subf of the
value from the pointer and then a lwxz using that value as an offset.

ie. something like that, with r3 containing the PTE pointer:

	lwz	r10,4(r3)
	subf	r4,r10,r3  <-- you can use r3,r10,r3 if clobber is safe
	lwzx	r11,r10,r4 <-- in which case you use r3 here too

That ensures that the top half is loaded after the bottom half, which
is what you want if you do the set_pte_at() that way:

	stw	r11,0(r3)  <-- write top half first
	eieio	           <-- maitain order to coherency domain
        stw	r10,4(r3)  <-- write bottom half last

In fact, in the reader case, while at it, you can interleave that with
the testing of the present bit. Assuming _PAGE_PRESENT is in the low
bits and you can clobber r3, you get something like:

	lwz	r10,4(r3)
	<-- can't do much here unless you can do unrelated things -->
	andi.	r0,r10,_PAGE_PRESENT
	subf	r3,r10,r3
	beq	page_fault
	lwzx	r11,r10,r3

Cheers,
Ben.

^ permalink raw reply

* mpc5200 and fsl_soc.c
From: Jon Smirl @ 2008-07-16  2:25 UTC (permalink / raw)
  To: linux-ppc list

Now that the i2c code in fsl_soc.c has migrated, I tried building my
mpc5200 system without including fsl_soc.c and everything built
without problem. Is there anything else in this file necessary for a
mpc5200 build? Some option I don't have turned on in my build?

I've noticed that several of the functions in this file aren't
properly ifdef'd. For example I think the gianfar driver is getting
built into mpc5200 kernels. Dropping the whole file from mpc5200
builds avoids the need to sort out the ifdef's.

diff --git a/arch/powerpc/platforms/52xx/Kconfig
b/arch/powerpc/platforms/52xx/Kconfig
index e91a0d2..76a3411 100644
--- a/arch/powerpc/platforms/52xx/Kconfig
+++ b/arch/powerpc/platforms/52xx/Kconfig
@@ -1,7 +1,6 @@
 config PPC_MPC52xx
        bool "52xx-based boards"
        depends on PPC_MULTIPLATFORM && PPC32
-       select FSL_SOC
        select PPC_CLOCK


-- 
Jon Smirl
jonsmirl@gmail.com

^ permalink raw reply related

* Re: [patch 9/9] powerpc/cell: Add DMA_ATTR_STRONG_ORDERING dma attribute and use in IOMMU code
From: Roland Dreier @ 2008-07-16  2:18 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: Mark Nelson, linuxppc-dev, cbe-oss-dev
In-Reply-To: <200807152327.06946.arnd@arndb.de>

 > This is all about inbound transfers, i.e. DMAs coming from the I/O bridge
 > into the CPU, both DMA read and DMA write.

OK -- at a minimum I think the documentation should make that clear.  As
it stands the description of what this does is pretty much impossible to
parse and understand.

 > Strong ordering is only active when both the bridge and the IOMMU enable
 > it, but for correctly written drivers, this only results in a slowdown.

So when would someone use this dma attribute?  As a hack to fix drivers
where the real fix is too complicated?

 - R.

^ permalink raw reply

* RE: Failure of request_irq()  for MPC8313 using arch=powerpc
From: Liu Dave @ 2008-07-16  2:09 UTC (permalink / raw)
  To: Duy-Ky Nguyen, linuxppc-embedded
In-Reply-To: <BLU119-DAV11096F9EACC27956DCC87BBB8F0@phx.gbl>

[-- Attachment #1: Type: text/plain, Size: 1335 bytes --]

Hi Nguyen,
 
If current PowerPC linux is using the virq to request_irq,
you need do the irq_of_parse_and_map(np, 0) to get the virq.
 
like.
virq = irq_of_parse_and_map(np, 0)
request_irq(virq,...);
 
Hope it can help you.
Thanks,
Dave

________________________________

	From: linuxppc-embedded-bounces+daveliu=freescale.com@ozlabs.org [mailto:linuxppc-embedded-bounces+daveliu=freescale.com@ozlabs.org] On Behalf Of Duy-Ky Nguyen
	Sent: 2008?7?16? 8:59 AM
	To: linuxppc-embedded@ozlabs.org
	Subject: Failure of request_irq() for MPC8313 using arch=powerpc
	
	
	Hello,
	 
	I had no problem in using request_irq() for MPC8272 with arch=ppc from Montavista Linux
	 
	But I have failure for MPC8313 with arch=powerpc from FreeScale LTIB Linux with error code -38
	 
	I found its header file mpc83xx.h under include/asm-ppc, while it's supposed to be under include/asm-powerpc.
	 
	I did try to copy the header file to directory asm-powerpc
	 
	From MPC8313 datasheet, I have 
	 
	GPIO_IRQ = 74
	 
	and I use
	 
	DEVICE_NAME = "ppc"
	IRQ_FLAG = IRQF_SHARED    // use new flag
	here my function call
	 
	request_irq (GPIO_IRQ,
	      ppc_ISR,  
	      IRQ_FLAG,
	      DEVICE_NAME,   
	      NULL);   
	
	I'd appreciate any help on this problem.
	 
	Best Regards,
	 
	Duy-Kyng
	 
	 


[-- Attachment #2: Type: text/html, Size: 5122 bytes --]

^ permalink raw reply

* Re: [git pull] Please pull from powerpc.git merge branch
From: Benjamin Herrenschmidt @ 2008-07-16  1:48 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linuxppc-dev list, akpm, Linux Kernel list
In-Reply-To: <1216172043.7740.136.camel@pasglop>

On Wed, 2008-07-16 at 11:34 +1000, Benjamin Herrenschmidt wrote:
> Linus,
> 
> I apologize in advance for the couple of merge commits in there. I
> merged your tree yesterday in order to fix a (fairly minor) conflict,
> and waited for our autobuilder to test a whole bunch of configs
> overnight before asking you to pull, at which point, sfr informed me of
> a bunch of this time non-trivial conflicts with whatever you pulled in
> the meantime...

And here's the non-wrapped version of the stat & log... oops.

 Documentation/kprobes.txt                          |    1 
 Documentation/powerpc/booting-without-of.txt       | 1082 --------
 Documentation/powerpc/bootwrapper.txt              |  141 +
 Documentation/powerpc/dts-bindings/fsl/board.txt   |   29 
 .../powerpc/dts-bindings/fsl/cpm_qe/cpm.txt        |   67 +
 .../powerpc/dts-bindings/fsl/cpm_qe/cpm/brg.txt    |   21 
 .../powerpc/dts-bindings/fsl/cpm_qe/cpm/i2c.txt    |   41 
 .../powerpc/dts-bindings/fsl/cpm_qe/cpm/pic.txt    |   18 
 .../powerpc/dts-bindings/fsl/cpm_qe/cpm/usb.txt    |   15 
 .../powerpc/dts-bindings/fsl/cpm_qe/network.txt    |   45 
 .../powerpc/dts-bindings/fsl/cpm_qe/qe.txt         |   58 
 .../dts-bindings/fsl/cpm_qe/qe/firmware.txt        |   24 
 .../powerpc/dts-bindings/fsl/cpm_qe/qe/par_io.txt  |   51 
 .../powerpc/dts-bindings/fsl/cpm_qe/qe/pincfg.txt  |   60 +
 .../powerpc/dts-bindings/fsl/cpm_qe/qe/ucc.txt     |   70 +
 .../powerpc/dts-bindings/fsl/cpm_qe/qe/usb.txt     |   22 
 .../powerpc/dts-bindings/fsl/cpm_qe/serial.txt     |   21 
 Documentation/powerpc/dts-bindings/fsl/diu.txt     |   18 
 Documentation/powerpc/dts-bindings/fsl/dma.txt     |  127 +
 Documentation/powerpc/dts-bindings/fsl/gtm.txt     |   31 
 Documentation/powerpc/dts-bindings/fsl/guts.txt    |   25 
 Documentation/powerpc/dts-bindings/fsl/i2c.txt     |   32 
 Documentation/powerpc/dts-bindings/fsl/lbc.txt     |   35 
 Documentation/powerpc/dts-bindings/fsl/msi-pic.txt |   36 
 Documentation/powerpc/dts-bindings/fsl/sata.txt    |   29 
 Documentation/powerpc/dts-bindings/fsl/sec.txt     |   68 +
 Documentation/powerpc/dts-bindings/fsl/spi.txt     |   24 
 Documentation/powerpc/dts-bindings/fsl/ssi.txt     |   38 
 Documentation/powerpc/dts-bindings/fsl/tsec.txt    |   69 +
 Documentation/powerpc/dts-bindings/fsl/usb.txt     |   59 
 MAINTAINERS                                        |    4 
 Makefile                                           |    1 
 arch/powerpc/Kconfig                               |   27 
 arch/powerpc/Kconfig.debug                         |   10 
 arch/powerpc/Makefile                              |   23 
 arch/powerpc/boot/Makefile                         |   13 
 arch/powerpc/boot/addnote.c                        |    2 
 arch/powerpc/boot/cuboot-c2k.c                     |  190 +
 arch/powerpc/boot/cuboot-sam440ep.c                |   49 
 arch/powerpc/boot/cuboot-warp.c                    |   47 
 arch/powerpc/boot/dts/asp834x-redboot.dts          |  282 ++
 arch/powerpc/boot/dts/bamboo.dts                   |  142 +
 arch/powerpc/boot/dts/c2k.dts                      |  371 +++
 arch/powerpc/boot/dts/canyonlands.dts              |  226 +-
 arch/powerpc/boot/dts/ebony.dts                    |  164 +
 arch/powerpc/boot/dts/ep405.dts                    |  100 -
 arch/powerpc/boot/dts/glacier.dts                  |  262 +-
 arch/powerpc/boot/dts/haleakala.dts                |  138 +
 arch/powerpc/boot/dts/holly.dts                    |  122 -
 arch/powerpc/boot/dts/katmai.dts                   |  210 +-
 arch/powerpc/boot/dts/kilauea.dts                  |  186 +
 arch/powerpc/boot/dts/ksi8560.dts                  |   64 
 arch/powerpc/boot/dts/makalu.dts                   |  186 +
 arch/powerpc/boot/dts/mpc5121ads.dts               |  310 ++
 arch/powerpc/boot/dts/mpc7448hpc2.dts              |    2 
 arch/powerpc/boot/dts/mpc8272ads.dts               |   32 
 arch/powerpc/boot/dts/mpc8313erdb.dts              |   50 
 arch/powerpc/boot/dts/mpc8315erdb.dts              |   50 
 arch/powerpc/boot/dts/mpc832x_mds.dts              |   50 
 arch/powerpc/boot/dts/mpc832x_rdb.dts              |   86 -
 arch/powerpc/boot/dts/mpc8349emitx.dts             |   47 
 arch/powerpc/boot/dts/mpc8349emitxgp.dts           |   47 
 arch/powerpc/boot/dts/mpc834x_mds.dts              |   50 
 arch/powerpc/boot/dts/mpc836x_mds.dts              |   48 
 arch/powerpc/boot/dts/mpc836x_rdk.dts              |  432 +++
 arch/powerpc/boot/dts/mpc8377_mds.dts              |   69 -
 arch/powerpc/boot/dts/mpc8377_rdb.dts              |   49 
 arch/powerpc/boot/dts/mpc8378_mds.dts              |   48 
 arch/powerpc/boot/dts/mpc8378_rdb.dts              |   49 
 arch/powerpc/boot/dts/mpc8379_mds.dts              |   48 
 arch/powerpc/boot/dts/mpc8379_rdb.dts              |   49 
 arch/powerpc/boot/dts/mpc8536ds.dts                |  432 +++
 arch/powerpc/boot/dts/mpc8540ads.dts               |   46 
 arch/powerpc/boot/dts/mpc8541cds.dts               |   57 
 arch/powerpc/boot/dts/mpc8544ds.dts                |   32 
 arch/powerpc/boot/dts/mpc8548cds.dts               |   57 
 arch/powerpc/boot/dts/mpc8555cds.dts               |   57 
 arch/powerpc/boot/dts/mpc8560ads.dts               |   44 
 arch/powerpc/boot/dts/mpc8568mds.dts               |   60 
 arch/powerpc/boot/dts/mpc8572ds.dts                |  116 +
 arch/powerpc/boot/dts/mpc8610_hpcd.dts             |   20 
 arch/powerpc/boot/dts/mpc8641_hpcn.dts             |   43 
 arch/powerpc/boot/dts/mpc866ads.dts                |   11 
 arch/powerpc/boot/dts/mpc885ads.dts                |   11 
 arch/powerpc/boot/dts/ps3.dts                      |   16 
 arch/powerpc/boot/dts/rainier.dts                  |  163 +
 arch/powerpc/boot/dts/sam440ep.dts                 |  293 ++
 arch/powerpc/boot/dts/sbc8349.dts                  |   49 
 arch/powerpc/boot/dts/sbc8548.dts                  |   57 
 arch/powerpc/boot/dts/sbc8560.dts                  |   46 
 arch/powerpc/boot/dts/sbc8641d.dts                 |   41 
 arch/powerpc/boot/dts/sequoia.dts                  |  172 +
 arch/powerpc/boot/dts/storcenter.dts               |    1 
 arch/powerpc/boot/dts/stx_gp3_8560.dts             |   45 
 arch/powerpc/boot/dts/taishan.dts                  |  241 +-
 arch/powerpc/boot/dts/tqm5200.dts                  |   14 
 arch/powerpc/boot/dts/tqm8540.dts                  |   49 
 arch/powerpc/boot/dts/tqm8541.dts                  |   60 
 arch/powerpc/boot/dts/tqm8548-bigflash.dts         |  406 +++
 arch/powerpc/boot/dts/tqm8548.dts                  |  411 +++
 arch/powerpc/boot/dts/tqm8555.dts                  |   60 
 arch/powerpc/boot/dts/tqm8560.dts                  |  114 +
 arch/powerpc/boot/dts/virtex440-ml507.dts          |  296 ++
 arch/powerpc/boot/dts/walnut.dts                   |  118 -
 arch/powerpc/boot/dts/warp.dts                     |  145 +
 arch/powerpc/boot/dts/yosemite.dts                 |  146 +
 arch/powerpc/boot/oflib.c                          |   15 
 arch/powerpc/boot/redboot-83xx.c                   |   60 
 arch/powerpc/boot/simpleboot.c                     |    6 
 arch/powerpc/boot/virtex.c                         |  100 +
 arch/powerpc/boot/wrapper                          |   32 
 arch/powerpc/boot/zImage.coff.lds.S                |    1 
 arch/powerpc/boot/zImage.lds.S                     |    1 
 arch/powerpc/configs/44x/sam440ep_defconfig        | 1192 +++++++++
 arch/powerpc/configs/44x/taishan_defconfig         |   79 +
 arch/powerpc/configs/44x/virtex5_defconfig         | 1107 ++++++++
 arch/powerpc/configs/83xx/mpc836x_rdk_defconfig    | 1128 ++++++++
 arch/powerpc/configs/85xx/tqm8548_defconfig        | 1225 +++++++++
 arch/powerpc/configs/asp8347_defconfig             | 1214 +++++++++
 arch/powerpc/configs/c2k_defconfig                 | 1872 ++++++++++++++
 arch/powerpc/configs/mpc8536_ds_defconfig          | 1637 ++++++++++++
 arch/powerpc/configs/ppc44x_defconfig              |  149 +
 arch/powerpc/configs/pseries_defconfig             |    1 
 arch/powerpc/kernel/Makefile                       |    3 
 arch/powerpc/kernel/align.c                        |   70 -
 arch/powerpc/kernel/asm-offsets.c                  |   27 
 arch/powerpc/kernel/cpu_setup_44x.S                |    1 
 arch/powerpc/kernel/cputable.c                     |  105 -
 arch/powerpc/kernel/crash.c                        |    2 
 arch/powerpc/kernel/crash_dump.c                   |    7 
 arch/powerpc/kernel/dma_64.c                       |   45 
 arch/powerpc/kernel/entry_32.S                     |  158 +
 arch/powerpc/kernel/entry_64.S                     |   17 
 arch/powerpc/kernel/fpu.S                          |   41 
 arch/powerpc/kernel/head_32.S                      |    6 
 arch/powerpc/kernel/head_40x.S                     |   24 
 arch/powerpc/kernel/head_44x.S                     |  295 +-
 arch/powerpc/kernel/head_64.S                      |   82 +
 arch/powerpc/kernel/head_booke.h                   |  126 +
 arch/powerpc/kernel/head_fsl_booke.S               |   66 
 arch/powerpc/kernel/ibmebus.c                      |   16 
 arch/powerpc/kernel/idle_6xx.S                     |    2 
 arch/powerpc/kernel/idle_e500.S                    |   93 +
 arch/powerpc/kernel/iommu.c                        |   16 
 arch/powerpc/kernel/irq.c                          |   35 
 arch/powerpc/kernel/kprobes.c                      |   36 
 arch/powerpc/kernel/lparcfg.c                      |    6 
 arch/powerpc/kernel/machine_kexec_64.c             |    4 
 arch/powerpc/kernel/misc.S                         |    5 
 arch/powerpc/kernel/misc_32.S                      |    2 
 arch/powerpc/kernel/misc_64.S                      |   33 
 arch/powerpc/kernel/module.c                       |  116 +
 arch/powerpc/kernel/module_32.c                    |   72 -
 arch/powerpc/kernel/module_64.c                    |   81 -
 arch/powerpc/kernel/msi.c                          |    2 
 arch/powerpc/kernel/of_device.c                    |   48 
 arch/powerpc/kernel/ppc32.h                        |    1 
 arch/powerpc/kernel/ppc_ksyms.c                    |    3 
 arch/powerpc/kernel/process.c                      |  113 -
 arch/powerpc/kernel/prom.c                         |    4 
 arch/powerpc/kernel/prom_init.c                    |    5 
 arch/powerpc/kernel/ptrace.c                       |  114 +
 arch/powerpc/kernel/ptrace32.c                     |   14 
 arch/powerpc/kernel/rtas-proc.c                    |   14 
 arch/powerpc/kernel/rtas.c                         |    6 
 arch/powerpc/kernel/rtas_flash.c                   |    4 
 arch/powerpc/kernel/rtas_pci.c                     |    4 
 arch/powerpc/kernel/setup-common.c                 |    2 
 arch/powerpc/kernel/setup_32.c                     |   33 
 arch/powerpc/kernel/setup_64.c                     |    2 
 arch/powerpc/kernel/signal.c                       |   12 
 arch/powerpc/kernel/signal.h                       |   10 
 arch/powerpc/kernel/signal_32.c                    |  184 +
 arch/powerpc/kernel/signal_64.c                    |  101 +
 arch/powerpc/kernel/smp.c                          |    4 
 arch/powerpc/kernel/softemu8xx.c                   |    4 
 arch/powerpc/kernel/stacktrace.c                   |   36 
 arch/powerpc/kernel/syscalls.c                     |    3 
 arch/powerpc/kernel/time.c                         |   14 
 arch/powerpc/kernel/traps.c                        |   55 
 arch/powerpc/kernel/vdso.c                         |   10 
 arch/powerpc/kernel/vdso32/vdso32.lds.S            |    5 
 arch/powerpc/kernel/vdso64/vdso64.lds.S            |   11 
 arch/powerpc/kernel/vmlinux.lds.S                  |    8 
 arch/powerpc/lib/Makefile                          |    4 
 arch/powerpc/lib/code-patching.c                   |  448 +++
 arch/powerpc/lib/dma-noncoherent.c                 |   11 
 arch/powerpc/lib/feature-fixups-test.S             |  742 +++++
 arch/powerpc/lib/feature-fixups.c                  |  351 +++
 arch/powerpc/math-emu/math.c                       |   56 
 arch/powerpc/mm/44x_mmu.c                          |   29 
 arch/powerpc/mm/fault.c                            |    3 
 arch/powerpc/mm/hash_low_64.S                      |   17 
 arch/powerpc/mm/hash_utils_64.c                    |   42 
 arch/powerpc/mm/hugetlbpage.c                      |   13 
 arch/powerpc/mm/init_32.c                          |    7 
 arch/powerpc/mm/init_64.c                          |    4 
 arch/powerpc/mm/mem.c                              |    9 
 arch/powerpc/mm/mmu_decl.h                         |    6 
 arch/powerpc/mm/numa.c                             |  310 ++
 arch/powerpc/mm/pgtable_32.c                       |    6 
 arch/powerpc/mm/ppc_mmu_32.c                       |   27 
 arch/powerpc/mm/slice.c                            |  177 +
 arch/powerpc/mm/stab.c                             |    4 
 arch/powerpc/mm/tlb_64.c                           |    7 
 arch/powerpc/platforms/44x/Kconfig                 |   35 
 arch/powerpc/platforms/44x/Makefile                |    2 
 arch/powerpc/platforms/44x/sam440ep.c              |   79 +
 arch/powerpc/platforms/44x/virtex.c                |   60 
 arch/powerpc/platforms/44x/warp-nand.c             |   57 
 arch/powerpc/platforms/44x/warp.c                  |  293 ++
 arch/powerpc/platforms/512x/Kconfig                |   17 
 arch/powerpc/platforms/512x/Makefile               |    4 
 arch/powerpc/platforms/512x/clock.c                |  729 +++++
 arch/powerpc/platforms/512x/mpc5121_ads.c          |   69 -
 arch/powerpc/platforms/512x/mpc5121_ads.h          |   16 
 arch/powerpc/platforms/512x/mpc5121_ads_cpld.c     |  204 ++
 arch/powerpc/platforms/512x/mpc5121_generic.c      |   58 
 arch/powerpc/platforms/512x/mpc512x.h              |   17 
 arch/powerpc/platforms/512x/mpc512x_shared.c       |   83 +
 arch/powerpc/platforms/52xx/mpc52xx_pci.c          |    3 
 arch/powerpc/platforms/82xx/Kconfig                |   11 
 arch/powerpc/platforms/82xx/mpc8272_ads.c          |    4 
 arch/powerpc/platforms/82xx/pq2ads-pci-pic.c       |    2 
 arch/powerpc/platforms/83xx/Kconfig                |   30 
 arch/powerpc/platforms/83xx/Makefile               |    2 
 arch/powerpc/platforms/83xx/asp834x.c              |   90 +
 arch/powerpc/platforms/83xx/mpc836x_rdk.c          |  102 +
 arch/powerpc/platforms/85xx/Kconfig                |   14 
 arch/powerpc/platforms/85xx/Makefile               |    1 
 arch/powerpc/platforms/85xx/mpc8536_ds.c           |  125 +
 arch/powerpc/platforms/85xx/mpc85xx_ads.c          |    8 
 arch/powerpc/platforms/85xx/mpc85xx_cds.c          |   14 
 arch/powerpc/platforms/85xx/mpc85xx_ds.c           |   12 
 arch/powerpc/platforms/85xx/tqm85xx.c              |   23 
 arch/powerpc/platforms/86xx/Kconfig                |   16 
 arch/powerpc/platforms/86xx/Makefile               |    1 
 arch/powerpc/platforms/86xx/mpc8610_hpcd.c         |   25 
 arch/powerpc/platforms/86xx/mpc86xx.h              |    3 
 arch/powerpc/platforms/86xx/mpc86xx_hpcn.c         |   64 
 arch/powerpc/platforms/86xx/mpc86xx_smp.c          |    6 
 arch/powerpc/platforms/86xx/pic.c                  |   78 +
 arch/powerpc/platforms/86xx/sbc8641d.c             |   25 
 arch/powerpc/platforms/8xx/mpc86xads_setup.c       |    4 
 arch/powerpc/platforms/8xx/mpc885ads_setup.c       |    3 
 arch/powerpc/platforms/Kconfig                     |   33 
 arch/powerpc/platforms/Kconfig.cputype             |   25 
 arch/powerpc/platforms/cell/axon_msi.c             |   76 -
 arch/powerpc/platforms/cell/beat_htab.c            |    4 
 arch/powerpc/platforms/cell/iommu.c                |    8 
 arch/powerpc/platforms/cell/ras.c                  |   22 
 arch/powerpc/platforms/cell/spider-pic.c           |    2 
 arch/powerpc/platforms/cell/spufs/context.c        |   12 
 arch/powerpc/platforms/cell/spufs/file.c           |  203 +
 arch/powerpc/platforms/cell/spufs/inode.c          |   47 
 arch/powerpc/platforms/cell/spufs/sched.c          |    9 
 arch/powerpc/platforms/cell/spufs/spufs.h          |   19 
 arch/powerpc/platforms/cell/spufs/sputrace.c       |    8 
 arch/powerpc/platforms/chrp/setup.c                |    7 
 arch/powerpc/platforms/embedded6xx/Kconfig         |   10 
 arch/powerpc/platforms/embedded6xx/Makefile        |    1 
 arch/powerpc/platforms/embedded6xx/c2k.c           |  158 +
 arch/powerpc/platforms/iseries/iommu.c             |    4 
 arch/powerpc/platforms/maple/time.c                |    2 
 arch/powerpc/platforms/powermac/pic.c              |    8 
 arch/powerpc/platforms/powermac/smp.c              |    6 
 arch/powerpc/platforms/ps3/system-bus.c            |   38 
 arch/powerpc/platforms/pseries/eeh.c               |   14 
 arch/powerpc/platforms/pseries/firmware.c          |    1 
 arch/powerpc/platforms/pseries/hotplug-memory.c    |  117 +
 arch/powerpc/platforms/pseries/iommu.c             |   15 
 arch/powerpc/platforms/pseries/kexec.c             |    2 
 arch/powerpc/platforms/pseries/lpar.c              |    4 
 arch/powerpc/platforms/pseries/ras.c               |    2 
 arch/powerpc/platforms/pseries/reconfig.c          |   38 
 arch/powerpc/platforms/pseries/rtasd.c             |    4 
 arch/powerpc/platforms/pseries/setup.c             |    4 
 arch/powerpc/sysdev/6xx-suspend.S                  |   52 
 arch/powerpc/sysdev/Makefile                       |    9 
 arch/powerpc/sysdev/bestcomm/bestcomm.c            |    2 
 arch/powerpc/sysdev/bestcomm/gen_bd.c              |   95 +
 arch/powerpc/sysdev/bestcomm/gen_bd.h              |    5 
 arch/powerpc/sysdev/bestcomm/sram.c                |    2 
 arch/powerpc/sysdev/cpm1.c                         |    2 
 arch/powerpc/sysdev/cpm2_pic.c                     |    2 
 arch/powerpc/sysdev/cpm_common.c                   |   19 
 arch/powerpc/sysdev/dcr.c                          |  156 +
 arch/powerpc/sysdev/fsl_gtm.c                      |  434 +++
 arch/powerpc/sysdev/fsl_msi.c                      |  429 +++
 arch/powerpc/sysdev/fsl_msi.h                      |   42 
 arch/powerpc/sysdev/fsl_pci.c                      |   14 
 arch/powerpc/sysdev/fsl_soc.c                      |  122 -
 arch/powerpc/sysdev/i8259.c                        |    2 
 arch/powerpc/sysdev/indirect_pci.c                 |    6 
 arch/powerpc/sysdev/ipic.c                         |   16 
 arch/powerpc/sysdev/mpic.c                         |   18 
 arch/powerpc/sysdev/mpic_msi.c                     |    1 
 arch/powerpc/sysdev/mpic_pasemi_msi.c              |    6 
 arch/powerpc/sysdev/mpic_u3msi.c                   |    8 
 arch/powerpc/sysdev/mv64x60_dev.c                  |   10 
 arch/powerpc/sysdev/ppc4xx_pci.c                   |   14 
 arch/powerpc/sysdev/qe_lib/Kconfig                 |   13 
 arch/powerpc/sysdev/qe_lib/Makefile                |    2 
 arch/powerpc/sysdev/qe_lib/gpio.c                  |  149 +
 arch/powerpc/sysdev/qe_lib/qe.c                    |   94 -
 arch/powerpc/sysdev/qe_lib/qe_ic.c                 |   14 
 arch/powerpc/sysdev/qe_lib/qe_io.c                 |   94 -
 arch/powerpc/sysdev/qe_lib/ucc.c                   |    7 
 arch/powerpc/sysdev/qe_lib/usb.c                   |   55 
 arch/powerpc/sysdev/tsi108_pci.c                   |    3 
 arch/powerpc/sysdev/uic.c                          |    6 
 arch/powerpc/xmon/xmon.c                           |   66 
 arch/ppc/.gitignore                                |    1 
 arch/ppc/4xx_io/Makefile                           |    6 
 arch/ppc/4xx_io/serial_sicc.c                      | 2005 ---------------
 arch/ppc/8260_io/Kconfig                           |   65 
 arch/ppc/8260_io/Makefile                          |    6 
 arch/ppc/8260_io/enet.c                            |  865 ------
 arch/ppc/8260_io/fcc_enet.c                        | 2379 -----------------
 arch/ppc/8xx_io/Kconfig                            |  134 -
 arch/ppc/8xx_io/Makefile                           |    9 
 arch/ppc/8xx_io/commproc.c                         |  432 ---
 arch/ppc/8xx_io/enet.c                             |  982 -------
 arch/ppc/8xx_io/fec.c                              | 1983 ---------------
 arch/ppc/8xx_io/micropatch.c                       |  743 -----
 arch/ppc/Kconfig                                   | 1186 ---------
 arch/ppc/Kconfig.debug                             |   66 
 arch/ppc/Makefile                                  |  135 -
 arch/ppc/boot/Makefile                             |   37 
 arch/ppc/boot/common/Makefile                      |   10 
 arch/ppc/boot/common/bootinfo.c                    |   68 -
 arch/ppc/boot/common/crt0.S                        |   80 -
 arch/ppc/boot/common/misc-common.c                 |  555 ----
 arch/ppc/boot/common/ns16550.c                     |  103 -
 arch/ppc/boot/common/serial_stub.c                 |   21 
 arch/ppc/boot/common/string.S                      |  150 -
 arch/ppc/boot/common/util.S                        |  293 --
 arch/ppc/boot/images/.gitignore                    |    6 
 arch/ppc/boot/images/Makefile                      |   34 
 arch/ppc/boot/include/cpc700.h                     |   26 
 arch/ppc/boot/include/iso_font.h                   |  257 --
 arch/ppc/boot/include/mpc10x.h                     |   63 
 arch/ppc/boot/include/mpsc_defs.h                  |  146 -
 arch/ppc/boot/include/nonstdio.h                   |   34 
 arch/ppc/boot/include/of1275.h                     |   42 
 arch/ppc/boot/include/rs6000.h                     |  243 --
 arch/ppc/boot/include/serial.h                     |   46 
 arch/ppc/boot/ld.script                            |   85 -
 arch/ppc/boot/lib/.gitignore                       |    3 
 arch/ppc/boot/lib/Makefile                         |   23 
 arch/ppc/boot/lib/div64.S                          |   58 
 arch/ppc/boot/lib/kbd.c                            |  248 --
 arch/ppc/boot/lib/vreset.c                         |  805 ------
 arch/ppc/boot/of1275/Makefile                      |    6 
 arch/ppc/boot/of1275/call_prom.c                   |   74 -
 arch/ppc/boot/of1275/claim.c                       |   92 -
 arch/ppc/boot/of1275/enter.c                       |   22 
 arch/ppc/boot/of1275/exit.c                        |   24 
 arch/ppc/boot/of1275/finddevice.c                  |   16 
 arch/ppc/boot/of1275/getprop.c                     |   37 
 arch/ppc/boot/of1275/map.c                         |   48 
 arch/ppc/boot/of1275/ofinit.c                      |   27 
 arch/ppc/boot/of1275/ofstdio.c                     |   32 
 arch/ppc/boot/of1275/read.c                        |   35 
 arch/ppc/boot/of1275/release.c                     |   30 
 arch/ppc/boot/of1275/write.c                       |   35 
 arch/ppc/boot/simple/Makefile                      |  277 --
 arch/ppc/boot/simple/chrpmap.c                     |   12 
 arch/ppc/boot/simple/clear.S                       |   19 
 arch/ppc/boot/simple/cpc700_memory.c               |   34 
 arch/ppc/boot/simple/dummy.c                       |    4 
 arch/ppc/boot/simple/embed_config.c                |  938 -------
 arch/ppc/boot/simple/head.S                        |  137 -
 arch/ppc/boot/simple/iic.c                         |  214 --
 arch/ppc/boot/simple/m8260_tty.c                   |  325 --
 arch/ppc/boot/simple/m8xx_tty.c                    |  289 --
 arch/ppc/boot/simple/misc-chestnut.c               |   32 
 arch/ppc/boot/simple/misc-cpci690.c                |   65 
 arch/ppc/boot/simple/misc-embedded.c               |  276 --
 arch/ppc/boot/simple/misc-ev64260.c                |   54 
 arch/ppc/boot/simple/misc-ev64360.c                |   42 
 arch/ppc/boot/simple/misc-katana.c                 |   42 
 arch/ppc/boot/simple/misc-mv64x60.c                |   85 -
 arch/ppc/boot/simple/misc-prep.c                   |  209 --
 arch/ppc/boot/simple/misc-radstone_ppc7d.c         |   24 
 arch/ppc/boot/simple/misc-spruce.c                 |  271 --
 arch/ppc/boot/simple/misc.c                        |  278 --
 arch/ppc/boot/simple/mpc10x_memory.c               |  109 -
 arch/ppc/boot/simple/mpc52xx_tty.c                 |  137 -
 arch/ppc/boot/simple/mv64x60_tty.c                 |  364 ---
 arch/ppc/boot/simple/openbios.c                    |  128 -
 arch/ppc/boot/simple/pci.c                         |  274 --
 arch/ppc/boot/simple/pibs.c                        |  104 -
 arch/ppc/boot/simple/prepmap.c                     |   12 
 arch/ppc/boot/simple/qspan_pci.c                   |  269 --
 arch/ppc/boot/simple/relocate.S                    |  213 --
 arch/ppc/boot/simple/rw4/ppc_40x.h                 |  664 -----
 arch/ppc/boot/simple/rw4/rw4_init.S                |   78 -
 arch/ppc/boot/simple/rw4/rw4_init_brd.S            | 1125 --------
 arch/ppc/boot/simple/rw4/stb.h                     |  239 --
 arch/ppc/boot/simple/uartlite_tty.c                |   45 
 arch/ppc/boot/utils/.gitignore                     |    3 
 arch/ppc/boot/utils/elf.pl                         |   33 
 arch/ppc/boot/utils/mkbugboot.c                    |  147 -
 arch/ppc/boot/utils/mkprep.c                       |  241 --
 arch/ppc/boot/utils/mktree.c                       |  152 -
 arch/ppc/configs/FADS_defconfig                    |  520 ----
 arch/ppc/configs/IVMS8_defconfig                   |  548 ----
 arch/ppc/configs/TQM823L_defconfig                 |  521 ----
 arch/ppc/configs/TQM8260_defconfig                 |  499 ----
 arch/ppc/configs/TQM850L_defconfig                 |  521 ----
 arch/ppc/configs/TQM860L_defconfig                 |  549 ----
 arch/ppc/configs/bamboo_defconfig                  |  944 -------
 arch/ppc/configs/bseip_defconfig                   |  517 ----
 arch/ppc/configs/bubinga_defconfig                 |  592 ----
 arch/ppc/configs/chestnut_defconfig                |  794 ------
 arch/ppc/configs/cpci405_defconfig                 |  631 -----
 arch/ppc/configs/cpci690_defconfig                 |  798 ------
 arch/ppc/configs/ebony_defconfig                   |  585 ----
 arch/ppc/configs/ep405_defconfig                   |  572 ----
 arch/ppc/configs/est8260_defconfig                 |  491 ----
 arch/ppc/configs/ev64260_defconfig                 |  758 ------
 arch/ppc/configs/ev64360_defconfig                 |  817 ------
 arch/ppc/configs/hdpu_defconfig                    |  890 -------
 arch/ppc/configs/katana_defconfig                  |  948 -------
 arch/ppc/configs/lite5200_defconfig                |  436 ---
 arch/ppc/configs/lopec_defconfig                   |  814 ------
 arch/ppc/configs/luan_defconfig                    |  668 -----
 arch/ppc/configs/mbx_defconfig                     |  512 ----
 arch/ppc/configs/ml300_defconfig                   |  739 -----
 arch/ppc/configs/ml403_defconfig                   |  740 -----
 arch/ppc/configs/mvme5100_defconfig                |  746 -----
 arch/ppc/configs/ocotea_defconfig                  |  599 ----
 arch/ppc/configs/pplus_defconfig                   |  720 -----
 arch/ppc/configs/prep_defconfig                    | 1679 ------------
 arch/ppc/configs/prpmc750_defconfig                |  594 ----
 arch/ppc/configs/prpmc800_defconfig                |  656 -----
 arch/ppc/configs/radstone_ppc7d_defconfig          |  991 -------
 arch/ppc/configs/redwood5_defconfig                |  557 ----
 arch/ppc/configs/redwood6_defconfig                |  535 ----
 arch/ppc/configs/rpx8260_defconfig                 |  555 ----
 arch/ppc/configs/rpxcllf_defconfig                 |  582 ----
 arch/ppc/configs/rpxlite_defconfig                 |  581 ----
 arch/ppc/configs/sandpoint_defconfig               |  737 -----
 arch/ppc/configs/spruce_defconfig                  |  577 ----
 arch/ppc/configs/sycamore_defconfig                |  663 -----
 arch/ppc/configs/taishan_defconfig                 | 1077 --------
 arch/ppc/configs/walnut_defconfig                  |  578 ----
 arch/ppc/kernel/Makefile                           |   21 
 arch/ppc/kernel/asm-offsets.c                      |  164 -
 arch/ppc/kernel/cpu_setup_power4.S                 |  197 -
 arch/ppc/kernel/entry.S                            |  960 -------
 arch/ppc/kernel/head.S                             | 1220 ---------
 arch/ppc/kernel/head_44x.S                         |  769 ------
 arch/ppc/kernel/head_4xx.S                         | 1021 --------
 arch/ppc/kernel/head_8xx.S                         |  959 -------
 arch/ppc/kernel/head_booke.h                       |  308 --
 arch/ppc/kernel/machine_kexec.c                    |  118 -
 arch/ppc/kernel/misc.S                             |  868 ------
 arch/ppc/kernel/pci.c                              | 1233 ---------
 arch/ppc/kernel/ppc-stub.c                         |  866 ------
 arch/ppc/kernel/ppc_htab.c                         |  464 ---
 arch/ppc/kernel/ppc_ksyms.c                        |  258 --
 arch/ppc/kernel/relocate_kernel.S                  |  123 -
 arch/ppc/kernel/setup.c                            |  572 ----
 arch/ppc/kernel/smp-tbsync.c                       |  180 -
 arch/ppc/kernel/smp.c                              |  414 ---
 arch/ppc/kernel/softemu8xx.c                       |  147 -
 arch/ppc/kernel/time.c                             |  445 ---
 arch/ppc/kernel/traps.c                            |  826 ------
 arch/ppc/kernel/vmlinux.lds.S                      |  164 -
 arch/ppc/lib/Makefile                              |    5 
 arch/ppc/lib/checksum.S                            |  225 --
 arch/ppc/lib/div64.S                               |   58 
 arch/ppc/lib/locks.c                               |  189 -
 arch/ppc/lib/string.S                              |  732 -----
 arch/ppc/mm/44x_mmu.c                              |  101 -
 arch/ppc/mm/4xx_mmu.c                              |  135 -
 arch/ppc/mm/Makefile                               |   10 
 arch/ppc/mm/fault.c                                |  436 ---
 arch/ppc/mm/hashtable.S                            |  617 -----
 arch/ppc/mm/init.c                                 |  603 ----
 arch/ppc/mm/mem_pieces.c                           |  162 -
 arch/ppc/mm/mem_pieces.h                           |   48 
 arch/ppc/mm/mmu_context.c                          |   85 -
 arch/ppc/mm/mmu_decl.h                             |   79 -
 arch/ppc/mm/pgtable.c                              |  403 ---
 arch/ppc/mm/ppc_mmu.c                              |  269 --
 arch/ppc/mm/tlb.c                                  |  183 -
 arch/ppc/platforms/4xx/Kconfig                     |  285 --
 arch/ppc/platforms/4xx/Makefile                    |   31 
 arch/ppc/platforms/4xx/bamboo.c                    |  442 ---
 arch/ppc/platforms/4xx/bamboo.h                    |  133 -
 arch/ppc/platforms/4xx/bubinga.c                   |  265 --
 arch/ppc/platforms/4xx/bubinga.h                   |   54 
 arch/ppc/platforms/4xx/cpci405.c                   |  201 -
 arch/ppc/platforms/4xx/cpci405.h                   |   28 
 arch/ppc/platforms/4xx/ebony.c                     |  334 --
 arch/ppc/platforms/4xx/ebony.h                     |   97 -
 arch/ppc/platforms/4xx/ep405.c                     |  196 -
 arch/ppc/platforms/4xx/ep405.h                     |   52 
 arch/ppc/platforms/4xx/ibm405ep.c                  |  141 -
 arch/ppc/platforms/4xx/ibm405ep.h                  |  145 -
 arch/ppc/platforms/4xx/ibm405gp.c                  |  120 -
 arch/ppc/platforms/4xx/ibm405gp.h                  |  148 -
 arch/ppc/platforms/4xx/ibm405gpr.c                 |  115 -
 arch/ppc/platforms/4xx/ibm405gpr.h                 |  148 -
 arch/ppc/platforms/4xx/ibm440ep.c                  |  220 --
 arch/ppc/platforms/4xx/ibm440ep.h                  |   73 -
 arch/ppc/platforms/4xx/ibm440gp.c                  |  163 -
 arch/ppc/platforms/4xx/ibm440gp.h                  |   63 
 arch/ppc/platforms/4xx/ibm440gx.c                  |  231 --
 arch/ppc/platforms/4xx/ibm440gx.h                  |   71 -
 arch/ppc/platforms/4xx/ibm440sp.c                  |  129 -
 arch/ppc/platforms/4xx/ibm440sp.h                  |   61 
 arch/ppc/platforms/4xx/ibmnp405h.c                 |  170 -
 arch/ppc/platforms/4xx/ibmnp405h.h                 |  154 -
 arch/ppc/platforms/4xx/ibmstb4.c                   |  122 -
 arch/ppc/platforms/4xx/ibmstb4.h                   |  235 --
 arch/ppc/platforms/4xx/ibmstbx25.c                 |   66 
 arch/ppc/platforms/4xx/ibmstbx25.h                 |  258 --
 arch/ppc/platforms/4xx/luan.c                      |  371 ---
 arch/ppc/platforms/4xx/luan.h                      |   77 -
 arch/ppc/platforms/4xx/ocotea.c                    |  350 ---
 arch/ppc/platforms/4xx/ocotea.h                    |   94 -
 arch/ppc/platforms/4xx/ppc440spe.c                 |  146 -
 arch/ppc/platforms/4xx/ppc440spe.h                 |   63 
 arch/ppc/platforms/4xx/redwood5.c                  |  120 -
 arch/ppc/platforms/4xx/redwood5.h                  |   52 
 arch/ppc/platforms/4xx/redwood6.c                  |  156 -
 arch/ppc/platforms/4xx/redwood6.h                  |   53 
 arch/ppc/platforms/4xx/sycamore.c                  |  272 --
 arch/ppc/platforms/4xx/sycamore.h                  |   49 
 arch/ppc/platforms/4xx/taishan.c                   |  395 ---
 arch/ppc/platforms/4xx/taishan.h                   |   67 
 arch/ppc/platforms/4xx/virtex.h                    |   35 
 arch/ppc/platforms/4xx/walnut.c                    |  246 --
 arch/ppc/platforms/4xx/walnut.h                    |   52 
 arch/ppc/platforms/4xx/xilinx_ml300.c              |  118 -
 arch/ppc/platforms/4xx/xilinx_ml403.c              |  120 -
 arch/ppc/platforms/4xx/xparameters/xparameters.h   |  104 -
 .../platforms/4xx/xparameters/xparameters_ml300.h  |  310 ---
 .../platforms/4xx/xparameters/xparameters_ml403.h  |  243 --
 arch/ppc/platforms/4xx/yucca.c                     |  393 ---
 arch/ppc/platforms/4xx/yucca.h                     |  108 -
 arch/ppc/platforms/Makefile                        |   25 
 arch/ppc/platforms/bseip.h                         |   38 
 arch/ppc/platforms/ccm.h                           |   27 
 arch/ppc/platforms/chestnut.c                      |  574 ----
 arch/ppc/platforms/chestnut.h                      |  127 -
 arch/ppc/platforms/cpci690.c                       |  453 ---
 arch/ppc/platforms/cpci690.h                       |   74 -
 arch/ppc/platforms/est8260.h                       |   35 
 arch/ppc/platforms/ev64260.c                       |  649 -----
 arch/ppc/platforms/ev64260.h                       |  126 -
 arch/ppc/platforms/ev64360.c                       |  517 ----
 arch/ppc/platforms/ev64360.h                       |  114 -
 arch/ppc/platforms/fads.h                          |  130 -
 arch/ppc/platforms/hdpu.c                          | 1015 -------
 arch/ppc/platforms/hdpu.h                          |   80 -
 arch/ppc/platforms/hermes.h                        |   26 
 arch/ppc/platforms/ip860.h                         |   35 
 arch/ppc/platforms/ivms8.h                         |   55 
 arch/ppc/platforms/katana.c                        |  902 -------
 arch/ppc/platforms/katana.h                        |  253 --
 arch/ppc/platforms/lantec.h                        |   20 
 arch/ppc/platforms/lite5200.c                      |  245 --
 arch/ppc/platforms/lite5200.h                      |   21 
 arch/ppc/platforms/lopec.c                         |  310 --
 arch/ppc/platforms/lopec.h                         |   39 
 arch/ppc/platforms/lwmon.h                         |   59 
 arch/ppc/platforms/mbx.h                           |  117 -
 arch/ppc/platforms/mpc866ads_setup.c               |  413 ---
 arch/ppc/platforms/mvme5100.c                      |  340 ---
 arch/ppc/platforms/mvme5100.h                      |   91 -
 arch/ppc/platforms/pal4.h                          |   40 
 arch/ppc/platforms/pal4_pci.c                      |   75 -
 arch/ppc/platforms/pal4_serial.h                   |   37 
 arch/ppc/platforms/pal4_setup.c                    |  173 -
 arch/ppc/platforms/pcu_e.h                         |   27 
 arch/ppc/platforms/powerpmc250.c                   |  378 ---
 arch/ppc/platforms/powerpmc250.h                   |   52 
 arch/ppc/platforms/pplus.c                         |  844 ------
 arch/ppc/platforms/pplus.h                         |   65 
 arch/ppc/platforms/prep_pci.c                      | 1339 ----------
 arch/ppc/platforms/prep_setup.c                    | 1043 --------
 arch/ppc/platforms/prpmc750.c                      |  360 ---
 arch/ppc/platforms/prpmc750.h                      |   95 -
 arch/ppc/platforms/prpmc800.c                      |  472 ---
 arch/ppc/platforms/prpmc800.h                      |   82 -
 arch/ppc/platforms/radstone_ppc7d.c                | 1492 -----------
 arch/ppc/platforms/radstone_ppc7d.h                |  433 ---
 arch/ppc/platforms/residual.c                      | 1034 --------
 arch/ppc/platforms/rpx8260.h                       |   81 -
 arch/ppc/platforms/rpxclassic.h                    |  114 -
 arch/ppc/platforms/rpxlite.h                       |   91 -
 arch/ppc/platforms/sandpoint.c                     |  651 -----
 arch/ppc/platforms/sandpoint.h                     |   75 -
 arch/ppc/platforms/sbc82xx.c                       |  256 --
 arch/ppc/platforms/sbc82xx.h                       |   36 
 arch/ppc/platforms/sbs8260.h                       |   28 
 arch/ppc/platforms/spruce.c                        |  322 --
 arch/ppc/platforms/spruce.h                        |   71 -
 arch/ppc/platforms/tqm8260.h                       |   22 
 arch/ppc/platforms/tqm8260_setup.c                 |   42 
 arch/ppc/platforms/tqm8xx.h                        |  155 -
 arch/ppc/syslib/Makefile                           |   96 -
 arch/ppc/syslib/btext.c                            |  860 ------
 arch/ppc/syslib/cpc700.h                           |   96 -
 arch/ppc/syslib/cpc700_pic.c                       |  181 -
 arch/ppc/syslib/cpm2_common.c                      |  196 -
 arch/ppc/syslib/cpm2_pic.c                         |  177 -
 arch/ppc/syslib/cpm2_pic.h                         |    8 
 arch/ppc/syslib/gen550.h                           |   14 
 arch/ppc/syslib/gen550_dbg.c                       |  179 -
 arch/ppc/syslib/gen550_kgdb.c                      |   83 -
 arch/ppc/syslib/gt64260_pic.c                      |  323 --
 arch/ppc/syslib/harrier.c                          |  300 --
 arch/ppc/syslib/hawk_common.c                      |  317 --
 arch/ppc/syslib/i8259.c                            |  213 --
 arch/ppc/syslib/ibm440gp_common.c                  |   73 -
 arch/ppc/syslib/ibm440gp_common.h                  |   32 
 arch/ppc/syslib/ibm440gx_common.c                  |  294 --
 arch/ppc/syslib/ibm440gx_common.h                  |   58 
 arch/ppc/syslib/ibm440sp_common.c                  |   68 -
 arch/ppc/syslib/ibm440sp_common.h                  |   23 
 arch/ppc/syslib/ibm44x_common.c                    |  235 --
 arch/ppc/syslib/ibm44x_common.h                    |   45 
 arch/ppc/syslib/ibm_ocp.c                          |   10 
 arch/ppc/syslib/indirect_pci.c                     |  134 -
 arch/ppc/syslib/m8260_pci_erratum9.c               |  455 ---
 arch/ppc/syslib/m8260_setup.c                      |  266 --
 arch/ppc/syslib/m82xx_pci.c                        |  346 ---
 arch/ppc/syslib/m82xx_pci.h                        |   92 -
 arch/ppc/syslib/m8xx_setup.c                       |  465 ---
 arch/ppc/syslib/m8xx_wdt.c                         |  148 -
 arch/ppc/syslib/m8xx_wdt.h                         |   20 
 arch/ppc/syslib/mpc10x_common.c                    |  654 -----
 arch/ppc/syslib/mpc52xx_devices.c                  |  317 --
 arch/ppc/syslib/mpc52xx_pci.c                      |  289 --
 arch/ppc/syslib/mpc52xx_pci.h                      |  137 -
 arch/ppc/syslib/mpc52xx_pic.c                      |  254 --
 arch/ppc/syslib/mpc52xx_setup.c                    |  313 --
 arch/ppc/syslib/mpc52xx_sys.c                      |   36 
 arch/ppc/syslib/mpc8xx_devices.c                   |  243 --
 arch/ppc/syslib/mpc8xx_sys.c                       |   61 
 arch/ppc/syslib/mv64360_pic.c                      |  423 ---
 arch/ppc/syslib/mv64x60.c                          | 2485 ------------------
 arch/ppc/syslib/mv64x60_dbg.c                      |  121 -
 arch/ppc/syslib/mv64x60_win.c                      | 1165 ---------
 arch/ppc/syslib/ocp.c                              |  482 ----
 arch/ppc/syslib/open_pic.c                         | 1087 --------
 arch/ppc/syslib/open_pic2.c                        |  710 -----
 arch/ppc/syslib/open_pic_defs.h                    |  287 --
 arch/ppc/syslib/pci_auto.c                         |  515 ----
 arch/ppc/syslib/ppc403_pic.c                       |  125 -
 arch/ppc/syslib/ppc405_pci.c                       |  170 -
 arch/ppc/syslib/ppc440spe_pcie.c                   |  441 ---
 arch/ppc/syslib/ppc440spe_pcie.h                   |  149 -
 arch/ppc/syslib/ppc4xx_dma.c                       |  710 -----
 arch/ppc/syslib/ppc4xx_pic.c                       |  284 --
 arch/ppc/syslib/ppc4xx_setup.c                     |  271 --
 arch/ppc/syslib/ppc4xx_sgdma.c                     |  464 ---
 arch/ppc/syslib/ppc8xx_pic.c                       |  126 -
 arch/ppc/syslib/ppc8xx_pic.h                       |   19 
 arch/ppc/syslib/ppc_sys.c                          |  329 --
 arch/ppc/syslib/pq2_devices.c                      |  393 ---
 arch/ppc/syslib/pq2_sys.c                          |  203 -
 arch/ppc/syslib/prep_nvram.c                       |  135 -
 arch/ppc/syslib/qspan_pci.c                        |  380 ---
 arch/ppc/syslib/todc_time.c                        |  511 ----
 arch/ppc/syslib/virtex_devices.c                   |  276 --
 arch/ppc/syslib/virtex_devices.h                   |   35 
 arch/ppc/syslib/xilinx_pic.c                       |  153 -
 arch/ppc/xmon/Makefile                             |    8 
 arch/ppc/xmon/ansidecl.h                           |  141 -
 arch/ppc/xmon/nonstdio.h                           |   22 
 arch/ppc/xmon/ppc-dis.c                            |  190 -
 arch/ppc/xmon/ppc-opc.c                            | 2720 --------------------
 arch/ppc/xmon/ppc.h                                |  240 --
 arch/ppc/xmon/privinst.h                           |   90 -
 arch/ppc/xmon/setjmp.c                             |   29 
 arch/ppc/xmon/start.c                              |  342 ---
 arch/ppc/xmon/start_8xx.c                          |  287 --
 arch/ppc/xmon/subr_prf.c                           |   55 
 arch/ppc/xmon/xmon.c                               | 1780 -------------
 drivers/ata/pata_mpc52xx.c                         |    2 
 drivers/char/Kconfig                               |    8 
 drivers/char/Makefile                              |    1 
 drivers/char/bsr.c                                 |  312 ++
 drivers/char/hvc_console.c                         |    8 
 drivers/char/hvc_console.h                         |   10 
 drivers/char/hw_random/pasemi-rng.c                |    2 
 drivers/char/viotape.c                             |   23 
 drivers/hwmon/ams/ams-core.c                       |    2 
 drivers/i2c/busses/i2c-mpc.c                       |  104 -
 drivers/macintosh/adb.c                            |    5 
 drivers/macintosh/adbhid.c                         |    2 
 drivers/macintosh/macio_sysfs.c                    |   12 
 drivers/macintosh/mediabay.c                       |   27 
 drivers/macintosh/smu.c                            |   38 
 drivers/macintosh/therm_adt746x.c                  |    2 
 drivers/macintosh/therm_pm72.c                     |    4 
 drivers/macintosh/therm_windtunnel.c               |   18 
 drivers/macintosh/via-pmu68k.c                     |    5 
 drivers/net/Kconfig                                |    1 
 drivers/net/Makefile                               |    1 
 drivers/net/fec_8xx/Kconfig                        |   20 
 drivers/net/fec_8xx/Makefile                       |   12 
 drivers/net/fec_8xx/fec_8xx-netta.c                |  151 -
 drivers/net/fec_8xx/fec_8xx.h                      |  220 --
 drivers/net/fec_8xx/fec_main.c                     | 1264 ---------
 drivers/net/fec_8xx/fec_mii.c                      |  418 ---
 drivers/net/fs_enet/fs_enet-main.c                 |    2 
 drivers/net/fs_enet/mac-scc.c                      |    2 
 drivers/net/fs_enet/mii-fec.c                      |    2 
 drivers/net/ibm_newemac/core.c                     |   61 
 drivers/net/ibm_newemac/core.h                     |   85 +
 drivers/net/ibm_newemac/debug.c                    |   52 
 drivers/net/ibm_newemac/emac.h                     |  101 +
 drivers/net/ibm_newemac/rgmii.c                    |    6 
 drivers/net/ucc_geth.c                             |    2 
 drivers/net/ucc_geth_mii.c                         |    2 
 drivers/of/device.c                                |   84 +
 drivers/of/gpio.c                                  |   38 
 drivers/of/of_i2c.c                                |    1 
 drivers/of/platform.c                              |    3 
 drivers/pcmcia/electra_cf.c                        |    2 
 drivers/pcmcia/m8xx_pcmcia.c                       |    4 
 drivers/serial/cpm_uart/cpm_uart.h                 |   11 
 drivers/serial/cpm_uart/cpm_uart_core.c            |  393 ---
 drivers/serial/cpm_uart/cpm_uart_cpm1.c            |  170 -
 drivers/serial/cpm_uart/cpm_uart_cpm1.h            |   12 
 drivers/serial/cpm_uart/cpm_uart_cpm2.c            |  283 --
 drivers/serial/cpm_uart/cpm_uart_cpm2.h            |   12 
 drivers/serial/of_serial.c                         |    2 
 drivers/spi/mpc52xx_psc_spi.c                      |    2 
 drivers/video/platinumfb.c                         |    4 
 drivers/watchdog/mpc5200_wdt.c                     |    2 
 include/asm-powerpc/Kbuild                         |    2 
 include/asm-powerpc/asm-compat.h                   |   51 
 include/asm-powerpc/cache.h                        |    3 
 include/asm-powerpc/code-patching.h                |   54 
 include/asm-powerpc/cpm.h                          |    1 
 include/asm-powerpc/cpm1.h                         |   20 
 include/asm-powerpc/cpm2.h                         |   26 
 include/asm-powerpc/cputable.h                     |   84 -
 include/asm-powerpc/dcr-generic.h                  |   49 
 include/asm-powerpc/dcr-mmio.h                     |   20 
 include/asm-powerpc/dcr-native.h                   |   16 
 include/asm-powerpc/dcr.h                          |   39 
 include/asm-powerpc/dma-mapping.h                  |  125 +
 include/asm-powerpc/elf.h                          |   37 
 include/asm-powerpc/feature-fixups.h               |  126 +
 include/asm-powerpc/firmware.h                     |   13 
 include/asm-powerpc/fsl_gtm.h                      |   47 
 include/asm-powerpc/io.h                           |   59 
 include/asm-powerpc/ioctl.h                        |   58 
 include/asm-powerpc/iommu.h                        |   16 
 include/asm-powerpc/irq.h                          |   13 
 include/asm-powerpc/kexec.h                        |   13 
 include/asm-powerpc/machdep.h                      |    1 
 include/asm-powerpc/mman.h                         |   36 
 include/asm-powerpc/mmu-hash32.h                   |   28 
 include/asm-powerpc/mmu-hash64.h                   |    1 
 include/asm-powerpc/mpc6xx.h                       |    6 
 include/asm-powerpc/mpic.h                         |    2 
 include/asm-powerpc/of_device.h                    |    2 
 include/asm-powerpc/pSeries_reconfig.h             |    6 
 include/asm-powerpc/page_64.h                      |    6 
 include/asm-powerpc/pci-bridge.h                   |    3 
 include/asm-powerpc/pgtable-4k.h                   |    1 
 include/asm-powerpc/pgtable-64k.h                  |   17 
 include/asm-powerpc/pgtable-ppc32.h                |   71 -
 include/asm-powerpc/pgtable-ppc64.h                |    4 
 include/asm-powerpc/ppc_asm.h                      |  114 +
 include/asm-powerpc/processor.h                    |   28 
 include/asm-powerpc/prom.h                         |   16 
 include/asm-powerpc/ptrace.h                       |   13 
 include/asm-powerpc/qe.h                           |   82 -
 include/asm-powerpc/reg.h                          |    6 
 include/asm-powerpc/reg_booke.h                    |   74 +
 include/asm-powerpc/sigcontext.h                   |   37 
 include/asm-powerpc/smp.h                          |    2 
 include/asm-powerpc/sparsemem.h                    |    4 
 include/asm-powerpc/spinlock.h                     |   27 
 include/asm-powerpc/spu.h                          |    1 
 include/asm-powerpc/synch.h                        |   38 
 include/asm-powerpc/system.h                       |   72 -
 include/asm-powerpc/thread_info.h                  |   19 
 include/asm-powerpc/time.h                         |    1 
 include/asm-powerpc/timex.h                        |    2 
 include/asm-powerpc/xmon.h                         |    9 
 include/asm-ppc/8xx_immap.h                        |  564 ----
 include/asm-ppc/amigayle.h                         |    1 
 include/asm-ppc/amipcmcia.h                        |    1 
 include/asm-ppc/bootinfo.h                         |   46 
 include/asm-ppc/bootx.h                            |  135 -
 include/asm-ppc/btext.h                            |   34 
 include/asm-ppc/cpm1.h                             |  688 -----
 include/asm-ppc/cpm2.h                             | 1248 ---------
 include/asm-ppc/delay.h                            |   66 
 include/asm-ppc/device.h                           |    7 
 include/asm-ppc/floppy.h                           |  178 -
 include/asm-ppc/fs_pd.h                            |   36 
 include/asm-ppc/gg2.h                              |   61 
 include/asm-ppc/gt64260.h                          |  322 --
 include/asm-ppc/gt64260_defs.h                     | 1010 -------
 include/asm-ppc/harrier.h                          |   43 
 include/asm-ppc/hawk.h                             |   32 
 include/asm-ppc/hawk_defs.h                        |   76 -
 include/asm-ppc/highmem.h                          |  135 -
 include/asm-ppc/hydra.h                            |  102 -
 include/asm-ppc/ibm403.h                           |  478 ----
 include/asm-ppc/ibm405.h                           |  299 --
 include/asm-ppc/ibm44x.h                           |  674 -----
 include/asm-ppc/ibm4xx.h                           |  124 -
 include/asm-ppc/ibm_ocp.h                          |  204 --
 include/asm-ppc/ibm_ocp_pci.h                      |   32 
 include/asm-ppc/immap_cpm2.h                       |  648 -----
 include/asm-ppc/io.h                               |  502 ----
 include/asm-ppc/irq_regs.h                         |    1 
 include/asm-ppc/kdebug.h                           |    1 
 include/asm-ppc/kgdb.h                             |   57 
 include/asm-ppc/m8260_pci.h                        |  187 -
 include/asm-ppc/machdep.h                          |  178 -
 include/asm-ppc/md.h                               |   15 
 include/asm-ppc/mk48t59.h                          |   27 
 include/asm-ppc/mmu.h                              |  444 ---
 include/asm-ppc/mmu_context.h                      |  198 -
 include/asm-ppc/mpc10x.h                           |  180 -
 include/asm-ppc/mpc52xx.h                          |  450 ---
 include/asm-ppc/mpc52xx_psc.h                      |  200 -
 include/asm-ppc/mpc8260.h                          |   98 -
 include/asm-ppc/mpc8260_pci9.h                     |   47 
 include/asm-ppc/mpc8xx.h                           |  122 -
 include/asm-ppc/mv64x60.h                          |  353 ---
 include/asm-ppc/mv64x60_defs.h                     |  976 -------
 include/asm-ppc/ocp.h                              |  204 --
 include/asm-ppc/ocp_ids.h                          |   73 -
 include/asm-ppc/open_pic.h                         |   98 -
 include/asm-ppc/page.h                             |  140 -
 include/asm-ppc/pc_serial.h                        |   42 
 include/asm-ppc/pci-bridge.h                       |  151 -
 include/asm-ppc/pci.h                              |  156 -
 include/asm-ppc/pgalloc.h                          |   45 
 include/asm-ppc/pgtable.h                          |  771 ------
 include/asm-ppc/pnp.h                              |  645 -----
 include/asm-ppc/ppc4xx_dma.h                       |  579 ----
 include/asm-ppc/ppc4xx_pic.h                       |   52 
 include/asm-ppc/ppc_sys.h                          |  106 -
 include/asm-ppc/ppcboot.h                          |  100 -
 include/asm-ppc/prep_nvram.h                       |  153 -
 include/asm-ppc/prom.h                             |   40 
 include/asm-ppc/raven.h                            |   35 
 include/asm-ppc/reg_booke.h                        |  443 ---
 include/asm-ppc/residual.h                         |  350 ---
 include/asm-ppc/rtc.h                              |   95 -
 include/asm-ppc/serial.h                           |   43 
 include/asm-ppc/smp.h                              |   75 -
 include/asm-ppc/spinlock.h                         |  168 -
 include/asm-ppc/suspend.h                          |   12 
 include/asm-ppc/system.h                           |  289 --
 include/asm-ppc/time.h                             |  161 -
 include/asm-ppc/todc.h                             |  488 ----
 include/asm-ppc/traps.h                            |    1 
 include/asm-ppc/zorro.h                            |   30 
 include/linux/adb.h                                |    1 
 include/linux/elf.h                                |    1 
 include/linux/mm.h                                 |    1 
 include/linux/mman.h                               |   29 
 include/linux/of_device.h                          |    3 
 include/linux/pci_ids.h                            |    2 
 mm/mmap.c                                          |    5 
 mm/mprotect.c                                      |    2 
 875 files changed, 27827 insertions(+), 145692 deletions(-)
 create mode 100644 Documentation/powerpc/bootwrapper.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/board.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/cpm_qe/cpm.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/cpm_qe/cpm/brg.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/cpm_qe/cpm/i2c.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/cpm_qe/cpm/pic.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/cpm_qe/cpm/usb.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/cpm_qe/network.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe/firmware.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe/par_io.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe/pincfg.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe/ucc.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe/usb.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/cpm_qe/serial.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/diu.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/dma.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/gtm.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/guts.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/i2c.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/lbc.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/msi-pic.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/sata.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/sec.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/spi.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/ssi.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/tsec.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/usb.txt
 create mode 100644 arch/powerpc/boot/cuboot-c2k.c
 create mode 100644 arch/powerpc/boot/cuboot-sam440ep.c
 create mode 100644 arch/powerpc/boot/dts/asp834x-redboot.dts
 create mode 100644 arch/powerpc/boot/dts/c2k.dts
 create mode 100644 arch/powerpc/boot/dts/mpc836x_rdk.dts
 create mode 100644 arch/powerpc/boot/dts/mpc8536ds.dts
 create mode 100644 arch/powerpc/boot/dts/sam440ep.dts
 create mode 100644 arch/powerpc/boot/dts/tqm8548-bigflash.dts
 create mode 100644 arch/powerpc/boot/dts/tqm8548.dts
 create mode 100644 arch/powerpc/boot/dts/virtex440-ml507.dts
 create mode 100644 arch/powerpc/boot/redboot-83xx.c
 create mode 100644 arch/powerpc/boot/virtex.c
 create mode 100644 arch/powerpc/configs/44x/sam440ep_defconfig
 create mode 100644 arch/powerpc/configs/44x/virtex5_defconfig
 create mode 100644 arch/powerpc/configs/83xx/mpc836x_rdk_defconfig
 create mode 100644 arch/powerpc/configs/85xx/tqm8548_defconfig
 create mode 100644 arch/powerpc/configs/asp8347_defconfig
 create mode 100644 arch/powerpc/configs/c2k_defconfig
 create mode 100644 arch/powerpc/configs/mpc8536_ds_defconfig
 create mode 100644 arch/powerpc/kernel/idle_e500.S
 create mode 100644 arch/powerpc/kernel/module.c
 create mode 100644 arch/powerpc/lib/code-patching.c
 create mode 100644 arch/powerpc/lib/feature-fixups-test.S
 create mode 100644 arch/powerpc/lib/feature-fixups.c
 create mode 100644 arch/powerpc/platforms/44x/sam440ep.c
 create mode 100644 arch/powerpc/platforms/44x/virtex.c
 create mode 100644 arch/powerpc/platforms/512x/clock.c
 create mode 100644 arch/powerpc/platforms/512x/mpc5121_ads.h
 create mode 100644 arch/powerpc/platforms/512x/mpc5121_ads_cpld.c
 create mode 100644 arch/powerpc/platforms/512x/mpc5121_generic.c
 create mode 100644 arch/powerpc/platforms/512x/mpc512x.h
 create mode 100644 arch/powerpc/platforms/512x/mpc512x_shared.c
 create mode 100644 arch/powerpc/platforms/83xx/asp834x.c
 create mode 100644 arch/powerpc/platforms/83xx/mpc836x_rdk.c
 create mode 100644 arch/powerpc/platforms/85xx/mpc8536_ds.c
 create mode 100644 arch/powerpc/platforms/86xx/pic.c
 create mode 100644 arch/powerpc/platforms/embedded6xx/c2k.c
 create mode 100644 arch/powerpc/sysdev/6xx-suspend.S
 create mode 100644 arch/powerpc/sysdev/fsl_gtm.c
 create mode 100644 arch/powerpc/sysdev/fsl_msi.c
 create mode 100644 arch/powerpc/sysdev/fsl_msi.h
 create mode 100644 arch/powerpc/sysdev/qe_lib/gpio.c
 create mode 100644 arch/powerpc/sysdev/qe_lib/usb.c
 delete mode 100644 arch/ppc/.gitignore
 delete mode 100644 arch/ppc/4xx_io/Makefile
 delete mode 100644 arch/ppc/4xx_io/serial_sicc.c
 delete mode 100644 arch/ppc/8260_io/Kconfig
 delete mode 100644 arch/ppc/8260_io/Makefile
 delete mode 100644 arch/ppc/8260_io/enet.c
 delete mode 100644 arch/ppc/8260_io/fcc_enet.c
 delete mode 100644 arch/ppc/8xx_io/Kconfig
 delete mode 100644 arch/ppc/8xx_io/Makefile
 delete mode 100644 arch/ppc/8xx_io/commproc.c
 delete mode 100644 arch/ppc/8xx_io/enet.c
 delete mode 100644 arch/ppc/8xx_io/fec.c
 delete mode 100644 arch/ppc/8xx_io/micropatch.c
 delete mode 100644 arch/ppc/Kconfig
 delete mode 100644 arch/ppc/Kconfig.debug
 delete mode 100644 arch/ppc/Makefile
 delete mode 100644 arch/ppc/boot/Makefile
 delete mode 100644 arch/ppc/boot/common/Makefile
 delete mode 100644 arch/ppc/boot/common/bootinfo.c
 delete mode 100644 arch/ppc/boot/common/crt0.S
 delete mode 100644 arch/ppc/boot/common/misc-common.c
 delete mode 100644 arch/ppc/boot/common/ns16550.c
 delete mode 100644 arch/ppc/boot/common/serial_stub.c
 delete mode 100644 arch/ppc/boot/common/string.S
 delete mode 100644 arch/ppc/boot/common/util.S
 delete mode 100644 arch/ppc/boot/images/.gitignore
 delete mode 100644 arch/ppc/boot/images/Makefile
 delete mode 100644 arch/ppc/boot/include/cpc700.h
 delete mode 100644 arch/ppc/boot/include/iso_font.h
 delete mode 100644 arch/ppc/boot/include/mpc10x.h
 delete mode 100644 arch/ppc/boot/include/mpsc_defs.h
 delete mode 100644 arch/ppc/boot/include/nonstdio.h
 delete mode 100644 arch/ppc/boot/include/of1275.h
 delete mode 100644 arch/ppc/boot/include/rs6000.h
 delete mode 100644 arch/ppc/boot/include/serial.h
 delete mode 100644 arch/ppc/boot/ld.script
 delete mode 100644 arch/ppc/boot/lib/.gitignore
 delete mode 100644 arch/ppc/boot/lib/Makefile
 delete mode 100644 arch/ppc/boot/lib/div64.S
 delete mode 100644 arch/ppc/boot/lib/kbd.c
 delete mode 100644 arch/ppc/boot/lib/vreset.c
 delete mode 100644 arch/ppc/boot/of1275/Makefile
 delete mode 100644 arch/ppc/boot/of1275/call_prom.c
 delete mode 100644 arch/ppc/boot/of1275/claim.c
 delete mode 100644 arch/ppc/boot/of1275/enter.c
 delete mode 100644 arch/ppc/boot/of1275/exit.c
 delete mode 100644 arch/ppc/boot/of1275/finddevice.c
 delete mode 100644 arch/ppc/boot/of1275/getprop.c
 delete mode 100644 arch/ppc/boot/of1275/map.c
 delete mode 100644 arch/ppc/boot/of1275/ofinit.c
 delete mode 100644 arch/ppc/boot/of1275/ofstdio.c
 delete mode 100644 arch/ppc/boot/of1275/read.c
 delete mode 100644 arch/ppc/boot/of1275/release.c
 delete mode 100644 arch/ppc/boot/of1275/write.c
 delete mode 100644 arch/ppc/boot/simple/Makefile
 delete mode 100644 arch/ppc/boot/simple/chrpmap.c
 delete mode 100644 arch/ppc/boot/simple/clear.S
 delete mode 100644 arch/ppc/boot/simple/cpc700_memory.c
 delete mode 100644 arch/ppc/boot/simple/dummy.c
 delete mode 100644 arch/ppc/boot/simple/embed_config.c
 delete mode 100644 arch/ppc/boot/simple/head.S
 delete mode 100644 arch/ppc/boot/simple/iic.c
 delete mode 100644 arch/ppc/boot/simple/m8260_tty.c
 delete mode 100644 arch/ppc/boot/simple/m8xx_tty.c
 delete mode 100644 arch/ppc/boot/simple/misc-chestnut.c
 delete mode 100644 arch/ppc/boot/simple/misc-cpci690.c
 delete mode 100644 arch/ppc/boot/simple/misc-embedded.c
 delete mode 100644 arch/ppc/boot/simple/misc-ev64260.c
 delete mode 100644 arch/ppc/boot/simple/misc-ev64360.c
 delete mode 100644 arch/ppc/boot/simple/misc-katana.c
 delete mode 100644 arch/ppc/boot/simple/misc-mv64x60.c
 delete mode 100644 arch/ppc/boot/simple/misc-prep.c
 delete mode 100644 arch/ppc/boot/simple/misc-radstone_ppc7d.c
 delete mode 100644 arch/ppc/boot/simple/misc-spruce.c
 delete mode 100644 arch/ppc/boot/simple/misc.c
 delete mode 100644 arch/ppc/boot/simple/mpc10x_memory.c
 delete mode 100644 arch/ppc/boot/simple/mpc52xx_tty.c
 delete mode 100644 arch/ppc/boot/simple/mv64x60_tty.c
 delete mode 100644 arch/ppc/boot/simple/openbios.c
 delete mode 100644 arch/ppc/boot/simple/pci.c
 delete mode 100644 arch/ppc/boot/simple/pibs.c
 delete mode 100644 arch/ppc/boot/simple/prepmap.c
 delete mode 100644 arch/ppc/boot/simple/qspan_pci.c
 delete mode 100644 arch/ppc/boot/simple/relocate.S
 delete mode 100644 arch/ppc/boot/simple/rw4/ppc_40x.h
 delete mode 100644 arch/ppc/boot/simple/rw4/rw4_init.S
 delete mode 100644 arch/ppc/boot/simple/rw4/rw4_init_brd.S
 delete mode 100644 arch/ppc/boot/simple/rw4/stb.h
 delete mode 100644 arch/ppc/boot/simple/uartlite_tty.c
 delete mode 100644 arch/ppc/boot/utils/.gitignore
 delete mode 100644 arch/ppc/boot/utils/elf.pl
 delete mode 100644 arch/ppc/boot/utils/mkbugboot.c
 delete mode 100644 arch/ppc/boot/utils/mkprep.c
 delete mode 100644 arch/ppc/boot/utils/mktree.c
 delete mode 100644 arch/ppc/configs/FADS_defconfig
 delete mode 100644 arch/ppc/configs/IVMS8_defconfig
 delete mode 100644 arch/ppc/configs/TQM823L_defconfig
 delete mode 100644 arch/ppc/configs/TQM8260_defconfig
 delete mode 100644 arch/ppc/configs/TQM850L_defconfig
 delete mode 100644 arch/ppc/configs/TQM860L_defconfig
 delete mode 100644 arch/ppc/configs/bamboo_defconfig
 delete mode 100644 arch/ppc/configs/bseip_defconfig
 delete mode 100644 arch/ppc/configs/bubinga_defconfig
 delete mode 100644 arch/ppc/configs/chestnut_defconfig
 delete mode 100644 arch/ppc/configs/cpci405_defconfig
 delete mode 100644 arch/ppc/configs/cpci690_defconfig
 delete mode 100644 arch/ppc/configs/ebony_defconfig
 delete mode 100644 arch/ppc/configs/ep405_defconfig
 delete mode 100644 arch/ppc/configs/est8260_defconfig
 delete mode 100644 arch/ppc/configs/ev64260_defconfig
 delete mode 100644 arch/ppc/configs/ev64360_defconfig
 delete mode 100644 arch/ppc/configs/hdpu_defconfig
 delete mode 100644 arch/ppc/configs/katana_defconfig
 delete mode 100644 arch/ppc/configs/lite5200_defconfig
 delete mode 100644 arch/ppc/configs/lopec_defconfig
 delete mode 100644 arch/ppc/configs/luan_defconfig
 delete mode 100644 arch/ppc/configs/mbx_defconfig
 delete mode 100644 arch/ppc/configs/ml300_defconfig
 delete mode 100644 arch/ppc/configs/ml403_defconfig
 delete mode 100644 arch/ppc/configs/mvme5100_defconfig
 delete mode 100644 arch/ppc/configs/ocotea_defconfig
 delete mode 100644 arch/ppc/configs/pplus_defconfig
 delete mode 100644 arch/ppc/configs/prep_defconfig
 delete mode 100644 arch/ppc/configs/prpmc750_defconfig
 delete mode 100644 arch/ppc/configs/prpmc800_defconfig
 delete mode 100644 arch/ppc/configs/radstone_ppc7d_defconfig
 delete mode 100644 arch/ppc/configs/redwood5_defconfig
 delete mode 100644 arch/ppc/configs/redwood6_defconfig
 delete mode 100644 arch/ppc/configs/rpx8260_defconfig
 delete mode 100644 arch/ppc/configs/rpxcllf_defconfig
 delete mode 100644 arch/ppc/configs/rpxlite_defconfig
 delete mode 100644 arch/ppc/configs/sandpoint_defconfig
 delete mode 100644 arch/ppc/configs/spruce_defconfig
 delete mode 100644 arch/ppc/configs/sycamore_defconfig
 delete mode 100644 arch/ppc/configs/taishan_defconfig
 delete mode 100644 arch/ppc/configs/walnut_defconfig
 delete mode 100644 arch/ppc/kernel/Makefile
 delete mode 100644 arch/ppc/kernel/asm-offsets.c
 delete mode 100644 arch/ppc/kernel/cpu_setup_power4.S
 delete mode 100644 arch/ppc/kernel/entry.S
 delete mode 100644 arch/ppc/kernel/head.S
 delete mode 100644 arch/ppc/kernel/head_44x.S
 delete mode 100644 arch/ppc/kernel/head_4xx.S
 delete mode 100644 arch/ppc/kernel/head_8xx.S
 delete mode 100644 arch/ppc/kernel/head_booke.h
 delete mode 100644 arch/ppc/kernel/machine_kexec.c
 delete mode 100644 arch/ppc/kernel/misc.S
 delete mode 100644 arch/ppc/kernel/pci.c
 delete mode 100644 arch/ppc/kernel/ppc-stub.c
 delete mode 100644 arch/ppc/kernel/ppc_htab.c
 delete mode 100644 arch/ppc/kernel/ppc_ksyms.c
 delete mode 100644 arch/ppc/kernel/relocate_kernel.S
 delete mode 100644 arch/ppc/kernel/setup.c
 delete mode 100644 arch/ppc/kernel/smp-tbsync.c
 delete mode 100644 arch/ppc/kernel/smp.c
 delete mode 100644 arch/ppc/kernel/softemu8xx.c
 delete mode 100644 arch/ppc/kernel/time.c
 delete mode 100644 arch/ppc/kernel/traps.c
 delete mode 100644 arch/ppc/kernel/vmlinux.lds.S
 delete mode 100644 arch/ppc/lib/Makefile
 delete mode 100644 arch/ppc/lib/checksum.S
 delete mode 100644 arch/ppc/lib/div64.S
 delete mode 100644 arch/ppc/lib/locks.c
 delete mode 100644 arch/ppc/lib/string.S
 delete mode 100644 arch/ppc/mm/44x_mmu.c
 delete mode 100644 arch/ppc/mm/4xx_mmu.c
 delete mode 100644 arch/ppc/mm/Makefile
 delete mode 100644 arch/ppc/mm/fault.c
 delete mode 100644 arch/ppc/mm/hashtable.S
 delete mode 100644 arch/ppc/mm/init.c
 delete mode 100644 arch/ppc/mm/mem_pieces.c
 delete mode 100644 arch/ppc/mm/mem_pieces.h
 delete mode 100644 arch/ppc/mm/mmu_context.c
 delete mode 100644 arch/ppc/mm/mmu_decl.h
 delete mode 100644 arch/ppc/mm/pgtable.c
 delete mode 100644 arch/ppc/mm/ppc_mmu.c
 delete mode 100644 arch/ppc/mm/tlb.c
 delete mode 100644 arch/ppc/platforms/4xx/Kconfig
 delete mode 100644 arch/ppc/platforms/4xx/Makefile
 delete mode 100644 arch/ppc/platforms/4xx/bamboo.c
 delete mode 100644 arch/ppc/platforms/4xx/bamboo.h
 delete mode 100644 arch/ppc/platforms/4xx/bubinga.c
 delete mode 100644 arch/ppc/platforms/4xx/bubinga.h
 delete mode 100644 arch/ppc/platforms/4xx/cpci405.c
 delete mode 100644 arch/ppc/platforms/4xx/cpci405.h
 delete mode 100644 arch/ppc/platforms/4xx/ebony.c
 delete mode 100644 arch/ppc/platforms/4xx/ebony.h
 delete mode 100644 arch/ppc/platforms/4xx/ep405.c
 delete mode 100644 arch/ppc/platforms/4xx/ep405.h
 delete mode 100644 arch/ppc/platforms/4xx/ibm405ep.c
 delete mode 100644 arch/ppc/platforms/4xx/ibm405ep.h
 delete mode 100644 arch/ppc/platforms/4xx/ibm405gp.c
 delete mode 100644 arch/ppc/platforms/4xx/ibm405gp.h
 delete mode 100644 arch/ppc/platforms/4xx/ibm405gpr.c
 delete mode 100644 arch/ppc/platforms/4xx/ibm405gpr.h
 delete mode 100644 arch/ppc/platforms/4xx/ibm440ep.c
 delete mode 100644 arch/ppc/platforms/4xx/ibm440ep.h
 delete mode 100644 arch/ppc/platforms/4xx/ibm440gp.c
 delete mode 100644 arch/ppc/platforms/4xx/ibm440gp.h
 delete mode 100644 arch/ppc/platforms/4xx/ibm440gx.c
 delete mode 100644 arch/ppc/platforms/4xx/ibm440gx.h
 delete mode 100644 arch/ppc/platforms/4xx/ibm440sp.c
 delete mode 100644 arch/ppc/platforms/4xx/ibm440sp.h
 delete mode 100644 arch/ppc/platforms/4xx/ibmnp405h.c
 delete mode 100644 arch/ppc/platforms/4xx/ibmnp405h.h
 delete mode 100644 arch/ppc/platforms/4xx/ibmstb4.c
 delete mode 100644 arch/ppc/platforms/4xx/ibmstb4.h
 delete mode 100644 arch/ppc/platforms/4xx/ibmstbx25.c
 delete mode 100644 arch/ppc/platforms/4xx/ibmstbx25.h
 delete mode 100644 arch/ppc/platforms/4xx/luan.c
 delete mode 100644 arch/ppc/platforms/4xx/luan.h
 delete mode 100644 arch/ppc/platforms/4xx/ocotea.c
 delete mode 100644 arch/ppc/platforms/4xx/ocotea.h
 delete mode 100644 arch/ppc/platforms/4xx/ppc440spe.c
 delete mode 100644 arch/ppc/platforms/4xx/ppc440spe.h
 delete mode 100644 arch/ppc/platforms/4xx/redwood5.c
 delete mode 100644 arch/ppc/platforms/4xx/redwood5.h
 delete mode 100644 arch/ppc/platforms/4xx/redwood6.c
 delete mode 100644 arch/ppc/platforms/4xx/redwood6.h
 delete mode 100644 arch/ppc/platforms/4xx/sycamore.c
 delete mode 100644 arch/ppc/platforms/4xx/sycamore.h
 delete mode 100644 arch/ppc/platforms/4xx/taishan.c
 delete mode 100644 arch/ppc/platforms/4xx/taishan.h
 delete mode 100644 arch/ppc/platforms/4xx/virtex.h
 delete mode 100644 arch/ppc/platforms/4xx/walnut.c
 delete mode 100644 arch/ppc/platforms/4xx/walnut.h
 delete mode 100644 arch/ppc/platforms/4xx/xilinx_ml300.c
 delete mode 100644 arch/ppc/platforms/4xx/xilinx_ml403.c
 delete mode 100644 arch/ppc/platforms/4xx/xparameters/xparameters.h
 delete mode 100644 arch/ppc/platforms/4xx/xparameters/xparameters_ml300.h
 delete mode 100644 arch/ppc/platforms/4xx/xparameters/xparameters_ml403.h
 delete mode 100644 arch/ppc/platforms/4xx/yucca.c
 delete mode 100644 arch/ppc/platforms/4xx/yucca.h
 delete mode 100644 arch/ppc/platforms/Makefile
 delete mode 100644 arch/ppc/platforms/bseip.h
 delete mode 100644 arch/ppc/platforms/ccm.h
 delete mode 100644 arch/ppc/platforms/chestnut.c
 delete mode 100644 arch/ppc/platforms/chestnut.h
 delete mode 100644 arch/ppc/platforms/cpci690.c
 delete mode 100644 arch/ppc/platforms/cpci690.h
 delete mode 100644 arch/ppc/platforms/est8260.h
 delete mode 100644 arch/ppc/platforms/ev64260.c
 delete mode 100644 arch/ppc/platforms/ev64260.h
 delete mode 100644 arch/ppc/platforms/ev64360.c
 delete mode 100644 arch/ppc/platforms/ev64360.h
 delete mode 100644 arch/ppc/platforms/fads.h
 delete mode 100644 arch/ppc/platforms/hdpu.c
 delete mode 100644 arch/ppc/platforms/hdpu.h
 delete mode 100644 arch/ppc/platforms/hermes.h
 delete mode 100644 arch/ppc/platforms/ip860.h
 delete mode 100644 arch/ppc/platforms/ivms8.h
 delete mode 100644 arch/ppc/platforms/katana.c
 delete mode 100644 arch/ppc/platforms/katana.h
 delete mode 100644 arch/ppc/platforms/lantec.h
 delete mode 100644 arch/ppc/platforms/lite5200.c
 delete mode 100644 arch/ppc/platforms/lite5200.h
 delete mode 100644 arch/ppc/platforms/lopec.c
 delete mode 100644 arch/ppc/platforms/lopec.h
 delete mode 100644 arch/ppc/platforms/lwmon.h
 delete mode 100644 arch/ppc/platforms/mbx.h
 delete mode 100644 arch/ppc/platforms/mpc866ads_setup.c
 delete mode 100644 arch/ppc/platforms/mvme5100.c
 delete mode 100644 arch/ppc/platforms/mvme5100.h
 delete mode 100644 arch/ppc/platforms/pal4.h
 delete mode 100644 arch/ppc/platforms/pal4_pci.c
 delete mode 100644 arch/ppc/platforms/pal4_serial.h
 delete mode 100644 arch/ppc/platforms/pal4_setup.c
 delete mode 100644 arch/ppc/platforms/pcu_e.h
 delete mode 100644 arch/ppc/platforms/powerpmc250.c
 delete mode 100644 arch/ppc/platforms/powerpmc250.h
 delete mode 100644 arch/ppc/platforms/pplus.c
 delete mode 100644 arch/ppc/platforms/pplus.h
 delete mode 100644 arch/ppc/platforms/prep_pci.c
 delete mode 100644 arch/ppc/platforms/prep_setup.c
 delete mode 100644 arch/ppc/platforms/prpmc750.c
 delete mode 100644 arch/ppc/platforms/prpmc750.h
 delete mode 100644 arch/ppc/platforms/prpmc800.c
 delete mode 100644 arch/ppc/platforms/prpmc800.h
 delete mode 100644 arch/ppc/platforms/radstone_ppc7d.c
 delete mode 100644 arch/ppc/platforms/radstone_ppc7d.h
 delete mode 100644 arch/ppc/platforms/residual.c
 delete mode 100644 arch/ppc/platforms/rpx8260.h
 delete mode 100644 arch/ppc/platforms/rpxclassic.h
 delete mode 100644 arch/ppc/platforms/rpxlite.h
 delete mode 100644 arch/ppc/platforms/sandpoint.c
 delete mode 100644 arch/ppc/platforms/sandpoint.h
 delete mode 100644 arch/ppc/platforms/sbc82xx.c
 delete mode 100644 arch/ppc/platforms/sbc82xx.h
 delete mode 100644 arch/ppc/platforms/sbs8260.h
 delete mode 100644 arch/ppc/platforms/spruce.c
 delete mode 100644 arch/ppc/platforms/spruce.h
 delete mode 100644 arch/ppc/platforms/tqm8260.h
 delete mode 100644 arch/ppc/platforms/tqm8260_setup.c
 delete mode 100644 arch/ppc/platforms/tqm8xx.h
 delete mode 100644 arch/ppc/syslib/Makefile
 delete mode 100644 arch/ppc/syslib/btext.c
 delete mode 100644 arch/ppc/syslib/cpc700.h
 delete mode 100644 arch/ppc/syslib/cpc700_pic.c
 delete mode 100644 arch/ppc/syslib/cpm2_common.c
 delete mode 100644 arch/ppc/syslib/cpm2_pic.c
 delete mode 100644 arch/ppc/syslib/cpm2_pic.h
 delete mode 100644 arch/ppc/syslib/gen550.h
 delete mode 100644 arch/ppc/syslib/gen550_dbg.c
 delete mode 100644 arch/ppc/syslib/gen550_kgdb.c
 delete mode 100644 arch/ppc/syslib/gt64260_pic.c
 delete mode 100644 arch/ppc/syslib/harrier.c
 delete mode 100644 arch/ppc/syslib/hawk_common.c
 delete mode 100644 arch/ppc/syslib/i8259.c
 delete mode 100644 arch/ppc/syslib/ibm440gp_common.c
 delete mode 100644 arch/ppc/syslib/ibm440gp_common.h
 delete mode 100644 arch/ppc/syslib/ibm440gx_common.c
 delete mode 100644 arch/ppc/syslib/ibm440gx_common.h
 delete mode 100644 arch/ppc/syslib/ibm440sp_common.c
 delete mode 100644 arch/ppc/syslib/ibm440sp_common.h
 delete mode 100644 arch/ppc/syslib/ibm44x_common.c
 delete mode 100644 arch/ppc/syslib/ibm44x_common.h
 delete mode 100644 arch/ppc/syslib/ibm_ocp.c
 delete mode 100644 arch/ppc/syslib/indirect_pci.c
 delete mode 100644 arch/ppc/syslib/m8260_pci_erratum9.c
 delete mode 100644 arch/ppc/syslib/m8260_setup.c
 delete mode 100644 arch/ppc/syslib/m82xx_pci.c
 delete mode 100644 arch/ppc/syslib/m82xx_pci.h
 delete mode 100644 arch/ppc/syslib/m8xx_setup.c
 delete mode 100644 arch/ppc/syslib/m8xx_wdt.c
 delete mode 100644 arch/ppc/syslib/m8xx_wdt.h
 delete mode 100644 arch/ppc/syslib/mpc10x_common.c
 delete mode 100644 arch/ppc/syslib/mpc52xx_devices.c
 delete mode 100644 arch/ppc/syslib/mpc52xx_pci.c
 delete mode 100644 arch/ppc/syslib/mpc52xx_pci.h
 delete mode 100644 arch/ppc/syslib/mpc52xx_pic.c
 delete mode 100644 arch/ppc/syslib/mpc52xx_setup.c
 delete mode 100644 arch/ppc/syslib/mpc52xx_sys.c
 delete mode 100644 arch/ppc/syslib/mpc8xx_devices.c
 delete mode 100644 arch/ppc/syslib/mpc8xx_sys.c
 delete mode 100644 arch/ppc/syslib/mv64360_pic.c
 delete mode 100644 arch/ppc/syslib/mv64x60.c
 delete mode 100644 arch/ppc/syslib/mv64x60_dbg.c
 delete mode 100644 arch/ppc/syslib/mv64x60_win.c
 delete mode 100644 arch/ppc/syslib/ocp.c
 delete mode 100644 arch/ppc/syslib/open_pic.c
 delete mode 100644 arch/ppc/syslib/open_pic2.c
 delete mode 100644 arch/ppc/syslib/open_pic_defs.h
 delete mode 100644 arch/ppc/syslib/pci_auto.c
 delete mode 100644 arch/ppc/syslib/ppc403_pic.c
 delete mode 100644 arch/ppc/syslib/ppc405_pci.c
 delete mode 100644 arch/ppc/syslib/ppc440spe_pcie.c
 delete mode 100644 arch/ppc/syslib/ppc440spe_pcie.h
 delete mode 100644 arch/ppc/syslib/ppc4xx_dma.c
 delete mode 100644 arch/ppc/syslib/ppc4xx_pic.c
 delete mode 100644 arch/ppc/syslib/ppc4xx_setup.c
 delete mode 100644 arch/ppc/syslib/ppc4xx_sgdma.c
 delete mode 100644 arch/ppc/syslib/ppc8xx_pic.c
 delete mode 100644 arch/ppc/syslib/ppc8xx_pic.h
 delete mode 100644 arch/ppc/syslib/ppc_sys.c
 delete mode 100644 arch/ppc/syslib/pq2_devices.c
 delete mode 100644 arch/ppc/syslib/pq2_sys.c
 delete mode 100644 arch/ppc/syslib/prep_nvram.c
 delete mode 100644 arch/ppc/syslib/qspan_pci.c
 delete mode 100644 arch/ppc/syslib/todc_time.c
 delete mode 100644 arch/ppc/syslib/virtex_devices.c
 delete mode 100644 arch/ppc/syslib/virtex_devices.h
 delete mode 100644 arch/ppc/syslib/xilinx_pic.c
 delete mode 100644 arch/ppc/xmon/Makefile
 delete mode 100644 arch/ppc/xmon/ansidecl.h
 delete mode 100644 arch/ppc/xmon/nonstdio.h
 delete mode 100644 arch/ppc/xmon/ppc-dis.c
 delete mode 100644 arch/ppc/xmon/ppc-opc.c
 delete mode 100644 arch/ppc/xmon/ppc.h
 delete mode 100644 arch/ppc/xmon/privinst.h
 delete mode 100644 arch/ppc/xmon/setjmp.c
 delete mode 100644 arch/ppc/xmon/start.c
 delete mode 100644 arch/ppc/xmon/start_8xx.c
 delete mode 100644 arch/ppc/xmon/subr_prf.c
 delete mode 100644 arch/ppc/xmon/xmon.c
 create mode 100644 drivers/char/bsr.c
 delete mode 100644 drivers/net/fec_8xx/Kconfig
 delete mode 100644 drivers/net/fec_8xx/Makefile
 delete mode 100644 drivers/net/fec_8xx/fec_8xx-netta.c
 delete mode 100644 drivers/net/fec_8xx/fec_8xx.h
 delete mode 100644 drivers/net/fec_8xx/fec_main.c
 delete mode 100644 drivers/net/fec_8xx/fec_mii.c
 create mode 100644 include/asm-powerpc/code-patching.h
 create mode 100644 include/asm-powerpc/dcr-generic.h
 create mode 100644 include/asm-powerpc/feature-fixups.h
 create mode 100644 include/asm-powerpc/fsl_gtm.h
 create mode 100644 include/asm-powerpc/mpc6xx.h
 delete mode 100644 include/asm-ppc/8xx_immap.h
 delete mode 100644 include/asm-ppc/amigayle.h
 delete mode 100644 include/asm-ppc/amipcmcia.h
 delete mode 100644 include/asm-ppc/bootinfo.h
 delete mode 100644 include/asm-ppc/bootx.h
 delete mode 100644 include/asm-ppc/btext.h
 delete mode 100644 include/asm-ppc/cpm1.h
 delete mode 100644 include/asm-ppc/cpm2.h
 delete mode 100644 include/asm-ppc/delay.h
 delete mode 100644 include/asm-ppc/device.h
 delete mode 100644 include/asm-ppc/floppy.h
 delete mode 100644 include/asm-ppc/fs_pd.h
 delete mode 100644 include/asm-ppc/gg2.h
 delete mode 100644 include/asm-ppc/gt64260.h
 delete mode 100644 include/asm-ppc/gt64260_defs.h
 delete mode 100644 include/asm-ppc/harrier.h
 delete mode 100644 include/asm-ppc/hawk.h
 delete mode 100644 include/asm-ppc/hawk_defs.h
 delete mode 100644 include/asm-ppc/highmem.h
 delete mode 100644 include/asm-ppc/hydra.h
 delete mode 100644 include/asm-ppc/ibm403.h
 delete mode 100644 include/asm-ppc/ibm405.h
 delete mode 100644 include/asm-ppc/ibm44x.h
 delete mode 100644 include/asm-ppc/ibm4xx.h
 delete mode 100644 include/asm-ppc/ibm_ocp.h
 delete mode 100644 include/asm-ppc/ibm_ocp_pci.h
 delete mode 100644 include/asm-ppc/immap_cpm2.h
 delete mode 100644 include/asm-ppc/io.h
 delete mode 100644 include/asm-ppc/irq_regs.h
 delete mode 100644 include/asm-ppc/kdebug.h
 delete mode 100644 include/asm-ppc/kgdb.h
 delete mode 100644 include/asm-ppc/m8260_pci.h
 delete mode 100644 include/asm-ppc/machdep.h
 delete mode 100644 include/asm-ppc/md.h
 delete mode 100644 include/asm-ppc/mk48t59.h
 delete mode 100644 include/asm-ppc/mmu.h
 delete mode 100644 include/asm-ppc/mmu_context.h
 delete mode 100644 include/asm-ppc/mpc10x.h
 delete mode 100644 include/asm-ppc/mpc52xx.h
 delete mode 100644 include/asm-ppc/mpc52xx_psc.h
 delete mode 100644 include/asm-ppc/mpc8260.h
 delete mode 100644 include/asm-ppc/mpc8260_pci9.h
 delete mode 100644 include/asm-ppc/mpc8xx.h
 delete mode 100644 include/asm-ppc/mv64x60.h
 delete mode 100644 include/asm-ppc/mv64x60_defs.h
 delete mode 100644 include/asm-ppc/ocp.h
 delete mode 100644 include/asm-ppc/ocp_ids.h
 delete mode 100644 include/asm-ppc/open_pic.h
 delete mode 100644 include/asm-ppc/page.h
 delete mode 100644 include/asm-ppc/pc_serial.h
 delete mode 100644 include/asm-ppc/pci-bridge.h
 delete mode 100644 include/asm-ppc/pci.h
 delete mode 100644 include/asm-ppc/pgalloc.h
 delete mode 100644 include/asm-ppc/pgtable.h
 delete mode 100644 include/asm-ppc/pnp.h
 delete mode 100644 include/asm-ppc/ppc4xx_dma.h
 delete mode 100644 include/asm-ppc/ppc4xx_pic.h
 delete mode 100644 include/asm-ppc/ppc_sys.h
 delete mode 100644 include/asm-ppc/ppcboot.h
 delete mode 100644 include/asm-ppc/prep_nvram.h
 delete mode 100644 include/asm-ppc/prom.h
 delete mode 100644 include/asm-ppc/raven.h
 delete mode 100644 include/asm-ppc/reg_booke.h
 delete mode 100644 include/asm-ppc/residual.h
 delete mode 100644 include/asm-ppc/rtc.h
 delete mode 100644 include/asm-ppc/serial.h
 delete mode 100644 include/asm-ppc/smp.h
 delete mode 100644 include/asm-ppc/spinlock.h
 delete mode 100644 include/asm-ppc/suspend.h
 delete mode 100644 include/asm-ppc/system.h
 delete mode 100644 include/asm-ppc/time.h
 delete mode 100644 include/asm-ppc/todc.h
 delete mode 100644 include/asm-ppc/traps.h
 delete mode 100644 include/asm-ppc/zorro.h

Adrian Bunk (3):
      drivers/macintosh: Various cleanups
      powerpc: Don't export asm/asm-compat.h to userspace
      powerpc: asm/elf.h: Reduce userspace header

Andre Schwarz (1):
      powerpc/mpc5200: PCI write combine timer

Andrew Lewis (1):
      powerpc: Prevent memory corruption due to cache invalidation of unaligned DMA buffer

Andy Whitcroft (1):
      powerpc: Add 64 bit version of huge_ptep_set_wrprotect

Anton Vorontsov (13):
      [POWERPC] of/gpio: Use dynamic base allocation
      [POWERPC] fsl_msi: few (mostly cosmetic) fixes
      powerpc/mpic: Fix ambiguous else statement
      powerpc/sysdev: implement FSL GTM support
      powerpc/QE: add support for QE USB clocks routing
      powerpc/QE: prepare QE PIO code for GPIO LIB support
      powerpc/QE: implement support for the GPIO LIB API
      powerpc/83xx: new board support: MPC8360E-RDK
      powerpc/QE: switch to the cpm_muram implementation
      powerpc/QE: qe_reset should be __init
      powerpc/QE: use arch_initcall to probe QUICC Engine GPIOs
      powerpc: Implement OF PCI address accessors stubs for CONFIG_PCI=n
      powerpc/86xx: mpc8610_hpcd: fix interrupt trigger type for ULi IDE

Arnd Bergmann (5):
      powerpc: Provide dummy crash_shutdown_register
      powerpc/pseries: Call pseries_kexec_setup only on pseries
      powerpc/cell: Disable ptcal in case of crash kdump
      powerpc: Increase CRASH_HANDLER_MAX
      powerpc: support for latencytop

Bart Van Assche (1):
      powerpc: Make sure that include/asm-powerpc/spinlock.h does not trigger compilation warnings

Becky Bruce (4):
      [POWERPC] Delete unused fec_8xx net driver
      powerpc: Silly spelling fix in pgtable-ppc32
      powerpc: Change BAT code to use phys_addr_t
      powerpc: Get rid of bitfields in ppc_bat struct

Benjamin Herrenschmidt (3):
      powerpc: Free a PTE bit on ppc64 with 64K pages
      powerpc: Use new printk extension %pS to print symbols on oops
      powerpc: rework 4xx PTE access and TLB miss

Bernhard Walle (1):
      powerpc: Remove experimental status of kdump on 64-bit powerpc

Bryan O'Donoghue (1):
      [POWERPC] 83xx: Add support for Analogue & Micro ASP837E board

Daniel Walker (2):
      macintosh/therm_windtunnel: Convert semaphore to mutex
      macintosh/media bay: Convert semaphore to mutex

Dave Jiang (1):
      powerpc/85xx: publish of device for cds platforms

Dave Kleikamp (7):
      powerpc: hash_huge_page() should get the WIMG bits from the lpte
      mm: Allow architectures to define additional protection bits
      powerpc/mm: Define flags for Strong Access Ordering
      powerpc/mm: Add SAO Feature bit to the cputable
      powerpc/mm: Add Strong Access Ordering support
      powerpc/mm: Don't clear _PAGE_COHERENT when _PAGE_SAO is set
      powerpc: Remove unnecessary condition when sanity-checking WIMG bits

David Gibson (1):
      [POWERPC] Convert remaining dts-v0 files to v1

Emil Medve (1):
      powerpc: Add the PC speaker only when requested

Eric B Munson (1):
      powerpc: Keep 3 high personality bytes across exec

Geoff Levand (1):
      powerpc/ps3: Quiet system bus match output

Giuseppe Coviello (2):
      powerpc/4xx: Sam440ep support
      powerpc/4xx: Convert Sam440ep DTS to dts-v1

Grant Erickson (2):
      ibm_newemac: Parameterize EMAC Multicast Match Handling
      ibm_newemac: Add MII mode support to the EMAC RGMII bridge.

Grant Likely (7):
      powerpc/bootwrapper: Add documentation of boot wrapper targets
      powerpc/bootwrapper: add missing bit of simpleImage target
      powerpc/bootwrapper: Allow user to specify additional default targets
      powerpc/440: Convert Virtex ML507 device tree to dts-v1
      powerpc/mpc5200: Add PSC helpers for bestcomm engine
      powerpc/mpc5200: fix compile warnings in bestcomm driver
      powerpc: Modify MPC52xx maintainers entry to cover all MPC5xxx parts

Imre Kaloz (1):
      powerpc/4xx: MTD support for the AMCC Taishan Board

Jason Jin (5):
      [POWERPC] Update booting-without-of for Freescale PCIe MSI
      [POWERPC] fsl: PCIe MSI support for 83xx/85xx/86xx processors.
      [POWERPC] 86xx: Enable MSI support for MPC8610HPCD board
      [POWERPC] 85xx: Enable MSI support for 85xxds board
      powerpc/85xx: Minor fixes for 85xxds and 8536ds board.

Jeremy Kerr (4):
      powerpc/spufs: avoid magic numbers for mapping sizes
      powerpc/spufs: allow spufs files to specify sizes
      powerpc/spufs: add sizes for context files
      powerpc/spufs: only add ".ctx" file with "debug" mount option

Jerone Young (1):
      powerpc/booke: Fix definitions for dbcr[1-2] and dbsr registers

Jochen Friedrich (1):
      powerpc/CPM: Add i2c pins to dts and board setup

Joel Schopp (2):
      powerpc: Add cputable entry for Power7 architected mode
      powerpc: Tell firmware we support architecture V2.06

John Linn (5):
      powerpc/virtex: add dts file for ML507 reference design
      powerpc/virtex: Fix booting of Xilinx FPGAs with 16550 for 405 and 440
      powerpc/virtex: add Xilinx Virtex 5 ppc440 platform support
      powerpc/virtex: add Xilinx 440 cpu to the cputable
      powerpc/virtex: add defconfig for virtex 5 platforms

John Rigby (4):
      powerpc/mpc5121: Update device tree for MPC5121ADS evaluation board
      powerpc/mpc5121: Add clock driver
      powerpc/mpc5121: Add generic board support for MPC5121 platforms
      powerpc/mpc5121: Add support for CPLD on MPC5121ADS board

Jon Smirl (1):
      powerpc/i2c: Convert i2c-mpc into an of_platform driver

Josh Boyer (5):
      [POWERPC] 4xx: Fix PCI mem in rainier DTS
      [POWERPC] 4xx: Fix compiler warning on DCR_NATIVE only builds
      Revert "[POWERPC] 4xx: Fix 460GT support to not enable FPU"
      powerpc/4xx: Workaround for PPC440EPx/GRx PCI_28 Errata
      powerpc/44x: Update ppc44x_defconfig

Julia Lawall (1):
      drivers/macintosh/smu.c: Improve error handling

Kim Phillips (1):
      powerpc/fsl: update crypto node definition and device tree instances

Kumar Gala (29):
      [POWERPC] Set lower flag bits in regs->trap to indicate debug level exception
      [POWERPC] mpic: Deal with bogus NIRQ in Feature Reporting Register
      [POWERPC] Cleanup mpic nodes in .dts
      [POWERPC] 85xx: Add next-level-cache property
      [POWERPC] Move to runtime allocated exception stacks
      [POWERPC] Rework EXC_LEVEL_EXCEPTION_PROLOG code
      [POWERPC] 40x/Book-E: Save/restore volatile exception registers
      powerpc/booke: Fix some comments related to debug level exceptions
      powerpc/booke: Add support for new e500mc core
      powerpc/85xx: add DOZE/NAP support for e500 core
      powerpc/e500mc: flush L2 on NAP for e500mc
      cpm_uart: fix whitespace issues
      cpm_uart: Remove !CONFIG_PPC_CPM_NEW_BINDING code
      powerpc/cpm: Remove !CONFIG_PPC_CPM_NEW_BINDING code
      powerpc/kprobes: Some minor fixes
      powerpc/booke: Add kprobes support for booke style processors
      powerpc: Add dma nodes to 83xx, 85xx and 86xx boards
      powerpc: Move common module code into its own file
      powerpc/bootwrapper: Pad .dtb by default
      powerpc: Fix building of feature-fixup tests on ppc32
      powerpc: Fixup lwsync at runtime
      powerpc/85xx: Fix KSI8560 .dts
      powerpc/85xx: minor fixes for MPC85xx DS board port
      powerpc/85xx: Add support for MPC8536DS
      powerpc/86xx: Refactor pic init
      powerpc/booke: don't reinitialize time base
      powerpc: Add 82xx/83xx/86xx to 6xx Multiplatform
      powerpc/fsl: Refactor device bindings
      powerpc: Fix pte_update for CONFIG_PTE_64BIT and !PTE_ATOMIC_UPDATES

Laurent Pinchart (1):
      cpm_uart: Support uart_wait_until_sent()

Luke Browning (2):
      powerpc/spufs: provide context debug file
      powerpc/spufs: don't extend time time slice if context is not in spu_run

Mark Nelson (4):
      powerpc/dma: Add struct iommu_table argument to iommu_map_sg()
      powerpc/dma: implement new dma_*map*_attrs() interfaces
      powerpc/cell: cell_dma_dev_setup_iommu() return the iommu table
      powerpc: move device_to_mask() to dma-mapping.h

Maxim Shchetynin (1):
      powerpc/spufs: add atomic busy_spus counter to struct cbe_spu_info

Michael Ellerman (32):
      [POWERPC] Move declaration of init_bootmem_done into system.h
      [POWERPC] Fix sparse warnings in arch/powerpc/mm
      [POWERPC] Move declaration of tce variables into mmu-hash64.h
      [POWERPC] Remove duplicate variable definitions in mm/tlb_64.c
      [POWERPC] sysdev/mpic_msi.c should include sysdev/mpic.h
      [POWERPC] Add a declaration for xmon()
      [POWERPC] Move xmon_irq() declaration into xmon.h
      [POWERPC] Fix sparse warnings in xmon.c
      [POWERPC] Make cpus_in_xmon static and remove extern mess from hvc_console.c
      [POWERPC] Fix sparse warnings in arch/powerpc/kernel
      [POWERPC] pseries/firmware.c should include pseries/pseries.h
      [POWERPC] Fix sparse warnings in arch/powerpc/platforms/pseries
      [POWERPC] Add debugging trigger to Axon MSI code
      [POWERPC] Remove unnecessary cast in arch_deref_entry_point()
      powerpc: Rework Axon MSI setup so we can avoid freeing the irq_host
      powerpc: Rework ipic_init() so we can avoid freeing the irq_host
      powerpc: Rework qe_ic_init() so we can avoid freeing the irq_host
      powerpc: Fix irq_alloc_host() reference counting and callers
      powerpc: Move code patching code into arch/powerpc/lib/code-patching.c
      powerpc: Allow create_branch() to return errors
      powerpc: Make create_branch() return errors if the branch target is too large
      powerpc: Add ppc_function_entry() which gets the entry point for a function
      powerpc: Add new code patching routines
      powerpc: Add tests of the code patching routines
      powerpc: Add PPC_NOP_INSTR, a hash define for the preferred nop instruction
      powerpc: Split out do_feature_fixups() from cputable.c
      powerpc: Consolidate CPU and firmware feature fixup macros
      powerpc: Consolidate feature fixup macros for 64/32 bit
      powerpc: Introduce infrastructure for feature sections with alternatives
      powerpc: Add logic to patch alternative feature sections
      powerpc: Add self-tests of the feature fixup code
      powerpc: Use an alternative feature section in entry_64.S

Michael Neuling (19):
      powerpc: Add cputable entry for POWER7
      powerpc: Fix MSR setting in 32 bit signal code
      powerpc: Add macros to access floating point registers in thread_struct.
      powerpc: Move altivec_unavailable
      powerpc: Make load_up_fpu and load_up_altivec callable
      powerpc: Introduce VSX thread_struct and CONFIG_VSX
      powerpc: Add VSX CPU feature
      powerpc: Add VSX assembler code macros
      powerpc: Add VSX context save/restore, ptrace and signal support
      powerpc: Add CONFIG_VSX config option
      powerpc: Fix compile error for CONFIG_VSX
      powerpc: Update for VSX core file and ptrace
      powerpc: Fix compile warning in init_thread
      powerpc: Clean up copy_to/from_user for vsx and fpr
      powerpc: Remove old dump_task_* functions
      powerpc: fix swapcontext backwards compat. with VSX ucontext changes
      powerpc: remove unused variable in emulate_fp_pair
      powerpc: fix giveup_vsx to save registers correctly
      powerpc: Add VSX load/store alignment exception handler

Mike Mason (1):
      powerpc/eeh: PERR/SERR bit settings during EEH device recovery

Nathan Fontenot (5):
      powerpc/pseries: Allow phandle to be specified in formats other than decimal
      powerpc/pseries: Use base address to derive starting page frame number
      powerpc/pseries: Update the device tree correctly for drconf memory add/remove
      powerpc/pseries: Split code into helper routines for drconf memory
      powerpc/pseries: Update numa association of hotplug memory add for drconf memory

Nathan Lynch (1):
      powerpc: Add PPC_FEATURE_PSERIES_PERFMON_COMPAT

Nick Piggin (2):
      powerpc: Optimise smp_wmb on 64-bit processors
      spufs: Convert nopfn to fault

Nye Liu (1):
      powerpc/CPM: Minor cosmetic changes to udbg_putc

Olaf Hering (1):
      [POWERPC] Create modalias file in sysfs for of_platform bus

Paul Gortmaker (1):
      powerpc/ibmebus: more meaningful variable name

Paul Mackerras (3):
      [POWERPC] Defer processing of interrupts when the CPU wakes from sleep mode
      powerpc: Remove arch/ppc and include/asm-ppc
      powerpc: Only demote individual slices rather than whole process

Remi Machet (6):
      [POWERPC] Create of_buses for MV64x60 devices
      powerpc: DTS file for the C2K
      powerpc: Boot code for the C2K
      powerpc: C2K board driver
      powerpc: Default configuration for C2K
      powerpc: Add C2K to configuration

Robert P. J. Day (2):
      [POWERPC] Get most of ioctl.h content from <asm-generic/ioctl.h>
      OpenFirmware: Include <linux/of_i2c.h> from of_i2c.c.

Roel Kluin (2):
      [POWERPC] mpic_pasemi_msi: Failed allocation unnoticed
      [POWERPC] mpic_u3msi: Failed allocation unnoticed

Roland McGrath (2):
      [POWERPC] Define and use TLF_RESTORE_SIGMASK
      [POWERPC] Tweak VDSO linker script to avoid upsetting old binutils

Rune Torgersen (3):
      powerpc: Check that TASK_SIZE does not overlap KERNEL_START
      cpm_uart: Fix cpm uart corruption with PREEMPT_RT
      powerpc: Fix pq2fads irq handling with PREEMPT_RT

Scott Wood (2):
      [POWERPC] Add 6xx-style HID0_SLEEP support.
      powerpc: Fix copy-and-paste error in clrsetbits_le16

Sean MacLennan (3):
      [POWERPC] PIKA Warp: Update DTS to support Rev B boards
      [POWERPC] PIKA Warp: Update platform code to support Rev B boards
      powerpc/44x: Support NAND boot for Rev A Warp boards

Segher Boessenkool (1):
      powerpc: Get rid of CROSS32{AS,LD,OBJCOPY}

Sonny Rao (2):
      powerpc: Add driver for Barrier Synchronization Register
      powerpc: Don't spin on sync instruction at boot time

Srinivasa Ds (1):
      powerpc: Implement task_pt_regs() accessor

Stefan Roese (2):
      powerpc/4xx: PCIe driver now detects if a port is disabled via the dev-tree
      powerpc: Fix problems with 32bit PPC's running with >= 4GB of RAM

Stephen Neuendorffer (1):
      [POWERPC] Refactor DCR code

Stephen Rothwell (14):
      [POWERPC] Move of_device_get_modalias to drivers/of
      of_serial: Use linux/of_platform.h instead of asm
      platinumfb: Use linux/of_{device,platform}.h instead of asm
      viotape: Use unlocked_ioctl
      pasemi-rng: Use linux/of_platform.h instead of asm
      hwmon: Use linux/of_platform.h instead of asm
      macintosh: Use linux/of_{device,platform}.h instead of asm
      drivers/net: Use linux/of_{device,platform}.h instead of asm
      pcmcia: Use linux/of_{device,platform}.h instead of asm
      powerpc: Explicitly copy elements of pt_regs
      powerpc/pata_mpc52xx: use linux/of_platform.h instead of asm
      powerpc/mpc52xx_psc_spi: use linux/of_platform.h instead of asm
      powerpc/mpc5200_wdt: use linux/of_platform.h instead of asm
      powerpc: mman.h export fixups

Takashi Iwai (1):
      powerpc: Fix a build problem on ppc32 with new DMA_ATTRs

Timur Tabi (3):
      [POWERPC] fsl: Add warning for unrecognized I2C nodes in the device tree
      [POWERPC] fsl: Add CS4270 i2c data to fsl_soc.c
      [POWERPC] fsl: Update fsl_soc to use cell-index property of I2C nodes

Tony Breeds (2):
      powerpc: Change the default link address for pSeries zImage kernels
      powerpc: Fix building of arch/powerpc/mm/mem.o when MEMORY_HOTPLUG=y and SPARSEMEM=n

Trent Piepho (1):
      powerpc: Improve (in|out)_[bl]eXX() asm code

Valentine Barshak (1):
      powerpc/4xx: Fix resource issue in warp-nand.c

Vitaly Bordug (1):
      powerpc/85xx: Update pin setup for 8560ads

Wolfgang Grandegger (6):
      powerpc/85xx: correct vendor prefix in DTS files for TQM85xx modules
      powerpc/85xx: add board support for the TQM8548 modules
      powerpc/85xx: support for the TQM8548 module using the big Flash
      powerpc/85xx: add local bus nodes for Flash and CAN to tqm8560.dts
      powerpc/mpc5200: add missing MSCAN FDT nodes for TQM52xx
      powerpc/85xx: TQM8548: add missing support for RTC and LM75

^ permalink raw reply

* [git pull] Please pull from powerpc.git merge branch
From: Benjamin Herrenschmidt @ 2008-07-16  1:34 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linuxppc-dev list, akpm, Linux Kernel list

Linus,

I apologize in advance for the couple of merge commits in there. I
merged your tree yesterday in order to fix a (fairly minor) conflict,
and waited for our autobuilder to test a whole bunch of configs
overnight before asking you to pull, at which point, sfr informed me of
a bunch of this time non-trivial conflicts with whatever you pulled in
the meantime...

So here it is with 2 merge csets at the top, I'll try to do better next
time. I don't want to rebase or my sub-maintainers will hate me.

So please pull from:

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

This is the first batch of powerpc merges for this merge window.
There's a few morsels left for a second batch, probably next week, but
let's get that one in first. Note that it removes arch/ppc (finally !)

Thanks,
Ben.

 Documentation/kprobes.txt                          |    1 
 Documentation/powerpc/booting-without-of.txt       | 1082 --------
 Documentation/powerpc/bootwrapper.txt              |  141 +
 Documentation/powerpc/dts-bindings/fsl/board.txt   |   29 
 .../powerpc/dts-bindings/fsl/cpm_qe/cpm.txt        |   67 +
 .../powerpc/dts-bindings/fsl/cpm_qe/cpm/brg.txt    |   21 
 .../powerpc/dts-bindings/fsl/cpm_qe/cpm/i2c.txt    |   41 
 .../powerpc/dts-bindings/fsl/cpm_qe/cpm/pic.txt    |   18 
 .../powerpc/dts-bindings/fsl/cpm_qe/cpm/usb.txt    |   15 
 .../powerpc/dts-bindings/fsl/cpm_qe/network.txt    |   45 
 .../powerpc/dts-bindings/fsl/cpm_qe/qe.txt         |   58 
 .../dts-bindings/fsl/cpm_qe/qe/firmware.txt        |   24 
 .../powerpc/dts-bindings/fsl/cpm_qe/qe/par_io.txt  |   51 
 .../powerpc/dts-bindings/fsl/cpm_qe/qe/pincfg.txt  |   60 +
 .../powerpc/dts-bindings/fsl/cpm_qe/qe/ucc.txt     |   70 +
 .../powerpc/dts-bindings/fsl/cpm_qe/qe/usb.txt     |   22 
 .../powerpc/dts-bindings/fsl/cpm_qe/serial.txt     |   21 
 Documentation/powerpc/dts-bindings/fsl/diu.txt     |   18 
 Documentation/powerpc/dts-bindings/fsl/dma.txt     |  127 +
 Documentation/powerpc/dts-bindings/fsl/gtm.txt     |   31 
 Documentation/powerpc/dts-bindings/fsl/guts.txt    |   25 
 Documentation/powerpc/dts-bindings/fsl/i2c.txt     |   32 
 Documentation/powerpc/dts-bindings/fsl/lbc.txt     |   35 
 Documentation/powerpc/dts-bindings/fsl/msi-pic.txt |   36 
 Documentation/powerpc/dts-bindings/fsl/sata.txt    |   29 
 Documentation/powerpc/dts-bindings/fsl/sec.txt     |   68 +
 Documentation/powerpc/dts-bindings/fsl/spi.txt     |   24 
 Documentation/powerpc/dts-bindings/fsl/ssi.txt     |   38 
 Documentation/powerpc/dts-bindings/fsl/tsec.txt    |   69 +
 Documentation/powerpc/dts-bindings/fsl/usb.txt     |   59 
 MAINTAINERS                                        |    4 
 Makefile                                           |    1 
 arch/powerpc/Kconfig                               |   27 
 arch/powerpc/Kconfig.debug                         |   10 
 arch/powerpc/Makefile                              |   23 
 arch/powerpc/boot/Makefile                         |   13 
 arch/powerpc/boot/addnote.c                        |    2 
 arch/powerpc/boot/cuboot-c2k.c                     |  190 +
 arch/powerpc/boot/cuboot-sam440ep.c                |   49 
 arch/powerpc/boot/cuboot-warp.c                    |   47 
 arch/powerpc/boot/dts/asp834x-redboot.dts          |  282 ++
 arch/powerpc/boot/dts/bamboo.dts                   |  142 +
 arch/powerpc/boot/dts/c2k.dts                      |  371 +++
 arch/powerpc/boot/dts/canyonlands.dts              |  226 +-
 arch/powerpc/boot/dts/ebony.dts                    |  164 +
 arch/powerpc/boot/dts/ep405.dts                    |  100 -
 arch/powerpc/boot/dts/glacier.dts                  |  262 +-
 arch/powerpc/boot/dts/haleakala.dts                |  138 +
 arch/powerpc/boot/dts/holly.dts                    |  122 -
 arch/powerpc/boot/dts/katmai.dts                   |  210 +-
 arch/powerpc/boot/dts/kilauea.dts                  |  186 +
 arch/powerpc/boot/dts/ksi8560.dts                  |   64 
 arch/powerpc/boot/dts/makalu.dts                   |  186 +
 arch/powerpc/boot/dts/mpc5121ads.dts               |  310 ++
 arch/powerpc/boot/dts/mpc7448hpc2.dts              |    2 
 arch/powerpc/boot/dts/mpc8272ads.dts               |   32 
 arch/powerpc/boot/dts/mpc8313erdb.dts              |   50 
 arch/powerpc/boot/dts/mpc8315erdb.dts              |   50 
 arch/powerpc/boot/dts/mpc832x_mds.dts              |   50 
 arch/powerpc/boot/dts/mpc832x_rdb.dts              |   86 -
 arch/powerpc/boot/dts/mpc8349emitx.dts             |   47 
 arch/powerpc/boot/dts/mpc8349emitxgp.dts           |   47 
 arch/powerpc/boot/dts/mpc834x_mds.dts              |   50 
 arch/powerpc/boot/dts/mpc836x_mds.dts              |   48 
 arch/powerpc/boot/dts/mpc836x_rdk.dts              |  432 +++
 arch/powerpc/boot/dts/mpc8377_mds.dts              |   69 -
 arch/powerpc/boot/dts/mpc8377_rdb.dts              |   49 
 arch/powerpc/boot/dts/mpc8378_mds.dts              |   48 
 arch/powerpc/boot/dts/mpc8378_rdb.dts              |   49 
 arch/powerpc/boot/dts/mpc8379_mds.dts              |   48 
 arch/powerpc/boot/dts/mpc8379_rdb.dts              |   49 
 arch/powerpc/boot/dts/mpc8536ds.dts                |  432 +++
 arch/powerpc/boot/dts/mpc8540ads.dts               |   46 
 arch/powerpc/boot/dts/mpc8541cds.dts               |   57 
 arch/powerpc/boot/dts/mpc8544ds.dts                |   32 
 arch/powerpc/boot/dts/mpc8548cds.dts               |   57 
 arch/powerpc/boot/dts/mpc8555cds.dts               |   57 
 arch/powerpc/boot/dts/mpc8560ads.dts               |   44 
 arch/powerpc/boot/dts/mpc8568mds.dts               |   60 
 arch/powerpc/boot/dts/mpc8572ds.dts                |  116 +
 arch/powerpc/boot/dts/mpc8610_hpcd.dts             |   20 
 arch/powerpc/boot/dts/mpc8641_hpcn.dts             |   43 
 arch/powerpc/boot/dts/mpc866ads.dts                |   11 
 arch/powerpc/boot/dts/mpc885ads.dts                |   11 
 arch/powerpc/boot/dts/ps3.dts                      |   16 
 arch/powerpc/boot/dts/rainier.dts                  |  163 +
 arch/powerpc/boot/dts/sam440ep.dts                 |  293 ++
 arch/powerpc/boot/dts/sbc8349.dts                  |   49 
 arch/powerpc/boot/dts/sbc8548.dts                  |   57 
 arch/powerpc/boot/dts/sbc8560.dts                  |   46 
 arch/powerpc/boot/dts/sbc8641d.dts                 |   41 
 arch/powerpc/boot/dts/sequoia.dts                  |  172 +
 arch/powerpc/boot/dts/storcenter.dts               |    1 
 arch/powerpc/boot/dts/stx_gp3_8560.dts             |   45 
 arch/powerpc/boot/dts/taishan.dts                  |  241 +-
 arch/powerpc/boot/dts/tqm5200.dts                  |   14 
 arch/powerpc/boot/dts/tqm8540.dts                  |   49 
 arch/powerpc/boot/dts/tqm8541.dts                  |   60 
 arch/powerpc/boot/dts/tqm8548-bigflash.dts         |  406 +++
 arch/powerpc/boot/dts/tqm8548.dts                  |  411 +++
 arch/powerpc/boot/dts/tqm8555.dts                  |   60 
 arch/powerpc/boot/dts/tqm8560.dts                  |  114 +
 arch/powerpc/boot/dts/virtex440-ml507.dts          |  296 ++
 arch/powerpc/boot/dts/walnut.dts                   |  118 -
 arch/powerpc/boot/dts/warp.dts                     |  145 +
 arch/powerpc/boot/dts/yosemite.dts                 |  146 +
 arch/powerpc/boot/oflib.c                          |   15 
 arch/powerpc/boot/redboot-83xx.c                   |   60 
 arch/powerpc/boot/simpleboot.c                     |    6 
 arch/powerpc/boot/virtex.c                         |  100 +
 arch/powerpc/boot/wrapper                          |   32 
 arch/powerpc/boot/zImage.coff.lds.S                |    1 
 arch/powerpc/boot/zImage.lds.S                     |    1 
 arch/powerpc/configs/44x/sam440ep_defconfig        | 1192 +++++++++
 arch/powerpc/configs/44x/taishan_defconfig         |   79 +
 arch/powerpc/configs/44x/virtex5_defconfig         | 1107 ++++++++
 arch/powerpc/configs/83xx/mpc836x_rdk_defconfig    | 1128 ++++++++
 arch/powerpc/configs/85xx/tqm8548_defconfig        | 1225 +++++++++
 arch/powerpc/configs/asp8347_defconfig             | 1214 +++++++++
 arch/powerpc/configs/c2k_defconfig                 | 1872
++++++++++++++
 arch/powerpc/configs/mpc8536_ds_defconfig          | 1637 ++++++++++++
 arch/powerpc/configs/ppc44x_defconfig              |  149 +
 arch/powerpc/configs/pseries_defconfig             |    1 
 arch/powerpc/kernel/Makefile                       |    3 
 arch/powerpc/kernel/align.c                        |   70 -
 arch/powerpc/kernel/asm-offsets.c                  |   27 
 arch/powerpc/kernel/cpu_setup_44x.S                |    1 
 arch/powerpc/kernel/cputable.c                     |  105 -
 arch/powerpc/kernel/crash.c                        |    2 
 arch/powerpc/kernel/crash_dump.c                   |    7 
 arch/powerpc/kernel/dma_64.c                       |   45 
 arch/powerpc/kernel/entry_32.S                     |  158 +
 arch/powerpc/kernel/entry_64.S                     |   17 
 arch/powerpc/kernel/fpu.S                          |   41 
 arch/powerpc/kernel/head_32.S                      |    6 
 arch/powerpc/kernel/head_40x.S                     |   24 
 arch/powerpc/kernel/head_44x.S                     |  295 +-
 arch/powerpc/kernel/head_64.S                      |   82 +
 arch/powerpc/kernel/head_booke.h                   |  126 +
 arch/powerpc/kernel/head_fsl_booke.S               |   66 
 arch/powerpc/kernel/ibmebus.c                      |   16 
 arch/powerpc/kernel/idle_6xx.S                     |    2 
 arch/powerpc/kernel/idle_e500.S                    |   93 +
 arch/powerpc/kernel/iommu.c                        |   16 
 arch/powerpc/kernel/irq.c                          |   35 
 arch/powerpc/kernel/kprobes.c                      |   36 
 arch/powerpc/kernel/lparcfg.c                      |    6 
 arch/powerpc/kernel/machine_kexec_64.c             |    4 
 arch/powerpc/kernel/misc.S                         |    5 
 arch/powerpc/kernel/misc_32.S                      |    2 
 arch/powerpc/kernel/misc_64.S                      |   33 
 arch/powerpc/kernel/module.c                       |  116 +
 arch/powerpc/kernel/module_32.c                    |   72 -
 arch/powerpc/kernel/module_64.c                    |   81 -
 arch/powerpc/kernel/msi.c                          |    2 
 arch/powerpc/kernel/of_device.c                    |   48 
 arch/powerpc/kernel/ppc32.h                        |    1 
 arch/powerpc/kernel/ppc_ksyms.c                    |    3 
 arch/powerpc/kernel/process.c                      |  113 -
 arch/powerpc/kernel/prom.c                         |    4 
 arch/powerpc/kernel/prom_init.c                    |    5 
 arch/powerpc/kernel/ptrace.c                       |  114 +
 arch/powerpc/kernel/ptrace32.c                     |   14 
 arch/powerpc/kernel/rtas-proc.c                    |   14 
 arch/powerpc/kernel/rtas.c                         |    6 
 arch/powerpc/kernel/rtas_flash.c                   |    4 
 arch/powerpc/kernel/rtas_pci.c                     |    4 
 arch/powerpc/kernel/setup-common.c                 |    2 
 arch/powerpc/kernel/setup_32.c                     |   33 
 arch/powerpc/kernel/setup_64.c                     |    2 
 arch/powerpc/kernel/signal.c                       |   12 
 arch/powerpc/kernel/signal.h                       |   10 
 arch/powerpc/kernel/signal_32.c                    |  184 +
 arch/powerpc/kernel/signal_64.c                    |  101 +
 arch/powerpc/kernel/smp.c                          |    4 
 arch/powerpc/kernel/softemu8xx.c                   |    4 
 arch/powerpc/kernel/stacktrace.c                   |   36 
 arch/powerpc/kernel/syscalls.c                     |    3 
 arch/powerpc/kernel/time.c                         |   14 
 arch/powerpc/kernel/traps.c                        |   55 
 arch/powerpc/kernel/vdso.c                         |   10 
 arch/powerpc/kernel/vdso32/vdso32.lds.S            |    5 
 arch/powerpc/kernel/vdso64/vdso64.lds.S            |   11 
 arch/powerpc/kernel/vmlinux.lds.S                  |    8 
 arch/powerpc/lib/Makefile                          |    4 
 arch/powerpc/lib/code-patching.c                   |  448 +++
 arch/powerpc/lib/dma-noncoherent.c                 |   11 
 arch/powerpc/lib/feature-fixups-test.S             |  742 +++++
 arch/powerpc/lib/feature-fixups.c                  |  351 +++
 arch/powerpc/math-emu/math.c                       |   56 
 arch/powerpc/mm/44x_mmu.c                          |   29 
 arch/powerpc/mm/fault.c                            |    3 
 arch/powerpc/mm/hash_low_64.S                      |   17 
 arch/powerpc/mm/hash_utils_64.c                    |   42 
 arch/powerpc/mm/hugetlbpage.c                      |   13 
 arch/powerpc/mm/init_32.c                          |    7 
 arch/powerpc/mm/init_64.c                          |    4 
 arch/powerpc/mm/mem.c                              |    9 
 arch/powerpc/mm/mmu_decl.h                         |    6 
 arch/powerpc/mm/numa.c                             |  310 ++
 arch/powerpc/mm/pgtable_32.c                       |    6 
 arch/powerpc/mm/ppc_mmu_32.c                       |   27 
 arch/powerpc/mm/slice.c                            |  177 +
 arch/powerpc/mm/stab.c                             |    4 
 arch/powerpc/mm/tlb_64.c                           |    7 
 arch/powerpc/platforms/44x/Kconfig                 |   35 
 arch/powerpc/platforms/44x/Makefile                |    2 
 arch/powerpc/platforms/44x/sam440ep.c              |   79 +
 arch/powerpc/platforms/44x/virtex.c                |   60 
 arch/powerpc/platforms/44x/warp-nand.c             |   57 
 arch/powerpc/platforms/44x/warp.c                  |  293 ++
 arch/powerpc/platforms/512x/Kconfig                |   17 
 arch/powerpc/platforms/512x/Makefile               |    4 
 arch/powerpc/platforms/512x/clock.c                |  729 +++++
 arch/powerpc/platforms/512x/mpc5121_ads.c          |   69 -
 arch/powerpc/platforms/512x/mpc5121_ads.h          |   16 
 arch/powerpc/platforms/512x/mpc5121_ads_cpld.c     |  204 ++
 arch/powerpc/platforms/512x/mpc5121_generic.c      |   58 
 arch/powerpc/platforms/512x/mpc512x.h              |   17 
 arch/powerpc/platforms/512x/mpc512x_shared.c       |   83 +
 arch/powerpc/platforms/52xx/mpc52xx_pci.c          |    3 
 arch/powerpc/platforms/82xx/Kconfig                |   11 
 arch/powerpc/platforms/82xx/mpc8272_ads.c          |    4 
 arch/powerpc/platforms/82xx/pq2ads-pci-pic.c       |    2 
 arch/powerpc/platforms/83xx/Kconfig                |   30 
 arch/powerpc/platforms/83xx/Makefile               |    2 
 arch/powerpc/platforms/83xx/asp834x.c              |   90 +
 arch/powerpc/platforms/83xx/mpc836x_rdk.c          |  102 +
 arch/powerpc/platforms/85xx/Kconfig                |   14 
 arch/powerpc/platforms/85xx/Makefile               |    1 
 arch/powerpc/platforms/85xx/mpc8536_ds.c           |  125 +
 arch/powerpc/platforms/85xx/mpc85xx_ads.c          |    8 
 arch/powerpc/platforms/85xx/mpc85xx_cds.c          |   14 
 arch/powerpc/platforms/85xx/mpc85xx_ds.c           |   12 
 arch/powerpc/platforms/85xx/tqm85xx.c              |   23 
 arch/powerpc/platforms/86xx/Kconfig                |   16 
 arch/powerpc/platforms/86xx/Makefile               |    1 
 arch/powerpc/platforms/86xx/mpc8610_hpcd.c         |   25 
 arch/powerpc/platforms/86xx/mpc86xx.h              |    3 
 arch/powerpc/platforms/86xx/mpc86xx_hpcn.c         |   64 
 arch/powerpc/platforms/86xx/mpc86xx_smp.c          |    6 
 arch/powerpc/platforms/86xx/pic.c                  |   78 +
 arch/powerpc/platforms/86xx/sbc8641d.c             |   25 
 arch/powerpc/platforms/8xx/mpc86xads_setup.c       |    4 
 arch/powerpc/platforms/8xx/mpc885ads_setup.c       |    3 
 arch/powerpc/platforms/Kconfig                     |   33 
 arch/powerpc/platforms/Kconfig.cputype             |   25 
 arch/powerpc/platforms/cell/axon_msi.c             |   76 -
 arch/powerpc/platforms/cell/beat_htab.c            |    4 
 arch/powerpc/platforms/cell/iommu.c                |    8 
 arch/powerpc/platforms/cell/ras.c                  |   22 
 arch/powerpc/platforms/cell/spider-pic.c           |    2 
 arch/powerpc/platforms/cell/spufs/context.c        |   12 
 arch/powerpc/platforms/cell/spufs/file.c           |  203 +
 arch/powerpc/platforms/cell/spufs/inode.c          |   47 
 arch/powerpc/platforms/cell/spufs/sched.c          |    9 
 arch/powerpc/platforms/cell/spufs/spufs.h          |   19 
 arch/powerpc/platforms/cell/spufs/sputrace.c       |    8 
 arch/powerpc/platforms/chrp/setup.c                |    7 
 arch/powerpc/platforms/embedded6xx/Kconfig         |   10 
 arch/powerpc/platforms/embedded6xx/Makefile        |    1 
 arch/powerpc/platforms/embedded6xx/c2k.c           |  158 +
 arch/powerpc/platforms/iseries/iommu.c             |    4 
 arch/powerpc/platforms/maple/time.c                |    2 
 arch/powerpc/platforms/powermac/pic.c              |    8 
 arch/powerpc/platforms/powermac/smp.c              |    6 
 arch/powerpc/platforms/ps3/system-bus.c            |   38 
 arch/powerpc/platforms/pseries/eeh.c               |   14 
 arch/powerpc/platforms/pseries/firmware.c          |    1 
 arch/powerpc/platforms/pseries/hotplug-memory.c    |  117 +
 arch/powerpc/platforms/pseries/iommu.c             |   15 
 arch/powerpc/platforms/pseries/kexec.c             |    2 
 arch/powerpc/platforms/pseries/lpar.c              |    4 
 arch/powerpc/platforms/pseries/ras.c               |    2 
 arch/powerpc/platforms/pseries/reconfig.c          |   38 
 arch/powerpc/platforms/pseries/rtasd.c             |    4 
 arch/powerpc/platforms/pseries/setup.c             |    4 
 arch/powerpc/sysdev/6xx-suspend.S                  |   52 
 arch/powerpc/sysdev/Makefile                       |    9 
 arch/powerpc/sysdev/bestcomm/bestcomm.c            |    2 
 arch/powerpc/sysdev/bestcomm/gen_bd.c              |   95 +
 arch/powerpc/sysdev/bestcomm/gen_bd.h              |    5 
 arch/powerpc/sysdev/bestcomm/sram.c                |    2 
 arch/powerpc/sysdev/cpm1.c                         |    2 
 arch/powerpc/sysdev/cpm2_pic.c                     |    2 
 arch/powerpc/sysdev/cpm_common.c                   |   19 
 arch/powerpc/sysdev/dcr.c                          |  156 +
 arch/powerpc/sysdev/fsl_gtm.c                      |  434 +++
 arch/powerpc/sysdev/fsl_msi.c                      |  429 +++
 arch/powerpc/sysdev/fsl_msi.h                      |   42 
 arch/powerpc/sysdev/fsl_pci.c                      |   14 
 arch/powerpc/sysdev/fsl_soc.c                      |  122 -
 arch/powerpc/sysdev/i8259.c                        |    2 
 arch/powerpc/sysdev/indirect_pci.c                 |    6 
 arch/powerpc/sysdev/ipic.c                         |   16 
 arch/powerpc/sysdev/mpic.c                         |   18 
 arch/powerpc/sysdev/mpic_msi.c                     |    1 
 arch/powerpc/sysdev/mpic_pasemi_msi.c              |    6 
 arch/powerpc/sysdev/mpic_u3msi.c                   |    8 
 arch/powerpc/sysdev/mv64x60_dev.c                  |   10 
 arch/powerpc/sysdev/ppc4xx_pci.c                   |   14 
 arch/powerpc/sysdev/qe_lib/Kconfig                 |   13 
 arch/powerpc/sysdev/qe_lib/Makefile                |    2 
 arch/powerpc/sysdev/qe_lib/gpio.c                  |  149 +
 arch/powerpc/sysdev/qe_lib/qe.c                    |   94 -
 arch/powerpc/sysdev/qe_lib/qe_ic.c                 |   14 
 arch/powerpc/sysdev/qe_lib/qe_io.c                 |   94 -
 arch/powerpc/sysdev/qe_lib/ucc.c                   |    7 
 arch/powerpc/sysdev/qe_lib/usb.c                   |   55 
 arch/powerpc/sysdev/tsi108_pci.c                   |    3 
 arch/powerpc/sysdev/uic.c                          |    6 
 arch/powerpc/xmon/xmon.c                           |   66 
 arch/ppc/.gitignore                                |    1 
 arch/ppc/4xx_io/Makefile                           |    6 
 arch/ppc/4xx_io/serial_sicc.c                      | 2005
---------------
 arch/ppc/8260_io/Kconfig                           |   65 
 arch/ppc/8260_io/Makefile                          |    6 
 arch/ppc/8260_io/enet.c                            |  865 ------
 arch/ppc/8260_io/fcc_enet.c                        | 2379
-----------------
 arch/ppc/8xx_io/Kconfig                            |  134 -
 arch/ppc/8xx_io/Makefile                           |    9 
 arch/ppc/8xx_io/commproc.c                         |  432 ---
 arch/ppc/8xx_io/enet.c                             |  982 -------
 arch/ppc/8xx_io/fec.c                              | 1983
---------------
 arch/ppc/8xx_io/micropatch.c                       |  743 -----
 arch/ppc/Kconfig                                   | 1186 ---------
 arch/ppc/Kconfig.debug                             |   66 
 arch/ppc/Makefile                                  |  135 -
 arch/ppc/boot/Makefile                             |   37 
 arch/ppc/boot/common/Makefile                      |   10 
 arch/ppc/boot/common/bootinfo.c                    |   68 -
 arch/ppc/boot/common/crt0.S                        |   80 -
 arch/ppc/boot/common/misc-common.c                 |  555 ----
 arch/ppc/boot/common/ns16550.c                     |  103 -
 arch/ppc/boot/common/serial_stub.c                 |   21 
 arch/ppc/boot/common/string.S                      |  150 -
 arch/ppc/boot/common/util.S                        |  293 --
 arch/ppc/boot/images/.gitignore                    |    6 
 arch/ppc/boot/images/Makefile                      |   34 
 arch/ppc/boot/include/cpc700.h                     |   26 
 arch/ppc/boot/include/iso_font.h                   |  257 --
 arch/ppc/boot/include/mpc10x.h                     |   63 
 arch/ppc/boot/include/mpsc_defs.h                  |  146 -
 arch/ppc/boot/include/nonstdio.h                   |   34 
 arch/ppc/boot/include/of1275.h                     |   42 
 arch/ppc/boot/include/rs6000.h                     |  243 --
 arch/ppc/boot/include/serial.h                     |   46 
 arch/ppc/boot/ld.script                            |   85 -
 arch/ppc/boot/lib/.gitignore                       |    3 
 arch/ppc/boot/lib/Makefile                         |   23 
 arch/ppc/boot/lib/div64.S                          |   58 
 arch/ppc/boot/lib/kbd.c                            |  248 --
 arch/ppc/boot/lib/vreset.c                         |  805 ------
 arch/ppc/boot/of1275/Makefile                      |    6 
 arch/ppc/boot/of1275/call_prom.c                   |   74 -
 arch/ppc/boot/of1275/claim.c                       |   92 -
 arch/ppc/boot/of1275/enter.c                       |   22 
 arch/ppc/boot/of1275/exit.c                        |   24 
 arch/ppc/boot/of1275/finddevice.c                  |   16 
 arch/ppc/boot/of1275/getprop.c                     |   37 
 arch/ppc/boot/of1275/map.c                         |   48 
 arch/ppc/boot/of1275/ofinit.c                      |   27 
 arch/ppc/boot/of1275/ofstdio.c                     |   32 
 arch/ppc/boot/of1275/read.c                        |   35 
 arch/ppc/boot/of1275/release.c                     |   30 
 arch/ppc/boot/of1275/write.c                       |   35 
 arch/ppc/boot/simple/Makefile                      |  277 --
 arch/ppc/boot/simple/chrpmap.c                     |   12 
 arch/ppc/boot/simple/clear.S                       |   19 
 arch/ppc/boot/simple/cpc700_memory.c               |   34 
 arch/ppc/boot/simple/dummy.c                       |    4 
 arch/ppc/boot/simple/embed_config.c                |  938 -------
 arch/ppc/boot/simple/head.S                        |  137 -
 arch/ppc/boot/simple/iic.c                         |  214 --
 arch/ppc/boot/simple/m8260_tty.c                   |  325 --
 arch/ppc/boot/simple/m8xx_tty.c                    |  289 --
 arch/ppc/boot/simple/misc-chestnut.c               |   32 
 arch/ppc/boot/simple/misc-cpci690.c                |   65 
 arch/ppc/boot/simple/misc-embedded.c               |  276 --
 arch/ppc/boot/simple/misc-ev64260.c                |   54 
 arch/ppc/boot/simple/misc-ev64360.c                |   42 
 arch/ppc/boot/simple/misc-katana.c                 |   42 
 arch/ppc/boot/simple/misc-mv64x60.c                |   85 -
 arch/ppc/boot/simple/misc-prep.c                   |  209 --
 arch/ppc/boot/simple/misc-radstone_ppc7d.c         |   24 
 arch/ppc/boot/simple/misc-spruce.c                 |  271 --
 arch/ppc/boot/simple/misc.c                        |  278 --
 arch/ppc/boot/simple/mpc10x_memory.c               |  109 -
 arch/ppc/boot/simple/mpc52xx_tty.c                 |  137 -
 arch/ppc/boot/simple/mv64x60_tty.c                 |  364 ---
 arch/ppc/boot/simple/openbios.c                    |  128 -
 arch/ppc/boot/simple/pci.c                         |  274 --
 arch/ppc/boot/simple/pibs.c                        |  104 -
 arch/ppc/boot/simple/prepmap.c                     |   12 
 arch/ppc/boot/simple/qspan_pci.c                   |  269 --
 arch/ppc/boot/simple/relocate.S                    |  213 --
 arch/ppc/boot/simple/rw4/ppc_40x.h                 |  664 -----
 arch/ppc/boot/simple/rw4/rw4_init.S                |   78 -
 arch/ppc/boot/simple/rw4/rw4_init_brd.S            | 1125 --------
 arch/ppc/boot/simple/rw4/stb.h                     |  239 --
 arch/ppc/boot/simple/uartlite_tty.c                |   45 
 arch/ppc/boot/utils/.gitignore                     |    3 
 arch/ppc/boot/utils/elf.pl                         |   33 
 arch/ppc/boot/utils/mkbugboot.c                    |  147 -
 arch/ppc/boot/utils/mkprep.c                       |  241 --
 arch/ppc/boot/utils/mktree.c                       |  152 -
 arch/ppc/configs/FADS_defconfig                    |  520 ----
 arch/ppc/configs/IVMS8_defconfig                   |  548 ----
 arch/ppc/configs/TQM823L_defconfig                 |  521 ----
 arch/ppc/configs/TQM8260_defconfig                 |  499 ----
 arch/ppc/configs/TQM850L_defconfig                 |  521 ----
 arch/ppc/configs/TQM860L_defconfig                 |  549 ----
 arch/ppc/configs/bamboo_defconfig                  |  944 -------
 arch/ppc/configs/bseip_defconfig                   |  517 ----
 arch/ppc/configs/bubinga_defconfig                 |  592 ----
 arch/ppc/configs/chestnut_defconfig                |  794 ------
 arch/ppc/configs/cpci405_defconfig                 |  631 -----
 arch/ppc/configs/cpci690_defconfig                 |  798 ------
 arch/ppc/configs/ebony_defconfig                   |  585 ----
 arch/ppc/configs/ep405_defconfig                   |  572 ----
 arch/ppc/configs/est8260_defconfig                 |  491 ----
 arch/ppc/configs/ev64260_defconfig                 |  758 ------
 arch/ppc/configs/ev64360_defconfig                 |  817 ------
 arch/ppc/configs/hdpu_defconfig                    |  890 -------
 arch/ppc/configs/katana_defconfig                  |  948 -------
 arch/ppc/configs/lite5200_defconfig                |  436 ---
 arch/ppc/configs/lopec_defconfig                   |  814 ------
 arch/ppc/configs/luan_defconfig                    |  668 -----
 arch/ppc/configs/mbx_defconfig                     |  512 ----
 arch/ppc/configs/ml300_defconfig                   |  739 -----
 arch/ppc/configs/ml403_defconfig                   |  740 -----
 arch/ppc/configs/mvme5100_defconfig                |  746 -----
 arch/ppc/configs/ocotea_defconfig                  |  599 ----
 arch/ppc/configs/pplus_defconfig                   |  720 -----
 arch/ppc/configs/prep_defconfig                    | 1679 ------------
 arch/ppc/configs/prpmc750_defconfig                |  594 ----
 arch/ppc/configs/prpmc800_defconfig                |  656 -----
 arch/ppc/configs/radstone_ppc7d_defconfig          |  991 -------
 arch/ppc/configs/redwood5_defconfig                |  557 ----
 arch/ppc/configs/redwood6_defconfig                |  535 ----
 arch/ppc/configs/rpx8260_defconfig                 |  555 ----
 arch/ppc/configs/rpxcllf_defconfig                 |  582 ----
 arch/ppc/configs/rpxlite_defconfig                 |  581 ----
 arch/ppc/configs/sandpoint_defconfig               |  737 -----
 arch/ppc/configs/spruce_defconfig                  |  577 ----
 arch/ppc/configs/sycamore_defconfig                |  663 -----
 arch/ppc/configs/taishan_defconfig                 | 1077 --------
 arch/ppc/configs/walnut_defconfig                  |  578 ----
 arch/ppc/kernel/Makefile                           |   21 
 arch/ppc/kernel/asm-offsets.c                      |  164 -
 arch/ppc/kernel/cpu_setup_power4.S                 |  197 -
 arch/ppc/kernel/entry.S                            |  960 -------
 arch/ppc/kernel/head.S                             | 1220 ---------
 arch/ppc/kernel/head_44x.S                         |  769 ------
 arch/ppc/kernel/head_4xx.S                         | 1021 --------
 arch/ppc/kernel/head_8xx.S                         |  959 -------
 arch/ppc/kernel/head_booke.h                       |  308 --
 arch/ppc/kernel/machine_kexec.c                    |  118 -
 arch/ppc/kernel/misc.S                             |  868 ------
 arch/ppc/kernel/pci.c                              | 1233 ---------
 arch/ppc/kernel/ppc-stub.c                         |  866 ------
 arch/ppc/kernel/ppc_htab.c                         |  464 ---
 arch/ppc/kernel/ppc_ksyms.c                        |  258 --
 arch/ppc/kernel/relocate_kernel.S                  |  123 -
 arch/ppc/kernel/setup.c                            |  572 ----
 arch/ppc/kernel/smp-tbsync.c                       |  180 -
 arch/ppc/kernel/smp.c                              |  414 ---
 arch/ppc/kernel/softemu8xx.c                       |  147 -
 arch/ppc/kernel/time.c                             |  445 ---
 arch/ppc/kernel/traps.c                            |  826 ------
 arch/ppc/kernel/vmlinux.lds.S                      |  164 -
 arch/ppc/lib/Makefile                              |    5 
 arch/ppc/lib/checksum.S                            |  225 --
 arch/ppc/lib/div64.S                               |   58 
 arch/ppc/lib/locks.c                               |  189 -
 arch/ppc/lib/string.S                              |  732 -----
 arch/ppc/mm/44x_mmu.c                              |  101 -
 arch/ppc/mm/4xx_mmu.c                              |  135 -
 arch/ppc/mm/Makefile                               |   10 
 arch/ppc/mm/fault.c                                |  436 ---
 arch/ppc/mm/hashtable.S                            |  617 -----
 arch/ppc/mm/init.c                                 |  603 ----
 arch/ppc/mm/mem_pieces.c                           |  162 -
 arch/ppc/mm/mem_pieces.h                           |   48 
 arch/ppc/mm/mmu_context.c                          |   85 -
 arch/ppc/mm/mmu_decl.h                             |   79 -
 arch/ppc/mm/pgtable.c                              |  403 ---
 arch/ppc/mm/ppc_mmu.c                              |  269 --
 arch/ppc/mm/tlb.c                                  |  183 -
 arch/ppc/platforms/4xx/Kconfig                     |  285 --
 arch/ppc/platforms/4xx/Makefile                    |   31 
 arch/ppc/platforms/4xx/bamboo.c                    |  442 ---
 arch/ppc/platforms/4xx/bamboo.h                    |  133 -
 arch/ppc/platforms/4xx/bubinga.c                   |  265 --
 arch/ppc/platforms/4xx/bubinga.h                   |   54 
 arch/ppc/platforms/4xx/cpci405.c                   |  201 -
 arch/ppc/platforms/4xx/cpci405.h                   |   28 
 arch/ppc/platforms/4xx/ebony.c                     |  334 --
 arch/ppc/platforms/4xx/ebony.h                     |   97 -
 arch/ppc/platforms/4xx/ep405.c                     |  196 -
 arch/ppc/platforms/4xx/ep405.h                     |   52 
 arch/ppc/platforms/4xx/ibm405ep.c                  |  141 -
 arch/ppc/platforms/4xx/ibm405ep.h                  |  145 -
 arch/ppc/platforms/4xx/ibm405gp.c                  |  120 -
 arch/ppc/platforms/4xx/ibm405gp.h                  |  148 -
 arch/ppc/platforms/4xx/ibm405gpr.c                 |  115 -
 arch/ppc/platforms/4xx/ibm405gpr.h                 |  148 -
 arch/ppc/platforms/4xx/ibm440ep.c                  |  220 --
 arch/ppc/platforms/4xx/ibm440ep.h                  |   73 -
 arch/ppc/platforms/4xx/ibm440gp.c                  |  163 -
 arch/ppc/platforms/4xx/ibm440gp.h                  |   63 
 arch/ppc/platforms/4xx/ibm440gx.c                  |  231 --
 arch/ppc/platforms/4xx/ibm440gx.h                  |   71 -
 arch/ppc/platforms/4xx/ibm440sp.c                  |  129 -
 arch/ppc/platforms/4xx/ibm440sp.h                  |   61 
 arch/ppc/platforms/4xx/ibmnp405h.c                 |  170 -
 arch/ppc/platforms/4xx/ibmnp405h.h                 |  154 -
 arch/ppc/platforms/4xx/ibmstb4.c                   |  122 -
 arch/ppc/platforms/4xx/ibmstb4.h                   |  235 --
 arch/ppc/platforms/4xx/ibmstbx25.c                 |   66 
 arch/ppc/platforms/4xx/ibmstbx25.h                 |  258 --
 arch/ppc/platforms/4xx/luan.c                      |  371 ---
 arch/ppc/platforms/4xx/luan.h                      |   77 -
 arch/ppc/platforms/4xx/ocotea.c                    |  350 ---
 arch/ppc/platforms/4xx/ocotea.h                    |   94 -
 arch/ppc/platforms/4xx/ppc440spe.c                 |  146 -
 arch/ppc/platforms/4xx/ppc440spe.h                 |   63 
 arch/ppc/platforms/4xx/redwood5.c                  |  120 -
 arch/ppc/platforms/4xx/redwood5.h                  |   52 
 arch/ppc/platforms/4xx/redwood6.c                  |  156 -
 arch/ppc/platforms/4xx/redwood6.h                  |   53 
 arch/ppc/platforms/4xx/sycamore.c                  |  272 --
 arch/ppc/platforms/4xx/sycamore.h                  |   49 
 arch/ppc/platforms/4xx/taishan.c                   |  395 ---
 arch/ppc/platforms/4xx/taishan.h                   |   67 
 arch/ppc/platforms/4xx/virtex.h                    |   35 
 arch/ppc/platforms/4xx/walnut.c                    |  246 --
 arch/ppc/platforms/4xx/walnut.h                    |   52 
 arch/ppc/platforms/4xx/xilinx_ml300.c              |  118 -
 arch/ppc/platforms/4xx/xilinx_ml403.c              |  120 -
 arch/ppc/platforms/4xx/xparameters/xparameters.h   |  104 -
 .../platforms/4xx/xparameters/xparameters_ml300.h  |  310 ---
 .../platforms/4xx/xparameters/xparameters_ml403.h  |  243 --
 arch/ppc/platforms/4xx/yucca.c                     |  393 ---
 arch/ppc/platforms/4xx/yucca.h                     |  108 -
 arch/ppc/platforms/Makefile                        |   25 
 arch/ppc/platforms/bseip.h                         |   38 
 arch/ppc/platforms/ccm.h                           |   27 
 arch/ppc/platforms/chestnut.c                      |  574 ----
 arch/ppc/platforms/chestnut.h                      |  127 -
 arch/ppc/platforms/cpci690.c                       |  453 ---
 arch/ppc/platforms/cpci690.h                       |   74 -
 arch/ppc/platforms/est8260.h                       |   35 
 arch/ppc/platforms/ev64260.c                       |  649 -----
 arch/ppc/platforms/ev64260.h                       |  126 -
 arch/ppc/platforms/ev64360.c                       |  517 ----
 arch/ppc/platforms/ev64360.h                       |  114 -
 arch/ppc/platforms/fads.h                          |  130 -
 arch/ppc/platforms/hdpu.c                          | 1015 -------
 arch/ppc/platforms/hdpu.h                          |   80 -
 arch/ppc/platforms/hermes.h                        |   26 
 arch/ppc/platforms/ip860.h                         |   35 
 arch/ppc/platforms/ivms8.h                         |   55 
 arch/ppc/platforms/katana.c                        |  902 -------
 arch/ppc/platforms/katana.h                        |  253 --
 arch/ppc/platforms/lantec.h                        |   20 
 arch/ppc/platforms/lite5200.c                      |  245 --
 arch/ppc/platforms/lite5200.h                      |   21 
 arch/ppc/platforms/lopec.c                         |  310 --
 arch/ppc/platforms/lopec.h                         |   39 
 arch/ppc/platforms/lwmon.h                         |   59 
 arch/ppc/platforms/mbx.h                           |  117 -
 arch/ppc/platforms/mpc866ads_setup.c               |  413 ---
 arch/ppc/platforms/mvme5100.c                      |  340 ---
 arch/ppc/platforms/mvme5100.h                      |   91 -
 arch/ppc/platforms/pal4.h                          |   40 
 arch/ppc/platforms/pal4_pci.c                      |   75 -
 arch/ppc/platforms/pal4_serial.h                   |   37 
 arch/ppc/platforms/pal4_setup.c                    |  173 -
 arch/ppc/platforms/pcu_e.h                         |   27 
 arch/ppc/platforms/powerpmc250.c                   |  378 ---
 arch/ppc/platforms/powerpmc250.h                   |   52 
 arch/ppc/platforms/pplus.c                         |  844 ------
 arch/ppc/platforms/pplus.h                         |   65 
 arch/ppc/platforms/prep_pci.c                      | 1339 ----------
 arch/ppc/platforms/prep_setup.c                    | 1043 --------
 arch/ppc/platforms/prpmc750.c                      |  360 ---
 arch/ppc/platforms/prpmc750.h                      |   95 -
 arch/ppc/platforms/prpmc800.c                      |  472 ---
 arch/ppc/platforms/prpmc800.h                      |   82 -
 arch/ppc/platforms/radstone_ppc7d.c                | 1492 -----------
 arch/ppc/platforms/radstone_ppc7d.h                |  433 ---
 arch/ppc/platforms/residual.c                      | 1034 --------
 arch/ppc/platforms/rpx8260.h                       |   81 -
 arch/ppc/platforms/rpxclassic.h                    |  114 -
 arch/ppc/platforms/rpxlite.h                       |   91 -
 arch/ppc/platforms/sandpoint.c                     |  651 -----
 arch/ppc/platforms/sandpoint.h                     |   75 -
 arch/ppc/platforms/sbc82xx.c                       |  256 --
 arch/ppc/platforms/sbc82xx.h                       |   36 
 arch/ppc/platforms/sbs8260.h                       |   28 
 arch/ppc/platforms/spruce.c                        |  322 --
 arch/ppc/platforms/spruce.h                        |   71 -
 arch/ppc/platforms/tqm8260.h                       |   22 
 arch/ppc/platforms/tqm8260_setup.c                 |   42 
 arch/ppc/platforms/tqm8xx.h                        |  155 -
 arch/ppc/syslib/Makefile                           |   96 -
 arch/ppc/syslib/btext.c                            |  860 ------
 arch/ppc/syslib/cpc700.h                           |   96 -
 arch/ppc/syslib/cpc700_pic.c                       |  181 -
 arch/ppc/syslib/cpm2_common.c                      |  196 -
 arch/ppc/syslib/cpm2_pic.c                         |  177 -
 arch/ppc/syslib/cpm2_pic.h                         |    8 
 arch/ppc/syslib/gen550.h                           |   14 
 arch/ppc/syslib/gen550_dbg.c                       |  179 -
 arch/ppc/syslib/gen550_kgdb.c                      |   83 -
 arch/ppc/syslib/gt64260_pic.c                      |  323 --
 arch/ppc/syslib/harrier.c                          |  300 --
 arch/ppc/syslib/hawk_common.c                      |  317 --
 arch/ppc/syslib/i8259.c                            |  213 --
 arch/ppc/syslib/ibm440gp_common.c                  |   73 -
 arch/ppc/syslib/ibm440gp_common.h                  |   32 
 arch/ppc/syslib/ibm440gx_common.c                  |  294 --
 arch/ppc/syslib/ibm440gx_common.h                  |   58 
 arch/ppc/syslib/ibm440sp_common.c                  |   68 -
 arch/ppc/syslib/ibm440sp_common.h                  |   23 
 arch/ppc/syslib/ibm44x_common.c                    |  235 --
 arch/ppc/syslib/ibm44x_common.h                    |   45 
 arch/ppc/syslib/ibm_ocp.c                          |   10 
 arch/ppc/syslib/indirect_pci.c                     |  134 -
 arch/ppc/syslib/m8260_pci_erratum9.c               |  455 ---
 arch/ppc/syslib/m8260_setup.c                      |  266 --
 arch/ppc/syslib/m82xx_pci.c                        |  346 ---
 arch/ppc/syslib/m82xx_pci.h                        |   92 -
 arch/ppc/syslib/m8xx_setup.c                       |  465 ---
 arch/ppc/syslib/m8xx_wdt.c                         |  148 -
 arch/ppc/syslib/m8xx_wdt.h                         |   20 
 arch/ppc/syslib/mpc10x_common.c                    |  654 -----
 arch/ppc/syslib/mpc52xx_devices.c                  |  317 --
 arch/ppc/syslib/mpc52xx_pci.c                      |  289 --
 arch/ppc/syslib/mpc52xx_pci.h                      |  137 -
 arch/ppc/syslib/mpc52xx_pic.c                      |  254 --
 arch/ppc/syslib/mpc52xx_setup.c                    |  313 --
 arch/ppc/syslib/mpc52xx_sys.c                      |   36 
 arch/ppc/syslib/mpc8xx_devices.c                   |  243 --
 arch/ppc/syslib/mpc8xx_sys.c                       |   61 
 arch/ppc/syslib/mv64360_pic.c                      |  423 ---
 arch/ppc/syslib/mv64x60.c                          | 2485
------------------
 arch/ppc/syslib/mv64x60_dbg.c                      |  121 -
 arch/ppc/syslib/mv64x60_win.c                      | 1165 ---------
 arch/ppc/syslib/ocp.c                              |  482 ----
 arch/ppc/syslib/open_pic.c                         | 1087 --------
 arch/ppc/syslib/open_pic2.c                        |  710 -----
 arch/ppc/syslib/open_pic_defs.h                    |  287 --
 arch/ppc/syslib/pci_auto.c                         |  515 ----
 arch/ppc/syslib/ppc403_pic.c                       |  125 -
 arch/ppc/syslib/ppc405_pci.c                       |  170 -
 arch/ppc/syslib/ppc440spe_pcie.c                   |  441 ---
 arch/ppc/syslib/ppc440spe_pcie.h                   |  149 -
 arch/ppc/syslib/ppc4xx_dma.c                       |  710 -----
 arch/ppc/syslib/ppc4xx_pic.c                       |  284 --
 arch/ppc/syslib/ppc4xx_setup.c                     |  271 --
 arch/ppc/syslib/ppc4xx_sgdma.c                     |  464 ---
 arch/ppc/syslib/ppc8xx_pic.c                       |  126 -
 arch/ppc/syslib/ppc8xx_pic.h                       |   19 
 arch/ppc/syslib/ppc_sys.c                          |  329 --
 arch/ppc/syslib/pq2_devices.c                      |  393 ---
 arch/ppc/syslib/pq2_sys.c                          |  203 -
 arch/ppc/syslib/prep_nvram.c                       |  135 -
 arch/ppc/syslib/qspan_pci.c                        |  380 ---
 arch/ppc/syslib/todc_time.c                        |  511 ----
 arch/ppc/syslib/virtex_devices.c                   |  276 --
 arch/ppc/syslib/virtex_devices.h                   |   35 
 arch/ppc/syslib/xilinx_pic.c                       |  153 -
 arch/ppc/xmon/Makefile                             |    8 
 arch/ppc/xmon/ansidecl.h                           |  141 -
 arch/ppc/xmon/nonstdio.h                           |   22 
 arch/ppc/xmon/ppc-dis.c                            |  190 -
 arch/ppc/xmon/ppc-opc.c                            | 2720
--------------------
 arch/ppc/xmon/ppc.h                                |  240 --
 arch/ppc/xmon/privinst.h                           |   90 -
 arch/ppc/xmon/setjmp.c                             |   29 
 arch/ppc/xmon/start.c                              |  342 ---
 arch/ppc/xmon/start_8xx.c                          |  287 --
 arch/ppc/xmon/subr_prf.c                           |   55 
 arch/ppc/xmon/xmon.c                               | 1780 -------------
 drivers/ata/pata_mpc52xx.c                         |    2 
 drivers/char/Kconfig                               |    8 
 drivers/char/Makefile                              |    1 
 drivers/char/bsr.c                                 |  312 ++
 drivers/char/hvc_console.c                         |    8 
 drivers/char/hvc_console.h                         |   10 
 drivers/char/hw_random/pasemi-rng.c                |    2 
 drivers/char/viotape.c                             |   23 
 drivers/hwmon/ams/ams-core.c                       |    2 
 drivers/i2c/busses/i2c-mpc.c                       |  104 -
 drivers/macintosh/adb.c                            |    5 
 drivers/macintosh/adbhid.c                         |    2 
 drivers/macintosh/macio_sysfs.c                    |   12 
 drivers/macintosh/mediabay.c                       |   27 
 drivers/macintosh/smu.c                            |   38 
 drivers/macintosh/therm_adt746x.c                  |    2 
 drivers/macintosh/therm_pm72.c                     |    4 
 drivers/macintosh/therm_windtunnel.c               |   18 
 drivers/macintosh/via-pmu68k.c                     |    5 
 drivers/net/Kconfig                                |    1 
 drivers/net/Makefile                               |    1 
 drivers/net/fec_8xx/Kconfig                        |   20 
 drivers/net/fec_8xx/Makefile                       |   12 
 drivers/net/fec_8xx/fec_8xx-netta.c                |  151 -
 drivers/net/fec_8xx/fec_8xx.h                      |  220 --
 drivers/net/fec_8xx/fec_main.c                     | 1264 ---------
 drivers/net/fec_8xx/fec_mii.c                      |  418 ---
 drivers/net/fs_enet/fs_enet-main.c                 |    2 
 drivers/net/fs_enet/mac-scc.c                      |    2 
 drivers/net/fs_enet/mii-fec.c                      |    2 
 drivers/net/ibm_newemac/core.c                     |   61 
 drivers/net/ibm_newemac/core.h                     |   85 +
 drivers/net/ibm_newemac/debug.c                    |   52 
 drivers/net/ibm_newemac/emac.h                     |  101 +
 drivers/net/ibm_newemac/rgmii.c                    |    6 
 drivers/net/ucc_geth.c                             |    2 
 drivers/net/ucc_geth_mii.c                         |    2 
 drivers/of/device.c                                |   84 +
 drivers/of/gpio.c                                  |   38 
 drivers/of/of_i2c.c                                |    1 
 drivers/of/platform.c                              |    3 
 drivers/pcmcia/electra_cf.c                        |    2 
 drivers/pcmcia/m8xx_pcmcia.c                       |    4 
 drivers/serial/cpm_uart/cpm_uart.h                 |   11 
 drivers/serial/cpm_uart/cpm_uart_core.c            |  393 ---
 drivers/serial/cpm_uart/cpm_uart_cpm1.c            |  170 -
 drivers/serial/cpm_uart/cpm_uart_cpm1.h            |   12 
 drivers/serial/cpm_uart/cpm_uart_cpm2.c            |  283 --
 drivers/serial/cpm_uart/cpm_uart_cpm2.h            |   12 
 drivers/serial/of_serial.c                         |    2 
 drivers/spi/mpc52xx_psc_spi.c                      |    2 
 drivers/video/platinumfb.c                         |    4 
 drivers/watchdog/mpc5200_wdt.c                     |    2 
 include/asm-powerpc/Kbuild                         |    2 
 include/asm-powerpc/asm-compat.h                   |   51 
 include/asm-powerpc/cache.h                        |    3 
 include/asm-powerpc/code-patching.h                |   54 
 include/asm-powerpc/cpm.h                          |    1 
 include/asm-powerpc/cpm1.h                         |   20 
 include/asm-powerpc/cpm2.h                         |   26 
 include/asm-powerpc/cputable.h                     |   84 -
 include/asm-powerpc/dcr-generic.h                  |   49 
 include/asm-powerpc/dcr-mmio.h                     |   20 
 include/asm-powerpc/dcr-native.h                   |   16 
 include/asm-powerpc/dcr.h                          |   39 
 include/asm-powerpc/dma-mapping.h                  |  125 +
 include/asm-powerpc/elf.h                          |   37 
 include/asm-powerpc/feature-fixups.h               |  126 +
 include/asm-powerpc/firmware.h                     |   13 
 include/asm-powerpc/fsl_gtm.h                      |   47 
 include/asm-powerpc/io.h                           |   59 
 include/asm-powerpc/ioctl.h                        |   58 
 include/asm-powerpc/iommu.h                        |   16 
 include/asm-powerpc/irq.h                          |   13 
 include/asm-powerpc/kexec.h                        |   13 
 include/asm-powerpc/machdep.h                      |    1 
 include/asm-powerpc/mman.h                         |   36 
 include/asm-powerpc/mmu-hash32.h                   |   28 
 include/asm-powerpc/mmu-hash64.h                   |    1 
 include/asm-powerpc/mpc6xx.h                       |    6 
 include/asm-powerpc/mpic.h                         |    2 
 include/asm-powerpc/of_device.h                    |    2 
 include/asm-powerpc/pSeries_reconfig.h             |    6 
 include/asm-powerpc/page_64.h                      |    6 
 include/asm-powerpc/pci-bridge.h                   |    3 
 include/asm-powerpc/pgtable-4k.h                   |    1 
 include/asm-powerpc/pgtable-64k.h                  |   17 
 include/asm-powerpc/pgtable-ppc32.h                |   71 -
 include/asm-powerpc/pgtable-ppc64.h                |    4 
 include/asm-powerpc/ppc_asm.h                      |  114 +
 include/asm-powerpc/processor.h                    |   28 
 include/asm-powerpc/prom.h                         |   16 
 include/asm-powerpc/ptrace.h                       |   13 
 include/asm-powerpc/qe.h                           |   82 -
 include/asm-powerpc/reg.h                          |    6 
 include/asm-powerpc/reg_booke.h                    |   74 +
 include/asm-powerpc/sigcontext.h                   |   37 
 include/asm-powerpc/smp.h                          |    2 
 include/asm-powerpc/sparsemem.h                    |    4 
 include/asm-powerpc/spinlock.h                     |   27 
 include/asm-powerpc/spu.h                          |    1 
 include/asm-powerpc/synch.h                        |   38 
 include/asm-powerpc/system.h                       |   72 -
 include/asm-powerpc/thread_info.h                  |   19 
 include/asm-powerpc/time.h                         |    1 
 include/asm-powerpc/timex.h                        |    2 
 include/asm-powerpc/xmon.h                         |    9 
 include/asm-ppc/8xx_immap.h                        |  564 ----
 include/asm-ppc/amigayle.h                         |    1 
 include/asm-ppc/amipcmcia.h                        |    1 
 include/asm-ppc/bootinfo.h                         |   46 
 include/asm-ppc/bootx.h                            |  135 -
 include/asm-ppc/btext.h                            |   34 
 include/asm-ppc/cpm1.h                             |  688 -----
 include/asm-ppc/cpm2.h                             | 1248 ---------
 include/asm-ppc/delay.h                            |   66 
 include/asm-ppc/device.h                           |    7 
 include/asm-ppc/floppy.h                           |  178 -
 include/asm-ppc/fs_pd.h                            |   36 
 include/asm-ppc/gg2.h                              |   61 
 include/asm-ppc/gt64260.h                          |  322 --
 include/asm-ppc/gt64260_defs.h                     | 1010 -------
 include/asm-ppc/harrier.h                          |   43 
 include/asm-ppc/hawk.h                             |   32 
 include/asm-ppc/hawk_defs.h                        |   76 -
 include/asm-ppc/highmem.h                          |  135 -
 include/asm-ppc/hydra.h                            |  102 -
 include/asm-ppc/ibm403.h                           |  478 ----
 include/asm-ppc/ibm405.h                           |  299 --
 include/asm-ppc/ibm44x.h                           |  674 -----
 include/asm-ppc/ibm4xx.h                           |  124 -
 include/asm-ppc/ibm_ocp.h                          |  204 --
 include/asm-ppc/ibm_ocp_pci.h                      |   32 
 include/asm-ppc/immap_cpm2.h                       |  648 -----
 include/asm-ppc/io.h                               |  502 ----
 include/asm-ppc/irq_regs.h                         |    1 
 include/asm-ppc/kdebug.h                           |    1 
 include/asm-ppc/kgdb.h                             |   57 
 include/asm-ppc/m8260_pci.h                        |  187 -
 include/asm-ppc/machdep.h                          |  178 -
 include/asm-ppc/md.h                               |   15 
 include/asm-ppc/mk48t59.h                          |   27 
 include/asm-ppc/mmu.h                              |  444 ---
 include/asm-ppc/mmu_context.h                      |  198 -
 include/asm-ppc/mpc10x.h                           |  180 -
 include/asm-ppc/mpc52xx.h                          |  450 ---
 include/asm-ppc/mpc52xx_psc.h                      |  200 -
 include/asm-ppc/mpc8260.h                          |   98 -
 include/asm-ppc/mpc8260_pci9.h                     |   47 
 include/asm-ppc/mpc8xx.h                           |  122 -
 include/asm-ppc/mv64x60.h                          |  353 ---
 include/asm-ppc/mv64x60_defs.h                     |  976 -------
 include/asm-ppc/ocp.h                              |  204 --
 include/asm-ppc/ocp_ids.h                          |   73 -
 include/asm-ppc/open_pic.h                         |   98 -
 include/asm-ppc/page.h                             |  140 -
 include/asm-ppc/pc_serial.h                        |   42 
 include/asm-ppc/pci-bridge.h                       |  151 -
 include/asm-ppc/pci.h                              |  156 -
 include/asm-ppc/pgalloc.h                          |   45 
 include/asm-ppc/pgtable.h                          |  771 ------
 include/asm-ppc/pnp.h                              |  645 -----
 include/asm-ppc/ppc4xx_dma.h                       |  579 ----
 include/asm-ppc/ppc4xx_pic.h                       |   52 
 include/asm-ppc/ppc_sys.h                          |  106 -
 include/asm-ppc/ppcboot.h                          |  100 -
 include/asm-ppc/prep_nvram.h                       |  153 -
 include/asm-ppc/prom.h                             |   40 
 include/asm-ppc/raven.h                            |   35 
 include/asm-ppc/reg_booke.h                        |  443 ---
 include/asm-ppc/residual.h                         |  350 ---
 include/asm-ppc/rtc.h                              |   95 -
 include/asm-ppc/serial.h                           |   43 
 include/asm-ppc/smp.h                              |   75 -
 include/asm-ppc/spinlock.h                         |  168 -
 include/asm-ppc/suspend.h                          |   12 
 include/asm-ppc/system.h                           |  289 --
 include/asm-ppc/time.h                             |  161 -
 include/asm-ppc/todc.h                             |  488 ----
 include/asm-ppc/traps.h                            |    1 
 include/asm-ppc/zorro.h                            |   30 
 include/linux/adb.h                                |    1 
 include/linux/elf.h                                |    1 
 include/linux/mm.h                                 |    1 
 include/linux/mman.h                               |   29 
 include/linux/of_device.h                          |    3 
 include/linux/pci_ids.h                            |    2 
 mm/mmap.c                                          |    5 
 mm/mprotect.c                                      |    2 
 875 files changed, 27827 insertions(+), 145692 deletions(-)
 create mode 100644 Documentation/powerpc/bootwrapper.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/board.txt
 create mode 100644
Documentation/powerpc/dts-bindings/fsl/cpm_qe/cpm.txt
 create mode 100644
Documentation/powerpc/dts-bindings/fsl/cpm_qe/cpm/brg.txt
 create mode 100644
Documentation/powerpc/dts-bindings/fsl/cpm_qe/cpm/i2c.txt
 create mode 100644
Documentation/powerpc/dts-bindings/fsl/cpm_qe/cpm/pic.txt
 create mode 100644
Documentation/powerpc/dts-bindings/fsl/cpm_qe/cpm/usb.txt
 create mode 100644
Documentation/powerpc/dts-bindings/fsl/cpm_qe/network.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe.txt
 create mode 100644
Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe/firmware.txt
 create mode 100644
Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe/par_io.txt
 create mode 100644
Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe/pincfg.txt
 create mode 100644
Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe/ucc.txt
 create mode 100644
Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe/usb.txt
 create mode 100644
Documentation/powerpc/dts-bindings/fsl/cpm_qe/serial.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/diu.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/dma.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/gtm.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/guts.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/i2c.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/lbc.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/msi-pic.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/sata.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/sec.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/spi.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/ssi.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/tsec.txt
 create mode 100644 Documentation/powerpc/dts-bindings/fsl/usb.txt
 create mode 100644 arch/powerpc/boot/cuboot-c2k.c
 create mode 100644 arch/powerpc/boot/cuboot-sam440ep.c
 create mode 100644 arch/powerpc/boot/dts/asp834x-redboot.dts
 create mode 100644 arch/powerpc/boot/dts/c2k.dts
 create mode 100644 arch/powerpc/boot/dts/mpc836x_rdk.dts
 create mode 100644 arch/powerpc/boot/dts/mpc8536ds.dts
 create mode 100644 arch/powerpc/boot/dts/sam440ep.dts
 create mode 100644 arch/powerpc/boot/dts/tqm8548-bigflash.dts
 create mode 100644 arch/powerpc/boot/dts/tqm8548.dts
 create mode 100644 arch/powerpc/boot/dts/virtex440-ml507.dts
 create mode 100644 arch/powerpc/boot/redboot-83xx.c
 create mode 100644 arch/powerpc/boot/virtex.c
 create mode 100644 arch/powerpc/configs/44x/sam440ep_defconfig
 create mode 100644 arch/powerpc/configs/44x/virtex5_defconfig
 create mode 100644 arch/powerpc/configs/83xx/mpc836x_rdk_defconfig
 create mode 100644 arch/powerpc/configs/85xx/tqm8548_defconfig
 create mode 100644 arch/powerpc/configs/asp8347_defconfig
 create mode 100644 arch/powerpc/configs/c2k_defconfig
 create mode 100644 arch/powerpc/configs/mpc8536_ds_defconfig
 create mode 100644 arch/powerpc/kernel/idle_e500.S
 create mode 100644 arch/powerpc/kernel/module.c
 create mode 100644 arch/powerpc/lib/code-patching.c
 create mode 100644 arch/powerpc/lib/feature-fixups-test.S
 create mode 100644 arch/powerpc/lib/feature-fixups.c
 create mode 100644 arch/powerpc/platforms/44x/sam440ep.c
 create mode 100644 arch/powerpc/platforms/44x/virtex.c
 create mode 100644 arch/powerpc/platforms/512x/clock.c
 create mode 100644 arch/powerpc/platforms/512x/mpc5121_ads.h
 create mode 100644 arch/powerpc/platforms/512x/mpc5121_ads_cpld.c
 create mode 100644 arch/powerpc/platforms/512x/mpc5121_generic.c
 create mode 100644 arch/powerpc/platforms/512x/mpc512x.h
 create mode 100644 arch/powerpc/platforms/512x/mpc512x_shared.c
 create mode 100644 arch/powerpc/platforms/83xx/asp834x.c
 create mode 100644 arch/powerpc/platforms/83xx/mpc836x_rdk.c
 create mode 100644 arch/powerpc/platforms/85xx/mpc8536_ds.c
 create mode 100644 arch/powerpc/platforms/86xx/pic.c
 create mode 100644 arch/powerpc/platforms/embedded6xx/c2k.c
 create mode 100644 arch/powerpc/sysdev/6xx-suspend.S
 create mode 100644 arch/powerpc/sysdev/fsl_gtm.c
 create mode 100644 arch/powerpc/sysdev/fsl_msi.c
 create mode 100644 arch/powerpc/sysdev/fsl_msi.h
 create mode 100644 arch/powerpc/sysdev/qe_lib/gpio.c
 create mode 100644 arch/powerpc/sysdev/qe_lib/usb.c
 delete mode 100644 arch/ppc/.gitignore
 delete mode 100644 arch/ppc/4xx_io/Makefile
 delete mode 100644 arch/ppc/4xx_io/serial_sicc.c
 delete mode 100644 arch/ppc/8260_io/Kconfig
 delete mode 100644 arch/ppc/8260_io/Makefile
 delete mode 100644 arch/ppc/8260_io/enet.c
 delete mode 100644 arch/ppc/8260_io/fcc_enet.c
 delete mode 100644 arch/ppc/8xx_io/Kconfig
 delete mode 100644 arch/ppc/8xx_io/Makefile
 delete mode 100644 arch/ppc/8xx_io/commproc.c
 delete mode 100644 arch/ppc/8xx_io/enet.c
 delete mode 100644 arch/ppc/8xx_io/fec.c
 delete mode 100644 arch/ppc/8xx_io/micropatch.c
 delete mode 100644 arch/ppc/Kconfig
 delete mode 100644 arch/ppc/Kconfig.debug
 delete mode 100644 arch/ppc/Makefile
 delete mode 100644 arch/ppc/boot/Makefile
 delete mode 100644 arch/ppc/boot/common/Makefile
 delete mode 100644 arch/ppc/boot/common/bootinfo.c
 delete mode 100644 arch/ppc/boot/common/crt0.S
 delete mode 100644 arch/ppc/boot/common/misc-common.c
 delete mode 100644 arch/ppc/boot/common/ns16550.c
 delete mode 100644 arch/ppc/boot/common/serial_stub.c
 delete mode 100644 arch/ppc/boot/common/string.S
 delete mode 100644 arch/ppc/boot/common/util.S
 delete mode 100644 arch/ppc/boot/images/.gitignore
 delete mode 100644 arch/ppc/boot/images/Makefile
 delete mode 100644 arch/ppc/boot/include/cpc700.h
 delete mode 100644 arch/ppc/boot/include/iso_font.h
 delete mode 100644 arch/ppc/boot/include/mpc10x.h
 delete mode 100644 arch/ppc/boot/include/mpsc_defs.h
 delete mode 100644 arch/ppc/boot/include/nonstdio.h
 delete mode 100644 arch/ppc/boot/include/of1275.h
 delete mode 100644 arch/ppc/boot/include/rs6000.h
 delete mode 100644 arch/ppc/boot/include/serial.h
 delete mode 100644 arch/ppc/boot/ld.script
 delete mode 100644 arch/ppc/boot/lib/.gitignore
 delete mode 100644 arch/ppc/boot/lib/Makefile
 delete mode 100644 arch/ppc/boot/lib/div64.S
 delete mode 100644 arch/ppc/boot/lib/kbd.c
 delete mode 100644 arch/ppc/boot/lib/vreset.c
 delete mode 100644 arch/ppc/boot/of1275/Makefile
 delete mode 100644 arch/ppc/boot/of1275/call_prom.c
 delete mode 100644 arch/ppc/boot/of1275/claim.c
 delete mode 100644 arch/ppc/boot/of1275/enter.c
 delete mode 100644 arch/ppc/boot/of1275/exit.c
 delete mode 100644 arch/ppc/boot/of1275/finddevice.c
 delete mode 100644 arch/ppc/boot/of1275/getprop.c
 delete mode 100644 arch/ppc/boot/of1275/map.c
 delete mode 100644 arch/ppc/boot/of1275/ofinit.c
 delete mode 100644 arch/ppc/boot/of1275/ofstdio.c
 delete mode 100644 arch/ppc/boot/of1275/read.c
 delete mode 100644 arch/ppc/boot/of1275/release.c
 delete mode 100644 arch/ppc/boot/of1275/write.c
 delete mode 100644 arch/ppc/boot/simple/Makefile
 delete mode 100644 arch/ppc/boot/simple/chrpmap.c
 delete mode 100644 arch/ppc/boot/simple/clear.S
 delete mode 100644 arch/ppc/boot/simple/cpc700_memory.c
 delete mode 100644 arch/ppc/boot/simple/dummy.c
 delete mode 100644 arch/ppc/boot/simple/embed_config.c
 delete mode 100644 arch/ppc/boot/simple/head.S
 delete mode 100644 arch/ppc/boot/simple/iic.c
 delete mode 100644 arch/ppc/boot/simple/m8260_tty.c
 delete mode 100644 arch/ppc/boot/simple/m8xx_tty.c
 delete mode 100644 arch/ppc/boot/simple/misc-chestnut.c
 delete mode 100644 arch/ppc/boot/simple/misc-cpci690.c
 delete mode 100644 arch/ppc/boot/simple/misc-embedded.c
 delete mode 100644 arch/ppc/boot/simple/misc-ev64260.c
 delete mode 100644 arch/ppc/boot/simple/misc-ev64360.c
 delete mode 100644 arch/ppc/boot/simple/misc-katana.c
 delete mode 100644 arch/ppc/boot/simple/misc-mv64x60.c
 delete mode 100644 arch/ppc/boot/simple/misc-prep.c
 delete mode 100644 arch/ppc/boot/simple/misc-radstone_ppc7d.c
 delete mode 100644 arch/ppc/boot/simple/misc-spruce.c
 delete mode 100644 arch/ppc/boot/simple/misc.c
 delete mode 100644 arch/ppc/boot/simple/mpc10x_memory.c
 delete mode 100644 arch/ppc/boot/simple/mpc52xx_tty.c
 delete mode 100644 arch/ppc/boot/simple/mv64x60_tty.c
 delete mode 100644 arch/ppc/boot/simple/openbios.c
 delete mode 100644 arch/ppc/boot/simple/pci.c
 delete mode 100644 arch/ppc/boot/simple/pibs.c
 delete mode 100644 arch/ppc/boot/simple/prepmap.c
 delete mode 100644 arch/ppc/boot/simple/qspan_pci.c
 delete mode 100644 arch/ppc/boot/simple/relocate.S
 delete mode 100644 arch/ppc/boot/simple/rw4/ppc_40x.h
 delete mode 100644 arch/ppc/boot/simple/rw4/rw4_init.S
 delete mode 100644 arch/ppc/boot/simple/rw4/rw4_init_brd.S
 delete mode 100644 arch/ppc/boot/simple/rw4/stb.h
 delete mode 100644 arch/ppc/boot/simple/uartlite_tty.c
 delete mode 100644 arch/ppc/boot/utils/.gitignore
 delete mode 100644 arch/ppc/boot/utils/elf.pl
 delete mode 100644 arch/ppc/boot/utils/mkbugboot.c
 delete mode 100644 arch/ppc/boot/utils/mkprep.c
 delete mode 100644 arch/ppc/boot/utils/mktree.c
 delete mode 100644 arch/ppc/configs/FADS_defconfig
 delete mode 100644 arch/ppc/configs/IVMS8_defconfig
 delete mode 100644 arch/ppc/configs/TQM823L_defconfig
 delete mode 100644 arch/ppc/configs/TQM8260_defconfig
 delete mode 100644 arch/ppc/configs/TQM850L_defconfig
 delete mode 100644 arch/ppc/configs/TQM860L_defconfig
 delete mode 100644 arch/ppc/configs/bamboo_defconfig
 delete mode 100644 arch/ppc/configs/bseip_defconfig
 delete mode 100644 arch/ppc/configs/bubinga_defconfig
 delete mode 100644 arch/ppc/configs/chestnut_defconfig
 delete mode 100644 arch/ppc/configs/cpci405_defconfig
 delete mode 100644 arch/ppc/configs/cpci690_defconfig
 delete mode 100644 arch/ppc/configs/ebony_defconfig
 delete mode 100644 arch/ppc/configs/ep405_defconfig
 delete mode 100644 arch/ppc/configs/est8260_defconfig
 delete mode 100644 arch/ppc/configs/ev64260_defconfig
 delete mode 100644 arch/ppc/configs/ev64360_defconfig
 delete mode 100644 arch/ppc/configs/hdpu_defconfig
 delete mode 100644 arch/ppc/configs/katana_defconfig
 delete mode 100644 arch/ppc/configs/lite5200_defconfig
 delete mode 100644 arch/ppc/configs/lopec_defconfig
 delete mode 100644 arch/ppc/configs/luan_defconfig
 delete mode 100644 arch/ppc/configs/mbx_defconfig
 delete mode 100644 arch/ppc/configs/ml300_defconfig
 delete mode 100644 arch/ppc/configs/ml403_defconfig
 delete mode 100644 arch/ppc/configs/mvme5100_defconfig
 delete mode 100644 arch/ppc/configs/ocotea_defconfig
 delete mode 100644 arch/ppc/configs/pplus_defconfig
 delete mode 100644 arch/ppc/configs/prep_defconfig
 delete mode 100644 arch/ppc/configs/prpmc750_defconfig
 delete mode 100644 arch/ppc/configs/prpmc800_defconfig
 delete mode 100644 arch/ppc/configs/radstone_ppc7d_defconfig
 delete mode 100644 arch/ppc/configs/redwood5_defconfig
 delete mode 100644 arch/ppc/configs/redwood6_defconfig
 delete mode 100644 arch/ppc/configs/rpx8260_defconfig
 delete mode 100644 arch/ppc/configs/rpxcllf_defconfig
 delete mode 100644 arch/ppc/configs/rpxlite_defconfig
 delete mode 100644 arch/ppc/configs/sandpoint_defconfig
 delete mode 100644 arch/ppc/configs/spruce_defconfig
 delete mode 100644 arch/ppc/configs/sycamore_defconfig
 delete mode 100644 arch/ppc/configs/taishan_defconfig
 delete mode 100644 arch/ppc/configs/walnut_defconfig
 delete mode 100644 arch/ppc/kernel/Makefile
 delete mode 100644 arch/ppc/kernel/asm-offsets.c
 delete mode 100644 arch/ppc/kernel/cpu_setup_power4.S
 delete mode 100644 arch/ppc/kernel/entry.S
 delete mode 100644 arch/ppc/kernel/head.S
 delete mode 100644 arch/ppc/kernel/head_44x.S
 delete mode 100644 arch/ppc/kernel/head_4xx.S
 delete mode 100644 arch/ppc/kernel/head_8xx.S
 delete mode 100644 arch/ppc/kernel/head_booke.h
 delete mode 100644 arch/ppc/kernel/machine_kexec.c
 delete mode 100644 arch/ppc/kernel/misc.S
 delete mode 100644 arch/ppc/kernel/pci.c
 delete mode 100644 arch/ppc/kernel/ppc-stub.c
 delete mode 100644 arch/ppc/kernel/ppc_htab.c
 delete mode 100644 arch/ppc/kernel/ppc_ksyms.c
 delete mode 100644 arch/ppc/kernel/relocate_kernel.S
 delete mode 100644 arch/ppc/kernel/setup.c
 delete mode 100644 arch/ppc/kernel/smp-tbsync.c
 delete mode 100644 arch/ppc/kernel/smp.c
 delete mode 100644 arch/ppc/kernel/softemu8xx.c
 delete mode 100644 arch/ppc/kernel/time.c
 delete mode 100644 arch/ppc/kernel/traps.c
 delete mode 100644 arch/ppc/kernel/vmlinux.lds.S
 delete mode 100644 arch/ppc/lib/Makefile
 delete mode 100644 arch/ppc/lib/checksum.S
 delete mode 100644 arch/ppc/lib/div64.S
 delete mode 100644 arch/ppc/lib/locks.c
 delete mode 100644 arch/ppc/lib/string.S
 delete mode 100644 arch/ppc/mm/44x_mmu.c
 delete mode 100644 arch/ppc/mm/4xx_mmu.c
 delete mode 100644 arch/ppc/mm/Makefile
 delete mode 100644 arch/ppc/mm/fault.c
 delete mode 100644 arch/ppc/mm/hashtable.S
 delete mode 100644 arch/ppc/mm/init.c
 delete mode 100644 arch/ppc/mm/mem_pieces.c
 delete mode 100644 arch/ppc/mm/mem_pieces.h
 delete mode 100644 arch/ppc/mm/mmu_context.c
 delete mode 100644 arch/ppc/mm/mmu_decl.h
 delete mode 100644 arch/ppc/mm/pgtable.c
 delete mode 100644 arch/ppc/mm/ppc_mmu.c
 delete mode 100644 arch/ppc/mm/tlb.c
 delete mode 100644 arch/ppc/platforms/4xx/Kconfig
 delete mode 100644 arch/ppc/platforms/4xx/Makefile
 delete mode 100644 arch/ppc/platforms/4xx/bamboo.c
 delete mode 100644 arch/ppc/platforms/4xx/bamboo.h
 delete mode 100644 arch/ppc/platforms/4xx/bubinga.c
 delete mode 100644 arch/ppc/platforms/4xx/bubinga.h
 delete mode 100644 arch/ppc/platforms/4xx/cpci405.c
 delete mode 100644 arch/ppc/platforms/4xx/cpci405.h
 delete mode 100644 arch/ppc/platforms/4xx/ebony.c
 delete mode 100644 arch/ppc/platforms/4xx/ebony.h
 delete mode 100644 arch/ppc/platforms/4xx/ep405.c
 delete mode 100644 arch/ppc/platforms/4xx/ep405.h
 delete mode 100644 arch/ppc/platforms/4xx/ibm405ep.c
 delete mode 100644 arch/ppc/platforms/4xx/ibm405ep.h
 delete mode 100644 arch/ppc/platforms/4xx/ibm405gp.c
 delete mode 100644 arch/ppc/platforms/4xx/ibm405gp.h
 delete mode 100644 arch/ppc/platforms/4xx/ibm405gpr.c
 delete mode 100644 arch/ppc/platforms/4xx/ibm405gpr.h
 delete mode 100644 arch/ppc/platforms/4xx/ibm440ep.c
 delete mode 100644 arch/ppc/platforms/4xx/ibm440ep.h
 delete mode 100644 arch/ppc/platforms/4xx/ibm440gp.c
 delete mode 100644 arch/ppc/platforms/4xx/ibm440gp.h
 delete mode 100644 arch/ppc/platforms/4xx/ibm440gx.c
 delete mode 100644 arch/ppc/platforms/4xx/ibm440gx.h
 delete mode 100644 arch/ppc/platforms/4xx/ibm440sp.c
 delete mode 100644 arch/ppc/platforms/4xx/ibm440sp.h
 delete mode 100644 arch/ppc/platforms/4xx/ibmnp405h.c
 delete mode 100644 arch/ppc/platforms/4xx/ibmnp405h.h
 delete mode 100644 arch/ppc/platforms/4xx/ibmstb4.c
 delete mode 100644 arch/ppc/platforms/4xx/ibmstb4.h
 delete mode 100644 arch/ppc/platforms/4xx/ibmstbx25.c
 delete mode 100644 arch/ppc/platforms/4xx/ibmstbx25.h
 delete mode 100644 arch/ppc/platforms/4xx/luan.c
 delete mode 100644 arch/ppc/platforms/4xx/luan.h
 delete mode 100644 arch/ppc/platforms/4xx/ocotea.c
 delete mode 100644 arch/ppc/platforms/4xx/ocotea.h
 delete mode 100644 arch/ppc/platforms/4xx/ppc440spe.c
 delete mode 100644 arch/ppc/platforms/4xx/ppc440spe.h
 delete mode 100644 arch/ppc/platforms/4xx/redwood5.c
 delete mode 100644 arch/ppc/platforms/4xx/redwood5.h
 delete mode 100644 arch/ppc/platforms/4xx/redwood6.c
 delete mode 100644 arch/ppc/platforms/4xx/redwood6.h
 delete mode 100644 arch/ppc/platforms/4xx/sycamore.c
 delete mode 100644 arch/ppc/platforms/4xx/sycamore.h
 delete mode 100644 arch/ppc/platforms/4xx/taishan.c
 delete mode 100644 arch/ppc/platforms/4xx/taishan.h
 delete mode 100644 arch/ppc/platforms/4xx/virtex.h
 delete mode 100644 arch/ppc/platforms/4xx/walnut.c
 delete mode 100644 arch/ppc/platforms/4xx/walnut.h
 delete mode 100644 arch/ppc/platforms/4xx/xilinx_ml300.c
 delete mode 100644 arch/ppc/platforms/4xx/xilinx_ml403.c
 delete mode 100644 arch/ppc/platforms/4xx/xparameters/xparameters.h
 delete mode 100644
arch/ppc/platforms/4xx/xparameters/xparameters_ml300.h
 delete mode 100644
arch/ppc/platforms/4xx/xparameters/xparameters_ml403.h
 delete mode 100644 arch/ppc/platforms/4xx/yucca.c
 delete mode 100644 arch/ppc/platforms/4xx/yucca.h
 delete mode 100644 arch/ppc/platforms/Makefile
 delete mode 100644 arch/ppc/platforms/bseip.h
 delete mode 100644 arch/ppc/platforms/ccm.h
 delete mode 100644 arch/ppc/platforms/chestnut.c
 delete mode 100644 arch/ppc/platforms/chestnut.h
 delete mode 100644 arch/ppc/platforms/cpci690.c
 delete mode 100644 arch/ppc/platforms/cpci690.h
 delete mode 100644 arch/ppc/platforms/est8260.h
 delete mode 100644 arch/ppc/platforms/ev64260.c
 delete mode 100644 arch/ppc/platforms/ev64260.h
 delete mode 100644 arch/ppc/platforms/ev64360.c
 delete mode 100644 arch/ppc/platforms/ev64360.h
 delete mode 100644 arch/ppc/platforms/fads.h
 delete mode 100644 arch/ppc/platforms/hdpu.c
 delete mode 100644 arch/ppc/platforms/hdpu.h
 delete mode 100644 arch/ppc/platforms/hermes.h
 delete mode 100644 arch/ppc/platforms/ip860.h
 delete mode 100644 arch/ppc/platforms/ivms8.h
 delete mode 100644 arch/ppc/platforms/katana.c
 delete mode 100644 arch/ppc/platforms/katana.h
 delete mode 100644 arch/ppc/platforms/lantec.h
 delete mode 100644 arch/ppc/platforms/lite5200.c
 delete mode 100644 arch/ppc/platforms/lite5200.h
 delete mode 100644 arch/ppc/platforms/lopec.c
 delete mode 100644 arch/ppc/platforms/lopec.h
 delete mode 100644 arch/ppc/platforms/lwmon.h
 delete mode 100644 arch/ppc/platforms/mbx.h
 delete mode 100644 arch/ppc/platforms/mpc866ads_setup.c
 delete mode 100644 arch/ppc/platforms/mvme5100.c
 delete mode 100644 arch/ppc/platforms/mvme5100.h
 delete mode 100644 arch/ppc/platforms/pal4.h
 delete mode 100644 arch/ppc/platforms/pal4_pci.c
 delete mode 100644 arch/ppc/platforms/pal4_serial.h
 delete mode 100644 arch/ppc/platforms/pal4_setup.c
 delete mode 100644 arch/ppc/platforms/pcu_e.h
 delete mode 100644 arch/ppc/platforms/powerpmc250.c
 delete mode 100644 arch/ppc/platforms/powerpmc250.h
 delete mode 100644 arch/ppc/platforms/pplus.c
 delete mode 100644 arch/ppc/platforms/pplus.h
 delete mode 100644 arch/ppc/platforms/prep_pci.c
 delete mode 100644 arch/ppc/platforms/prep_setup.c
 delete mode 100644 arch/ppc/platforms/prpmc750.c
 delete mode 100644 arch/ppc/platforms/prpmc750.h
 delete mode 100644 arch/ppc/platforms/prpmc800.c
 delete mode 100644 arch/ppc/platforms/prpmc800.h
 delete mode 100644 arch/ppc/platforms/radstone_ppc7d.c
 delete mode 100644 arch/ppc/platforms/radstone_ppc7d.h
 delete mode 100644 arch/ppc/platforms/residual.c
 delete mode 100644 arch/ppc/platforms/rpx8260.h
 delete mode 100644 arch/ppc/platforms/rpxclassic.h
 delete mode 100644 arch/ppc/platforms/rpxlite.h
 delete mode 100644 arch/ppc/platforms/sandpoint.c
 delete mode 100644 arch/ppc/platforms/sandpoint.h
 delete mode 100644 arch/ppc/platforms/sbc82xx.c
 delete mode 100644 arch/ppc/platforms/sbc82xx.h
 delete mode 100644 arch/ppc/platforms/sbs8260.h
 delete mode 100644 arch/ppc/platforms/spruce.c
 delete mode 100644 arch/ppc/platforms/spruce.h
 delete mode 100644 arch/ppc/platforms/tqm8260.h
 delete mode 100644 arch/ppc/platforms/tqm8260_setup.c
 delete mode 100644 arch/ppc/platforms/tqm8xx.h
 delete mode 100644 arch/ppc/syslib/Makefile
 delete mode 100644 arch/ppc/syslib/btext.c
 delete mode 100644 arch/ppc/syslib/cpc700.h
 delete mode 100644 arch/ppc/syslib/cpc700_pic.c
 delete mode 100644 arch/ppc/syslib/cpm2_common.c
 delete mode 100644 arch/ppc/syslib/cpm2_pic.c
 delete mode 100644 arch/ppc/syslib/cpm2_pic.h
 delete mode 100644 arch/ppc/syslib/gen550.h
 delete mode 100644 arch/ppc/syslib/gen550_dbg.c
 delete mode 100644 arch/ppc/syslib/gen550_kgdb.c
 delete mode 100644 arch/ppc/syslib/gt64260_pic.c
 delete mode 100644 arch/ppc/syslib/harrier.c
 delete mode 100644 arch/ppc/syslib/hawk_common.c
 delete mode 100644 arch/ppc/syslib/i8259.c
 delete mode 100644 arch/ppc/syslib/ibm440gp_common.c
 delete mode 100644 arch/ppc/syslib/ibm440gp_common.h
 delete mode 100644 arch/ppc/syslib/ibm440gx_common.c
 delete mode 100644 arch/ppc/syslib/ibm440gx_common.h
 delete mode 100644 arch/ppc/syslib/ibm440sp_common.c
 delete mode 100644 arch/ppc/syslib/ibm440sp_common.h
 delete mode 100644 arch/ppc/syslib/ibm44x_common.c
 delete mode 100644 arch/ppc/syslib/ibm44x_common.h
 delete mode 100644 arch/ppc/syslib/ibm_ocp.c
 delete mode 100644 arch/ppc/syslib/indirect_pci.c
 delete mode 100644 arch/ppc/syslib/m8260_pci_erratum9.c
 delete mode 100644 arch/ppc/syslib/m8260_setup.c
 delete mode 100644 arch/ppc/syslib/m82xx_pci.c
 delete mode 100644 arch/ppc/syslib/m82xx_pci.h
 delete mode 100644 arch/ppc/syslib/m8xx_setup.c
 delete mode 100644 arch/ppc/syslib/m8xx_wdt.c
 delete mode 100644 arch/ppc/syslib/m8xx_wdt.h
 delete mode 100644 arch/ppc/syslib/mpc10x_common.c
 delete mode 100644 arch/ppc/syslib/mpc52xx_devices.c
 delete mode 100644 arch/ppc/syslib/mpc52xx_pci.c
 delete mode 100644 arch/ppc/syslib/mpc52xx_pci.h
 delete mode 100644 arch/ppc/syslib/mpc52xx_pic.c
 delete mode 100644 arch/ppc/syslib/mpc52xx_setup.c
 delete mode 100644 arch/ppc/syslib/mpc52xx_sys.c
 delete mode 100644 arch/ppc/syslib/mpc8xx_devices.c
 delete mode 100644 arch/ppc/syslib/mpc8xx_sys.c
 delete mode 100644 arch/ppc/syslib/mv64360_pic.c
 delete mode 100644 arch/ppc/syslib/mv64x60.c
 delete mode 100644 arch/ppc/syslib/mv64x60_dbg.c
 delete mode 100644 arch/ppc/syslib/mv64x60_win.c
 delete mode 100644 arch/ppc/syslib/ocp.c
 delete mode 100644 arch/ppc/syslib/open_pic.c
 delete mode 100644 arch/ppc/syslib/open_pic2.c
 delete mode 100644 arch/ppc/syslib/open_pic_defs.h
 delete mode 100644 arch/ppc/syslib/pci_auto.c
 delete mode 100644 arch/ppc/syslib/ppc403_pic.c
 delete mode 100644 arch/ppc/syslib/ppc405_pci.c
 delete mode 100644 arch/ppc/syslib/ppc440spe_pcie.c
 delete mode 100644 arch/ppc/syslib/ppc440spe_pcie.h
 delete mode 100644 arch/ppc/syslib/ppc4xx_dma.c
 delete mode 100644 arch/ppc/syslib/ppc4xx_pic.c
 delete mode 100644 arch/ppc/syslib/ppc4xx_setup.c
 delete mode 100644 arch/ppc/syslib/ppc4xx_sgdma.c
 delete mode 100644 arch/ppc/syslib/ppc8xx_pic.c
 delete mode 100644 arch/ppc/syslib/ppc8xx_pic.h
 delete mode 100644 arch/ppc/syslib/ppc_sys.c
 delete mode 100644 arch/ppc/syslib/pq2_devices.c
 delete mode 100644 arch/ppc/syslib/pq2_sys.c
 delete mode 100644 arch/ppc/syslib/prep_nvram.c
 delete mode 100644 arch/ppc/syslib/qspan_pci.c
 delete mode 100644 arch/ppc/syslib/todc_time.c
 delete mode 100644 arch/ppc/syslib/virtex_devices.c
 delete mode 100644 arch/ppc/syslib/virtex_devices.h
 delete mode 100644 arch/ppc/syslib/xilinx_pic.c
 delete mode 100644 arch/ppc/xmon/Makefile
 delete mode 100644 arch/ppc/xmon/ansidecl.h
 delete mode 100644 arch/ppc/xmon/nonstdio.h
 delete mode 100644 arch/ppc/xmon/ppc-dis.c
 delete mode 100644 arch/ppc/xmon/ppc-opc.c
 delete mode 100644 arch/ppc/xmon/ppc.h
 delete mode 100644 arch/ppc/xmon/privinst.h
 delete mode 100644 arch/ppc/xmon/setjmp.c
 delete mode 100644 arch/ppc/xmon/start.c
 delete mode 100644 arch/ppc/xmon/start_8xx.c
 delete mode 100644 arch/ppc/xmon/subr_prf.c
 delete mode 100644 arch/ppc/xmon/xmon.c
 create mode 100644 drivers/char/bsr.c
 delete mode 100644 drivers/net/fec_8xx/Kconfig
 delete mode 100644 drivers/net/fec_8xx/Makefile
 delete mode 100644 drivers/net/fec_8xx/fec_8xx-netta.c
 delete mode 100644 drivers/net/fec_8xx/fec_8xx.h
 delete mode 100644 drivers/net/fec_8xx/fec_main.c
 delete mode 100644 drivers/net/fec_8xx/fec_mii.c
 create mode 100644 include/asm-powerpc/code-patching.h
 create mode 100644 include/asm-powerpc/dcr-generic.h
 create mode 100644 include/asm-powerpc/feature-fixups.h
 create mode 100644 include/asm-powerpc/fsl_gtm.h
 create mode 100644 include/asm-powerpc/mpc6xx.h
 delete mode 100644 include/asm-ppc/8xx_immap.h
 delete mode 100644 include/asm-ppc/amigayle.h
 delete mode 100644 include/asm-ppc/amipcmcia.h
 delete mode 100644 include/asm-ppc/bootinfo.h
 delete mode 100644 include/asm-ppc/bootx.h
 delete mode 100644 include/asm-ppc/btext.h
 delete mode 100644 include/asm-ppc/cpm1.h
 delete mode 100644 include/asm-ppc/cpm2.h
 delete mode 100644 include/asm-ppc/delay.h
 delete mode 100644 include/asm-ppc/device.h
 delete mode 100644 include/asm-ppc/floppy.h
 delete mode 100644 include/asm-ppc/fs_pd.h
 delete mode 100644 include/asm-ppc/gg2.h
 delete mode 100644 include/asm-ppc/gt64260.h
 delete mode 100644 include/asm-ppc/gt64260_defs.h
 delete mode 100644 include/asm-ppc/harrier.h
 delete mode 100644 include/asm-ppc/hawk.h
 delete mode 100644 include/asm-ppc/hawk_defs.h
 delete mode 100644 include/asm-ppc/highmem.h
 delete mode 100644 include/asm-ppc/hydra.h
 delete mode 100644 include/asm-ppc/ibm403.h
 delete mode 100644 include/asm-ppc/ibm405.h
 delete mode 100644 include/asm-ppc/ibm44x.h
 delete mode 100644 include/asm-ppc/ibm4xx.h
 delete mode 100644 include/asm-ppc/ibm_ocp.h
 delete mode 100644 include/asm-ppc/ibm_ocp_pci.h
 delete mode 100644 include/asm-ppc/immap_cpm2.h
 delete mode 100644 include/asm-ppc/io.h
 delete mode 100644 include/asm-ppc/irq_regs.h
 delete mode 100644 include/asm-ppc/kdebug.h
 delete mode 100644 include/asm-ppc/kgdb.h
 delete mode 100644 include/asm-ppc/m8260_pci.h
 delete mode 100644 include/asm-ppc/machdep.h
 delete mode 100644 include/asm-ppc/md.h
 delete mode 100644 include/asm-ppc/mk48t59.h
 delete mode 100644 include/asm-ppc/mmu.h
 delete mode 100644 include/asm-ppc/mmu_context.h
 delete mode 100644 include/asm-ppc/mpc10x.h
 delete mode 100644 include/asm-ppc/mpc52xx.h
 delete mode 100644 include/asm-ppc/mpc52xx_psc.h
 delete mode 100644 include/asm-ppc/mpc8260.h
 delete mode 100644 include/asm-ppc/mpc8260_pci9.h
 delete mode 100644 include/asm-ppc/mpc8xx.h
 delete mode 100644 include/asm-ppc/mv64x60.h
 delete mode 100644 include/asm-ppc/mv64x60_defs.h
 delete mode 100644 include/asm-ppc/ocp.h
 delete mode 100644 include/asm-ppc/ocp_ids.h
 delete mode 100644 include/asm-ppc/open_pic.h
 delete mode 100644 include/asm-ppc/page.h
 delete mode 100644 include/asm-ppc/pc_serial.h
 delete mode 100644 include/asm-ppc/pci-bridge.h
 delete mode 100644 include/asm-ppc/pci.h
 delete mode 100644 include/asm-ppc/pgalloc.h
 delete mode 100644 include/asm-ppc/pgtable.h
 delete mode 100644 include/asm-ppc/pnp.h
 delete mode 100644 include/asm-ppc/ppc4xx_dma.h
 delete mode 100644 include/asm-ppc/ppc4xx_pic.h
 delete mode 100644 include/asm-ppc/ppc_sys.h
 delete mode 100644 include/asm-ppc/ppcboot.h
 delete mode 100644 include/asm-ppc/prep_nvram.h
 delete mode 100644 include/asm-ppc/prom.h
 delete mode 100644 include/asm-ppc/raven.h
 delete mode 100644 include/asm-ppc/reg_booke.h
 delete mode 100644 include/asm-ppc/residual.h
 delete mode 100644 include/asm-ppc/rtc.h
 delete mode 100644 include/asm-ppc/serial.h
 delete mode 100644 include/asm-ppc/smp.h
 delete mode 100644 include/asm-ppc/spinlock.h
 delete mode 100644 include/asm-ppc/suspend.h
 delete mode 100644 include/asm-ppc/system.h
 delete mode 100644 include/asm-ppc/time.h
 delete mode 100644 include/asm-ppc/todc.h
 delete mode 100644 include/asm-ppc/traps.h
 delete mode 100644 include/asm-ppc/zorro.h

Adrian Bunk (3):
      drivers/macintosh: Various cleanups
      powerpc: Don't export asm/asm-compat.h to userspace
      powerpc: asm/elf.h: Reduce userspace header

Andre Schwarz (1):
      powerpc/mpc5200: PCI write combine timer

Andrew Lewis (1):
      powerpc: Prevent memory corruption due to cache invalidation of
unaligned DMA buffer

Andy Whitcroft (1):
      powerpc: Add 64 bit version of huge_ptep_set_wrprotect

Anton Vorontsov (13):
      [POWERPC] of/gpio: Use dynamic base allocation
      [POWERPC] fsl_msi: few (mostly cosmetic) fixes
      powerpc/mpic: Fix ambiguous else statement
      powerpc/sysdev: implement FSL GTM support
      powerpc/QE: add support for QE USB clocks routing
      powerpc/QE: prepare QE PIO code for GPIO LIB support
      powerpc/QE: implement support for the GPIO LIB API
      powerpc/83xx: new board support: MPC8360E-RDK
      powerpc/QE: switch to the cpm_muram implementation
      powerpc/QE: qe_reset should be __init
      powerpc/QE: use arch_initcall to probe QUICC Engine GPIOs
      powerpc: Implement OF PCI address accessors stubs for CONFIG_PCI=n
      powerpc/86xx: mpc8610_hpcd: fix interrupt trigger type for ULi IDE

Arnd Bergmann (5):
      powerpc: Provide dummy crash_shutdown_register
      powerpc/pseries: Call pseries_kexec_setup only on pseries
      powerpc/cell: Disable ptcal in case of crash kdump
      powerpc: Increase CRASH_HANDLER_MAX
      powerpc: support for latencytop

Bart Van Assche (1):
      powerpc: Make sure that include/asm-powerpc/spinlock.h does not
trigger compilation warnings

Becky Bruce (4):
      [POWERPC] Delete unused fec_8xx net driver
      powerpc: Silly spelling fix in pgtable-ppc32
      powerpc: Change BAT code to use phys_addr_t
      powerpc: Get rid of bitfields in ppc_bat struct

Benjamin Herrenschmidt (3):
      powerpc: Free a PTE bit on ppc64 with 64K pages
      powerpc: Use new printk extension %pS to print symbols on oops
      powerpc: rework 4xx PTE access and TLB miss

Bernhard Walle (1):
      powerpc: Remove experimental status of kdump on 64-bit powerpc

Bryan O'Donoghue (1):
      [POWERPC] 83xx: Add support for Analogue & Micro ASP837E board

Daniel Walker (2):
      macintosh/therm_windtunnel: Convert semaphore to mutex
      macintosh/media bay: Convert semaphore to mutex

Dave Jiang (1):
      powerpc/85xx: publish of device for cds platforms

Dave Kleikamp (7):
      powerpc: hash_huge_page() should get the WIMG bits from the lpte
      mm: Allow architectures to define additional protection bits
      powerpc/mm: Define flags for Strong Access Ordering
      powerpc/mm: Add SAO Feature bit to the cputable
      powerpc/mm: Add Strong Access Ordering support
      powerpc/mm: Don't clear _PAGE_COHERENT when _PAGE_SAO is set
      powerpc: Remove unnecessary condition when sanity-checking WIMG
bits

David Gibson (1):
      [POWERPC] Convert remaining dts-v0 files to v1

Emil Medve (1):
      powerpc: Add the PC speaker only when requested

Eric B Munson (1):
      powerpc: Keep 3 high personality bytes across exec

Geoff Levand (1):
      powerpc/ps3: Quiet system bus match output

Giuseppe Coviello (2):
      powerpc/4xx: Sam440ep support
      powerpc/4xx: Convert Sam440ep DTS to dts-v1

Grant Erickson (2):
      ibm_newemac: Parameterize EMAC Multicast Match Handling
      ibm_newemac: Add MII mode support to the EMAC RGMII bridge.

Grant Likely (7):
      powerpc/bootwrapper: Add documentation of boot wrapper targets
      powerpc/bootwrapper: add missing bit of simpleImage target
      powerpc/bootwrapper: Allow user to specify additional default
targets
      powerpc/440: Convert Virtex ML507 device tree to dts-v1
      powerpc/mpc5200: Add PSC helpers for bestcomm engine
      powerpc/mpc5200: fix compile warnings in bestcomm driver
      powerpc: Modify MPC52xx maintainers entry to cover all MPC5xxx
parts

Imre Kaloz (1):
      powerpc/4xx: MTD support for the AMCC Taishan Board

Jason Jin (5):
      [POWERPC] Update booting-without-of for Freescale PCIe MSI
      [POWERPC] fsl: PCIe MSI support for 83xx/85xx/86xx processors.
      [POWERPC] 86xx: Enable MSI support for MPC8610HPCD board
      [POWERPC] 85xx: Enable MSI support for 85xxds board
      powerpc/85xx: Minor fixes for 85xxds and 8536ds board.

Jeremy Kerr (4):
      powerpc/spufs: avoid magic numbers for mapping sizes
      powerpc/spufs: allow spufs files to specify sizes
      powerpc/spufs: add sizes for context files
      powerpc/spufs: only add ".ctx" file with "debug" mount option

Jerone Young (1):
      powerpc/booke: Fix definitions for dbcr[1-2] and dbsr registers

Jochen Friedrich (1):
      powerpc/CPM: Add i2c pins to dts and board setup

Joel Schopp (2):
      powerpc: Add cputable entry for Power7 architected mode
      powerpc: Tell firmware we support architecture V2.06

John Linn (5):
      powerpc/virtex: add dts file for ML507 reference design
      powerpc/virtex: Fix booting of Xilinx FPGAs with 16550 for 405 and
440
      powerpc/virtex: add Xilinx Virtex 5 ppc440 platform support
      powerpc/virtex: add Xilinx 440 cpu to the cputable
      powerpc/virtex: add defconfig for virtex 5 platforms

John Rigby (4):
      powerpc/mpc5121: Update device tree for MPC5121ADS evaluation
board
      powerpc/mpc5121: Add clock driver
      powerpc/mpc5121: Add generic board support for MPC5121 platforms
      powerpc/mpc5121: Add support for CPLD on MPC5121ADS board

Jon Smirl (1):
      powerpc/i2c: Convert i2c-mpc into an of_platform driver

Josh Boyer (5):
      [POWERPC] 4xx: Fix PCI mem in rainier DTS
      [POWERPC] 4xx: Fix compiler warning on DCR_NATIVE only builds
      Revert "[POWERPC] 4xx: Fix 460GT support to not enable FPU"
      powerpc/4xx: Workaround for PPC440EPx/GRx PCI_28 Errata
      powerpc/44x: Update ppc44x_defconfig

Julia Lawall (1):
      drivers/macintosh/smu.c: Improve error handling

Kim Phillips (1):
      powerpc/fsl: update crypto node definition and device tree
instances

Kumar Gala (29):
      [POWERPC] Set lower flag bits in regs->trap to indicate debug
level exception
      [POWERPC] mpic: Deal with bogus NIRQ in Feature Reporting Register
      [POWERPC] Cleanup mpic nodes in .dts
      [POWERPC] 85xx: Add next-level-cache property
      [POWERPC] Move to runtime allocated exception stacks
      [POWERPC] Rework EXC_LEVEL_EXCEPTION_PROLOG code
      [POWERPC] 40x/Book-E: Save/restore volatile exception registers
      powerpc/booke: Fix some comments related to debug level exceptions
      powerpc/booke: Add support for new e500mc core
      powerpc/85xx: add DOZE/NAP support for e500 core
      powerpc/e500mc: flush L2 on NAP for e500mc
      cpm_uart: fix whitespace issues
      cpm_uart: Remove !CONFIG_PPC_CPM_NEW_BINDING code
      powerpc/cpm: Remove !CONFIG_PPC_CPM_NEW_BINDING code
      powerpc/kprobes: Some minor fixes
      powerpc/booke: Add kprobes support for booke style processors
      powerpc: Add dma nodes to 83xx, 85xx and 86xx boards
      powerpc: Move common module code into its own file
      powerpc/bootwrapper: Pad .dtb by default
      powerpc: Fix building of feature-fixup tests on ppc32
      powerpc: Fixup lwsync at runtime
      powerpc/85xx: Fix KSI8560 .dts
      powerpc/85xx: minor fixes for MPC85xx DS board port
      powerpc/85xx: Add support for MPC8536DS
      powerpc/86xx: Refactor pic init
      powerpc/booke: don't reinitialize time base
      powerpc: Add 82xx/83xx/86xx to 6xx Multiplatform
      powerpc/fsl: Refactor device bindings
      powerpc: Fix pte_update for CONFIG_PTE_64BIT and !
PTE_ATOMIC_UPDATES

Laurent Pinchart (1):
      cpm_uart: Support uart_wait_until_sent()

Luke Browning (2):
      powerpc/spufs: provide context debug file
      powerpc/spufs: don't extend time time slice if context is not in
spu_run

Mark Nelson (4):
      powerpc/dma: Add struct iommu_table argument to iommu_map_sg()
      powerpc/dma: implement new dma_*map*_attrs() interfaces
      powerpc/cell: cell_dma_dev_setup_iommu() return the iommu table
      powerpc: move device_to_mask() to dma-mapping.h

Maxim Shchetynin (1):
      powerpc/spufs: add atomic busy_spus counter to struct cbe_spu_info

Michael Ellerman (32):
      [POWERPC] Move declaration of init_bootmem_done into system.h
      [POWERPC] Fix sparse warnings in arch/powerpc/mm
      [POWERPC] Move declaration of tce variables into mmu-hash64.h
      [POWERPC] Remove duplicate variable definitions in mm/tlb_64.c
      [POWERPC] sysdev/mpic_msi.c should include sysdev/mpic.h
      [POWERPC] Add a declaration for xmon()
      [POWERPC] Move xmon_irq() declaration into xmon.h
      [POWERPC] Fix sparse warnings in xmon.c
      [POWERPC] Make cpus_in_xmon static and remove extern mess from
hvc_console.c
      [POWERPC] Fix sparse warnings in arch/powerpc/kernel
      [POWERPC] pseries/firmware.c should include pseries/pseries.h
      [POWERPC] Fix sparse warnings in arch/powerpc/platforms/pseries
      [POWERPC] Add debugging trigger to Axon MSI code
      [POWERPC] Remove unnecessary cast in arch_deref_entry_point()
      powerpc: Rework Axon MSI setup so we can avoid freeing the
irq_host
      powerpc: Rework ipic_init() so we can avoid freeing the irq_host
      powerpc: Rework qe_ic_init() so we can avoid freeing the irq_host
      powerpc: Fix irq_alloc_host() reference counting and callers
      powerpc: Move code patching code into
arch/powerpc/lib/code-patching.c
      powerpc: Allow create_branch() to return errors
      powerpc: Make create_branch() return errors if the branch target
is too large
      powerpc: Add ppc_function_entry() which gets the entry point for a
function
      powerpc: Add new code patching routines
      powerpc: Add tests of the code patching routines
      powerpc: Add PPC_NOP_INSTR, a hash define for the preferred nop
instruction
      powerpc: Split out do_feature_fixups() from cputable.c
      powerpc: Consolidate CPU and firmware feature fixup macros
      powerpc: Consolidate feature fixup macros for 64/32 bit
      powerpc: Introduce infrastructure for feature sections with
alternatives
      powerpc: Add logic to patch alternative feature sections
      powerpc: Add self-tests of the feature fixup code
      powerpc: Use an alternative feature section in entry_64.S

Michael Neuling (19):
      powerpc: Add cputable entry for POWER7
      powerpc: Fix MSR setting in 32 bit signal code
      powerpc: Add macros to access floating point registers in
thread_struct.
      powerpc: Move altivec_unavailable
      powerpc: Make load_up_fpu and load_up_altivec callable
      powerpc: Introduce VSX thread_struct and CONFIG_VSX
      powerpc: Add VSX CPU feature
      powerpc: Add VSX assembler code macros
      powerpc: Add VSX context save/restore, ptrace and signal support
      powerpc: Add CONFIG_VSX config option
      powerpc: Fix compile error for CONFIG_VSX
      powerpc: Update for VSX core file and ptrace
      powerpc: Fix compile warning in init_thread
      powerpc: Clean up copy_to/from_user for vsx and fpr
      powerpc: Remove old dump_task_* functions
      powerpc: fix swapcontext backwards compat. with VSX ucontext
changes
      powerpc: remove unused variable in emulate_fp_pair
      powerpc: fix giveup_vsx to save registers correctly
      powerpc: Add VSX load/store alignment exception handler

Mike Mason (1):
      powerpc/eeh: PERR/SERR bit settings during EEH device recovery

Nathan Fontenot (5):
      powerpc/pseries: Allow phandle to be specified in formats other
than decimal
      powerpc/pseries: Use base address to derive starting page frame
number
      powerpc/pseries: Update the device tree correctly for drconf
memory add/remove
      powerpc/pseries: Split code into helper routines for drconf memory
      powerpc/pseries: Update numa association of hotplug memory add for
drconf memory

Nathan Lynch (1):
      powerpc: Add PPC_FEATURE_PSERIES_PERFMON_COMPAT

Nick Piggin (2):
      powerpc: Optimise smp_wmb on 64-bit processors
      spufs: Convert nopfn to fault

Nye Liu (1):
      powerpc/CPM: Minor cosmetic changes to udbg_putc

Olaf Hering (1):
      [POWERPC] Create modalias file in sysfs for of_platform bus

Paul Gortmaker (1):
      powerpc/ibmebus: more meaningful variable name

Paul Mackerras (3):
      [POWERPC] Defer processing of interrupts when the CPU wakes from
sleep mode
      powerpc: Remove arch/ppc and include/asm-ppc
      powerpc: Only demote individual slices rather than whole process

Remi Machet (6):
      [POWERPC] Create of_buses for MV64x60 devices
      powerpc: DTS file for the C2K
      powerpc: Boot code for the C2K
      powerpc: C2K board driver
      powerpc: Default configuration for C2K
      powerpc: Add C2K to configuration

Robert P. J. Day (2):
      [POWERPC] Get most of ioctl.h content from <asm-generic/ioctl.h>
      OpenFirmware: Include <linux/of_i2c.h> from of_i2c.c.

Roel Kluin (2):
      [POWERPC] mpic_pasemi_msi: Failed allocation unnoticed
      [POWERPC] mpic_u3msi: Failed allocation unnoticed

Roland McGrath (2):
      [POWERPC] Define and use TLF_RESTORE_SIGMASK
      [POWERPC] Tweak VDSO linker script to avoid upsetting old binutils

Rune Torgersen (3):
      powerpc: Check that TASK_SIZE does not overlap KERNEL_START
      cpm_uart: Fix cpm uart corruption with PREEMPT_RT
      powerpc: Fix pq2fads irq handling with PREEMPT_RT

Scott Wood (2):
      [POWERPC] Add 6xx-style HID0_SLEEP support.
      powerpc: Fix copy-and-paste error in clrsetbits_le16

Sean MacLennan (3):
      [POWERPC] PIKA Warp: Update DTS to support Rev B boards
      [POWERPC] PIKA Warp: Update platform code to support Rev B boards
      powerpc/44x: Support NAND boot for Rev A Warp boards

Segher Boessenkool (1):
      powerpc: Get rid of CROSS32{AS,LD,OBJCOPY}

Sonny Rao (2):
      powerpc: Add driver for Barrier Synchronization Register
      powerpc: Don't spin on sync instruction at boot time

Srinivasa Ds (1):
      powerpc: Implement task_pt_regs() accessor

Stefan Roese (2):
      powerpc/4xx: PCIe driver now detects if a port is disabled via the
dev-tree
      powerpc: Fix problems with 32bit PPC's running with >= 4GB of RAM

Stephen Neuendorffer (1):
      [POWERPC] Refactor DCR code

Stephen Rothwell (14):
      [POWERPC] Move of_device_get_modalias to drivers/of
      of_serial: Use linux/of_platform.h instead of asm
      platinumfb: Use linux/of_{device,platform}.h instead of asm
      viotape: Use unlocked_ioctl
      pasemi-rng: Use linux/of_platform.h instead of asm
      hwmon: Use linux/of_platform.h instead of asm
      macintosh: Use linux/of_{device,platform}.h instead of asm
      drivers/net: Use linux/of_{device,platform}.h instead of asm
      pcmcia: Use linux/of_{device,platform}.h instead of asm
      powerpc: Explicitly copy elements of pt_regs
      powerpc/pata_mpc52xx: use linux/of_platform.h instead of asm
      powerpc/mpc52xx_psc_spi: use linux/of_platform.h instead of asm
      powerpc/mpc5200_wdt: use linux/of_platform.h instead of asm
      powerpc: mman.h export fixups

Takashi Iwai (1):
      powerpc: Fix a build problem on ppc32 with new DMA_ATTRs

Timur Tabi (3):
      [POWERPC] fsl: Add warning for unrecognized I2C nodes in the
device tree
      [POWERPC] fsl: Add CS4270 i2c data to fsl_soc.c
      [POWERPC] fsl: Update fsl_soc to use cell-index property of I2C
nodes

Tony Breeds (2):
      powerpc: Change the default link address for pSeries zImage
kernels
      powerpc: Fix building of arch/powerpc/mm/mem.o when
MEMORY_HOTPLUG=y and SPARSEMEM=n

Trent Piepho (1):
      powerpc: Improve (in|out)_[bl]eXX() asm code

Valentine Barshak (1):
      powerpc/4xx: Fix resource issue in warp-nand.c

Vitaly Bordug (1):
      powerpc/85xx: Update pin setup for 8560ads

Wolfgang Grandegger (6):
      powerpc/85xx: correct vendor prefix in DTS files for TQM85xx
modules
      powerpc/85xx: add board support for the TQM8548 modules
      powerpc/85xx: support for the TQM8548 module using the big Flash
      powerpc/85xx: add local bus nodes for Flash and CAN to tqm8560.dts
      powerpc/mpc5200: add missing MSCAN FDT nodes for TQM52xx
      powerpc/85xx: TQM8548: add missing support for RTC and LM75

^ permalink raw reply

* Failure of request_irq()  for MPC8313 using arch=powerpc
From: Duy-Ky Nguyen @ 2008-07-16  0:58 UTC (permalink / raw)
  To: linuxppc-embedded

[-- Attachment #1: Type: text/plain, Size: 703 bytes --]

Hello,

I had no problem in using request_irq() for MPC8272 with arch=ppc from Montavista Linux

But I have failure for MPC8313 with arch=powerpc from FreeScale LTIB Linux with error code -38

I found its header file mpc83xx.h under include/asm-ppc, while it's supposed to be under include/asm-powerpc.

I did try to copy the header file to directory asm-powerpc

>From MPC8313 datasheet, I have 

GPIO_IRQ = 74

and I use

DEVICE_NAME = "ppc"
IRQ_FLAG = IRQF_SHARED    // use new flag
here my function call

request_irq (GPIO_IRQ,
      ppc_ISR,  
      IRQ_FLAG,
      DEVICE_NAME,   
      NULL);   

I'd appreciate any help on this problem.

Best Regards,

Duy-Kyng


[-- Attachment #2: Type: text/html, Size: 2511 bytes --]

^ permalink raw reply

* Re: Comiler error compiling 2.6.26
From: Segher Boessenkool @ 2008-07-16  0:41 UTC (permalink / raw)
  To: Rune Torgersen; +Cc: linuxppc-dev
In-Reply-To: <DCEAAC0833DD314AB0B58112AD99B93B04B342D4@ismail.innsys.innovsys.com>

> Trying to cross-compile arch/powerpc for an freescale 8280:
>
> Gcc 4.1.2
> Binutils 2.17
>
> BFD: ./vmlinux.strip.7812: section .text lma 0xc0000000 overlaps
> previous sections

[etc]

Could you try with binutils 2.18?  If not, or if that doesn't help,
we'll need to see your .config .


Segher

^ permalink raw reply

* AT_BASE_PLATFORM (v2)
From: Nathan Lynch @ 2008-07-15 23:58 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: linuxppc-dev, linux-kernel, roland

Background:
Some IBM POWER-based systems have the ability to run in a
"compatibility" mode which mostly appears to the OS as a different
processor from the actual hardware.  This feature of the platform is
useful for live partition migration and for backwards compatibility
with old kernels on new hardware.  For example, a Power6 system may
appear to be a Power5+, which makes the AT_PLATFORM value "power5+".

Problem:
Booting a system in a compatibility mode means that ld.so may load
libraries that are inappropriately tuned for the real
microarchitecture, and apps that use JIT techniques do not have the
right information for generating tuned code.  While the AT_PLATFORM
auxiliary vector entry correctly indicates the ISA supported, it does
not accurately reflect the underlying microarchitecture in this case,
and there is no good way for userspace to get this information.

Proposed solution:
Add an AT_BASE_PLATFORM auxiliary vector entry which indicates the
microarchitecture.  This entry uses the same string format as
AT_PLATFORM, and is readily usable by ld.so and other applications.

Other solutions that have been suggested but found wanting:

- Use a bit in AT_HWCAP to indicate compat mode -- this is not
expressive enough.  It's not possible to derive the microarchitecture
from the combination of AT_PLATFORM's value and a single bit.

- Use dsocaps -- this seems to be a ld.so-specific interface and not
easily usable by other programs.  ld.so/glibc is not the only program
that can use knowledge of the microarchitecture.

The following two patches:
- add the base support to binfmt_elf.c for AT_BASE_PLATFORM
- implement AT_BASE_PLATFORM for powerpc

Changes since v1:
- increment AT_VECTOR_SIZE_BASE
- define AT_BASE_PLATFORM in generic code instead of powerpc

^ permalink raw reply

* [PATCH] enable AT_BASE_PLATFORM aux vector for powerpc
From: Nathan Lynch @ 2008-07-15 23:58 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: linuxppc-dev, linux-kernel, roland
In-Reply-To: <1216166331-14810-1-git-send-email-ntl@pobox.com>

Stash the first platform string matched by identify_cpu() in
powerpc_base_platform, and supply that to the ELF loader for the value
of AT_BASE_PLATFORM.

Signed-off-by: Nathan Lynch <ntl@pobox.com>
---
 arch/powerpc/kernel/cputable.c |   11 +++++++++++
 include/asm-powerpc/cputable.h |    2 ++
 include/asm-powerpc/elf.h      |    8 ++++++++
 3 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c
index f7f3c21..89d8731 100644
--- a/arch/powerpc/kernel/cputable.c
+++ b/arch/powerpc/kernel/cputable.c
@@ -23,6 +23,9 @@
 struct cpu_spec* cur_cpu_spec = NULL;
 EXPORT_SYMBOL(cur_cpu_spec);
 
+/* The platform string corresponding to the real PVR */
+const char *powerpc_base_platform;
+
 /* NOTE:
  * Unlike ppc32, ppc64 will only call this once for the boot CPU, it's
  * the responsibility of the appropriate CPU save/restore functions to
@@ -1632,6 +1635,14 @@ struct cpu_spec * __init identify_cpu(unsigned long offset, unsigned int pvr)
 			} else
 				*t = *s;
 			*PTRRELOC(&cur_cpu_spec) = &the_cpu_spec;
+
+			/*
+			 * Set the base platform string once; assumes
+			 * we're called with real pvr first.
+			 */
+			if (powerpc_base_platform == NULL)
+				powerpc_base_platform = t->platform;
+
 #if defined(CONFIG_PPC64) || defined(CONFIG_BOOKE)
 			/* ppc64 and booke expect identify_cpu to also call
 			 * setup_cpu for that processor. I will consolidate
diff --git a/include/asm-powerpc/cputable.h b/include/asm-powerpc/cputable.h
index 2a3e907..ef8a248 100644
--- a/include/asm-powerpc/cputable.h
+++ b/include/asm-powerpc/cputable.h
@@ -127,6 +127,8 @@ extern struct cpu_spec *identify_cpu(unsigned long offset, unsigned int pvr);
 extern void do_feature_fixups(unsigned long value, void *fixup_start,
 			      void *fixup_end);
 
+extern const char *powerpc_base_platform;
+
 #endif /* __ASSEMBLY__ */
 
 /* CPU kernel features */
diff --git a/include/asm-powerpc/elf.h b/include/asm-powerpc/elf.h
index 8966467..80d1f39 100644
--- a/include/asm-powerpc/elf.h
+++ b/include/asm-powerpc/elf.h
@@ -217,6 +217,14 @@ typedef elf_vrregset_t elf_fpxregset_t;
 
 #define ELF_PLATFORM	(cur_cpu_spec->platform)
 
+/* While ELF_PLATFORM indicates the ISA supported by the platform, it
+ * may not accurately reflect the underlying behavior of the hardware
+ * (as in the case of running in Power5+ compatibility mode on a
+ * Power6 machine).  ELF_BASE_PLATFORM allows ld.so to load libraries
+ * that are tuned for the real hardware.
+ */
+#define ELF_BASE_PLATFORM (powerpc_base_platform)
+
 #ifdef __powerpc64__
 # define ELF_PLAT_INIT(_r, load_addr)	do {	\
 	_r->gpr[2] = load_addr; 		\
-- 
1.5.6.2

^ permalink raw reply related

* [PATCH] elf loader support for auxvec base platform string
From: Nathan Lynch @ 2008-07-15 23:58 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: linuxppc-dev, linux-kernel, roland
In-Reply-To: <1216166331-14810-1-git-send-email-ntl@pobox.com>

Some IBM POWER-based platforms have the ability to run in a
mode which mostly appears to the OS as a different processor from the
actual hardware.  For example, a Power6 system may appear to be a
Power5+, which makes the AT_PLATFORM value "power5+".  This means that
programs are restricted to the ISA supported by Power5+;
Power6-specific instructions are treated as illegal.

However, some applications (virtual machines, optimized libraries) can
benefit from knowledge of the underlying CPU model.  A new aux vector
entry, AT_BASE_PLATFORM, will denote the actual hardware.  For
example, on a Power6 system in Power5+ compatibility mode, AT_PLATFORM
will be "power5+" and AT_BASE_PLATFORM will be "power6".  The idea is
that AT_PLATFORM indicates the instruction set supported, while
AT_BASE_PLATFORM indicates the underlying microarchitecture.

If the architecture has defined ELF_BASE_PLATFORM, copy that value to
the user stack in the same manner as ELF_PLATFORM.

Signed-off-by: Nathan Lynch <ntl@pobox.com>
---
 fs/binfmt_elf.c        |   23 +++++++++++++++++++++++
 include/linux/auxvec.h |    5 ++++-
 2 files changed, 27 insertions(+), 1 deletions(-)

diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
index d48ff5f..834c2c4 100644
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -131,6 +131,10 @@ static int padzero(unsigned long elf_bss)
 #define STACK_ALLOC(sp, len) ({ sp -= len ; sp; })
 #endif
 
+#ifndef ELF_BASE_PLATFORM
+#define ELF_BASE_PLATFORM NULL
+#endif
+
 static int
 create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec,
 		unsigned long load_addr, unsigned long interp_load_addr)
@@ -142,7 +146,9 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec,
 	elf_addr_t __user *envp;
 	elf_addr_t __user *sp;
 	elf_addr_t __user *u_platform;
+	elf_addr_t __user *u_base_platform;
 	const char *k_platform = ELF_PLATFORM;
+	const char *k_base_platform = ELF_BASE_PLATFORM;
 	int items;
 	elf_addr_t *elf_info;
 	int ei_index = 0;
@@ -172,6 +178,19 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec,
 			return -EFAULT;
 	}
 
+	/*
+	 * If this architecture has a "base" platform capability
+	 * string, copy it to userspace.
+	 */
+	u_base_platform = NULL;
+	if (k_base_platform) {
+		size_t len = strlen(k_base_platform) + 1;
+
+		u_base_platform = (elf_addr_t __user *)STACK_ALLOC(p, len);
+		if (__copy_to_user(u_base_platform, k_base_platform, len))
+			return -EFAULT;
+	}
+
 	/* Create the ELF interpreter info */
 	elf_info = (elf_addr_t *)current->mm->saved_auxv;
 	/* update AT_VECTOR_SIZE_BASE if the number of NEW_AUX_ENT() changes */
@@ -208,6 +227,10 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec,
 		NEW_AUX_ENT(AT_PLATFORM,
 			    (elf_addr_t)(unsigned long)u_platform);
 	}
+	if (k_base_platform) {
+		NEW_AUX_ENT(AT_BASE_PLATFORM,
+			    (elf_addr_t)(unsigned long)u_base_platform);
+	}
 	if (bprm->interp_flags & BINPRM_FLAGS_EXECFD) {
 		NEW_AUX_ENT(AT_EXECFD, bprm->interp_data);
 	}
diff --git a/include/linux/auxvec.h b/include/linux/auxvec.h
index ad89545..1adc61d 100644
--- a/include/linux/auxvec.h
+++ b/include/linux/auxvec.h
@@ -26,8 +26,11 @@
 
 #define AT_SECURE 23   /* secure mode boolean */
 
+#define AT_BASE_PLATFORM 38	/* string identifying real platform, may
+				 * differ from AT_PLATFORM. */
+
 #ifdef __KERNEL__
-#define AT_VECTOR_SIZE_BASE (14 + 2) /* NEW_AUX_ENT entries in auxiliary table */
+#define AT_VECTOR_SIZE_BASE (14 + 3) /* NEW_AUX_ENT entries in auxiliary table */
 #endif
 
 #endif /* _LINUX_AUXVEC_H */
-- 
1.5.6.2

^ permalink raw reply related

* Comiler error compiling 2.6.26
From: Rune Torgersen @ 2008-07-15 23:09 UTC (permalink / raw)
  To: linuxppc-dev

Trying to cross-compile arch/powerpc for an freescale 8280:

Gcc 4.1.2
Binutils 2.17

BFD: ./vmlinux.strip.7812: section .text lma 0xc0000000 overlaps
previous sections
BFD: ./vmlinux.strip.7812: section .ref.text lma 0xc024f000 overlaps
previous sections
BFD: ./vmlinux.strip.7812: section .rodata lma 0xc0251000 overlaps
previous sections
BFD: ./vmlinux.strip.7812: section .pci_fixup lma 0xc02dd2f0 overlaps
previous sections
BFD: ./vmlinux.strip.7812: section __ksymtab lma 0xc02dd930 overlaps
previous sections
BFD: ./vmlinux.strip.7812: section __ksymtab_gpl lma 0xc02e2088 overlaps
previous sections
BFD: ./vmlinux.strip.7812: section __ksymtab_strings lma 0xc02e3a20
overlaps previous sections
BFD: ./vmlinux.strip.7812: section __param lma 0xc02f08cc overlaps
previous sections
BFD: ./vmlinux.strip.7812: section __ex_table lma 0xc02f1000 overlaps
previous sections
BFD: ./vmlinux.strip.7812: section __bug_table lma 0xc02f22b8 overlaps
previous sections
BFD: ./vmlinux.strip.7812: section .init.text lma 0xc02f8000 overlaps
previous sections
BFD: ./vmlinux.strip.7812: section .exit.text lma 0xc030f908 overlaps
previous sections
BFD: ./vmlinux.strip.7812: section .init.data lma 0xc0310468 overlaps
previous sections
BFD: ./vmlinux.strip.7812: section .init.setup lma 0xc0315b70 overlaps
previous sections
BFD: ./vmlinux.strip.7812: section .initcall.init lma 0xc0315e28
overlaps previous sections
BFD: ./vmlinux.strip.7812: section .con_initcall.init lma 0xc0316050
overlaps previous sections
BFD: ./vmlinux.strip.7812: section __ftr_fixup lma 0xc0316058 overlaps
previous sections
BFD: ./vmlinux.strip.7812: section .machine.desc lma 0xc0317000 overlaps
previous sections
BFD: ./vmlinux.strip.7812: section .data lma 0xc0318000 overlaps
previous sections
BFD: ./vmlinux.strip.7812: section .data.init_task lma 0xc0330000
overlaps previous sections
BFD: ./vmlinux.strip.7812: section .data.page_aligned lma 0xc0332000
overlaps previous sections
BFD: ./vmlinux.strip.7812: section .data.cacheline_aligned lma
0xc0335000 overlaps previous sections
BFD: ./vmlinux.strip.7812: section .data.read_mostly lma 0xc0335820
overlaps previous sections

^ permalink raw reply

* Re: MPC8313 ERDB has proper interrupt mapping for TSEC?
From: Kumar Gala @ 2008-07-15 22:11 UTC (permalink / raw)
  To: selvamuthukumar v; +Cc: linuxppc-embedded
In-Reply-To: <790896390807140514r6074ec7j6d3eaf38787e3444@mail.gmail.com>


On Jul 14, 2008, at 7:14 AM, selvamuthukumar v wrote:

> From, arch/powerpc/boot/dts/mpc8313erdb.dts,
>
> 212                 enet0: ethernet@24000 {
>                                   .
>                                   .
> 219                         interrupts = <37 0x8 36 0x8 35 0x8>;
>                                   .
>                                   .
> 222                 };
> 223
> 224                 enet1: ethernet@25000 {
>                                   .
>                                   .
> 231                         interrupts = <34 0x8 33 0x8 32 0x8>;
>                                   .
> 234                 };
> 235
>
> But as per 8313 Reference manual interrups 32, 33, 34 are for
> TSEC1@24000 and 35, 36, 37 are for TSEC2@25000. Any idea why interrupt
> numbers are swapped for enet0 and enet1?

I believe different revisions of the part had different mappings.

- k

^ permalink raw reply

* SW TLB MMU rework and SMP issues
From: Kumar Gala @ 2008-07-15 21:58 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: linuxppc-dev list

Ben,

I've been giving some thought to the new software managed TLBs and SMP  
issues.  I was wondering if you had any insights on how we should deal  
with the following issues:

* tlb invalidates -- need to ensure we don't have multiple tlbsync's  
on the bus.  I'm thinking for e500/fsl we will move to IPI based  
invalidate broadcast and do invalidates locally (http://patchwork.ozlabs.org/linuxppc/patch?id=19657 
)

* 64-bit PTEs and reader vs writer hazards.  How do we ensure that the  
TLB miss handler samples a consistent view of the pte.  pte_updates  
seem ok since we only update the flag word.  However set_pte_at seems  
like it could be problematic.

- k

^ permalink raw reply

* Re: [PATCH] powerpc: correct CMO feature flag enablement
From: Brian King @ 2008-07-15 21:39 UTC (permalink / raw)
  To: Robert Jennings; +Cc: paulus, David Darrington, linuxppc-dev
In-Reply-To: <20080715212008.GA25230@linux.vnet.ibm.com>

Acked by: Brian King <brking@linux.vnet.ibm.com>

Robert Jennings wrote:
> Correct string conversion for rtas value being read for CMO configuration.
> A value of -1 in the string indicates that CMO is not enabled and we
> had used simple_strtoul rather than simple_strtol which caused problems.
> 
> Signed-off-by: Robert Jennings <rcj@linux.vnet.ibm.com>
> 
> ---
> 
> This patch applies on top of the CMO patchset sent to the list.
> 
> ---
>  arch/powerpc/platforms/pseries/setup.c |    4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> Index: b/arch/powerpc/platforms/pseries/setup.c
> ===================================================================
> --- a/arch/powerpc/platforms/pseries/setup.c
> +++ b/arch/powerpc/platforms/pseries/setup.c
> @@ -366,9 +366,9 @@ void pSeries_cmo_feature_init(void)
>  			}
> 
>  			if (0 == strcmp(key, "PrPSP"))
> -				PrPSP = simple_strtoul(value, NULL, 10);
> +				PrPSP = simple_strtol(value, NULL, 10);
>  			else if (0 == strcmp(key, "SecPSP"))
> -				SecPSP = simple_strtoul(value, NULL, 10);
> +				SecPSP = simple_strtol(value, NULL, 10);
>  			value = key = ptr + 1;
>  		}
>  		ptr++;


-- 
Brian King
Linux on Power Virtualization
IBM Linux Technology Center

^ permalink raw reply

* [PATCH] powerpc: Introduce local (non-broadcast) forms of tlb invalidates
From: Kumar Gala @ 2008-07-15 21:27 UTC (permalink / raw)
  To: linuxppc-dev

Introduced a new set of low level tlb invalidate functions that do not
broadcast invalidates on the bus:

_tlbil_all - invalidate all
_tlbil_pid - invalidate based on process id (or mm context)
_tlbil_va  - invalidate based on virtual address (ea + pid)

On non-SMP configs _tlbil_all should be functionally equivalent to _tlbia and
_tlbil_va should be functionally equivalent to _tlbie.

The intent of this change is to handle SMP based invalidates via IPIs instead
of broadcasts as the mechanism scales better for larger number of cores.

On e500 (fsl-booke mmu) based cores move to using MMUCSR for invalidate alls
and tlbsx/tlbwe for invalidate virtual address.

Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
---
 arch/powerpc/kernel/misc_32.S   |   53 +++++++++++++++++++++++++++++++++++++++
 arch/powerpc/kernel/ppc_ksyms.c |    1 +
 include/asm-powerpc/reg_booke.h |    7 +++++
 include/asm-powerpc/tlbflush.h  |   13 ++++++---
 4 files changed, 69 insertions(+), 5 deletions(-)

diff --git a/arch/powerpc/kernel/misc_32.S b/arch/powerpc/kernel/misc_32.S
index 6321ae3..9245b75 100644
--- a/arch/powerpc/kernel/misc_32.S
+++ b/arch/powerpc/kernel/misc_32.S
@@ -274,6 +274,9 @@ _GLOBAL(real_writeb)
 /*
  * Flush MMU TLB
  */
+#ifndef CONFIG_FSL_BOOKE
+_GLOBAL(_tlbil_all)
+#endif
 _GLOBAL(_tlbia)
 #if defined(CONFIG_40x)
 	sync			/* Flush to memory before changing mapping */
@@ -344,6 +347,9 @@ _GLOBAL(_tlbia)
 /*
  * Flush MMU TLB for a particular address
  */
+#ifndef CONFIG_FSL_BOOKE
+_GLOBAL(_tlbil_va)
+#endif
 _GLOBAL(_tlbie)
 #if defined(CONFIG_40x)
 	/* We run the search with interrupts disabled because we have to change
@@ -436,6 +442,53 @@ _GLOBAL(_tlbie)
 #endif /* ! CONFIG_40x */
 	blr

+#if defined(CONFIG_FSL_BOOKE)
+/*
+ * Flush MMU TLB, but only on the local processor (no broadcast)
+ */
+_GLOBAL(_tlbil_all)
+#define MMUCSR0_TLBFI	(MMUCSR0_TLB0FI | MMUCSR0_TLB1FI | \
+			 MMUCSR0_TLB2FI | MMUCSR0_TLB3FI)
+	li	r3,(MMUCSR0_TLBFI)@l
+	mtspr	SPRN_MMUCSR0, r3
+1:
+	mfspr	r3,SPRN_MMUCSR0
+	andi.	r3,r3,MMUCSR0_TLBFI@l
+	bne	1b
+	blr
+
+/*
+ * Flush MMU TLB for a particular process id, but only on the local processor
+ * (no broadcast)
+ */
+_GLOBAL(_tlbil_pid)
+	li	r3,(MMUCSR0_TLBFI)@l
+	mtspr	SPRN_MMUCSR0, r3
+1:
+	mfspr	r3,SPRN_MMUCSR0
+	andi.	r1,r2,MMUCSR0_TLBFI@l
+	bne	1b
+	blr
+
+/*
+ * Flush MMU TLB for a particular address, but only on the local processor
+ * (no broadcast)
+ */
+_GLOBAL(_tlbil_va)
+	slwi	r4,r4,16
+	mtspr	SPRN_MAS6,r4		/* assume AS=0 for now */
+	tlbsx	0,r3
+	mfspr	r4,SPRN_MAS1		/* check valid */
+	andis.	r3,r4,MAS1_VALID@h
+	beq	1f
+	rlwinm	r4,r4,0,1,31
+	mtspr	SPRN_MAS1,r4
+	tlbwe
+1:
+	blr
+#endif /* CONFIG_FSL_BOOKE */
+
+
 /*
  * Flush instruction cache.
  * This is a no-op on the 601.
diff --git a/arch/powerpc/kernel/ppc_ksyms.c b/arch/powerpc/kernel/ppc_ksyms.c
index 958ecb9..b7e4ff0 100644
--- a/arch/powerpc/kernel/ppc_ksyms.c
+++ b/arch/powerpc/kernel/ppc_ksyms.c
@@ -114,6 +114,7 @@ EXPORT_SYMBOL(flush_instruction_cache);
 EXPORT_SYMBOL(flush_tlb_kernel_range);
 EXPORT_SYMBOL(flush_tlb_page);
 EXPORT_SYMBOL(_tlbie);
+EXPORT_SYMBOL(_tlbil_va);
 #endif
 EXPORT_SYMBOL(__flush_icache_range);
 EXPORT_SYMBOL(flush_dcache_range);
diff --git a/include/asm-powerpc/reg_booke.h b/include/asm-powerpc/reg_booke.h
index be980f4..6745376 100644
--- a/include/asm-powerpc/reg_booke.h
+++ b/include/asm-powerpc/reg_booke.h
@@ -109,6 +109,7 @@
 #define SPRN_EVPR	0x3D6	/* Exception Vector Prefix Register */
 #define SPRN_L1CSR0	0x3F2	/* L1 Cache Control and Status Register 0 */
 #define SPRN_L1CSR1	0x3F3	/* L1 Cache Control and Status Register 1 */
+#define SPRN_MMUCSR0	0x3F4	/* MMU Control and Status Register 0 */
 #define SPRN_PIT	0x3DB	/* Programmable Interval Timer */
 #define SPRN_BUCSR	0x3F5	/* Branch Unit Control and Status */
 #define SPRN_L2CSR0	0x3F9	/* L2 Data Cache Control and Status Register 0 */
@@ -410,6 +411,12 @@
 #define L2CSR0_L2LOA	0x00000080	/* L2 Cache Lock Overflow Allocate */
 #define L2CSR0_L2LO	0x00000020	/* L2 Cache Lock Overflow */

+/* Bit definitions for MMUCSR0 */
+#define MMUCSR0_TLB1FI	0x00000002	/* TLB1 Flash invalidate */
+#define MMUCSR0_TLB0FI	0x00000004	/* TLB0 Flash invalidate */
+#define MMUCSR0_TLB2FI	0x00000040	/* TLB2 Flash invalidate */
+#define MMUCSR0_TLB3FI	0x00000020	/* TLB3 Flash invalidate */
+
 /* Bit definitions for SGR. */
 #define SGR_NORMAL	0		/* Speculative fetching allowed. */
 #define SGR_GUARDED	1		/* Speculative fetching disallowed. */
diff --git a/include/asm-powerpc/tlbflush.h b/include/asm-powerpc/tlbflush.h
index 5c91081..29da561 100644
--- a/include/asm-powerpc/tlbflush.h
+++ b/include/asm-powerpc/tlbflush.h
@@ -29,6 +29,9 @@
 #include <linux/mm.h>

 extern void _tlbie(unsigned long address, unsigned int pid);
+extern void _tlbil_all(void);
+extern void _tlbil_pid(unsigned int pid);
+extern void _tlbil_va(unsigned long address, unsigned int pid);

 #if defined(CONFIG_40x) || defined(CONFIG_8xx)
 #define _tlbia()	asm volatile ("tlbia; sync" : : : "memory")
@@ -38,31 +41,31 @@ extern void _tlbia(void);

 static inline void flush_tlb_mm(struct mm_struct *mm)
 {
-	_tlbia();
+	_tlbil_all();
 }

 static inline void flush_tlb_page(struct vm_area_struct *vma,
 				  unsigned long vmaddr)
 {
-	_tlbie(vmaddr, vma ? vma->vm_mm->context.id : 0);
+	_tlbil_va(vmaddr, vma ? vma->vm_mm->context.id : 0);
 }

 static inline void flush_tlb_page_nohash(struct vm_area_struct *vma,
 					 unsigned long vmaddr)
 {
-	_tlbie(vmaddr, vma ? vma->vm_mm->context.id : 0);
+	flush_tlb_page(vma, vmaddr);
 }

 static inline void flush_tlb_range(struct vm_area_struct *vma,
 				   unsigned long start, unsigned long end)
 {
-	_tlbia();
+	_tlbil_all();
 }

 static inline void flush_tlb_kernel_range(unsigned long start,
 					  unsigned long end)
 {
-	_tlbia();
+	_tlbil_all();
 }

 #elif defined(CONFIG_PPC32)
-- 
1.5.5.1

^ permalink raw reply related

* Re: [patch 9/9] powerpc/cell: Add DMA_ATTR_STRONG_ORDERING dma attribute and use in IOMMU code
From: Arnd Bergmann @ 2008-07-15 21:27 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: Mark Nelson, Roland Dreier, cbe-oss-dev
In-Reply-To: <ada3amaevj5.fsf@cisco.com>

On Tuesday 15 July 2008, Roland Dreier wrote:
> Sorry for the late comments, I missed this when it went by before.
>=20
> =C2=A0> +DMA_ATTR_STRONG_ORDERING
> =C2=A0> +----------------------
> =C2=A0> +
> =C2=A0> +DMA_ATTR_STRONG_ORDERING specifies that previous reads and write=
s are
> =C2=A0> +performed in the order in which they're received by the IOMMU; t=
hus
> =C2=A0> +reads and writes may not pass each other.
>=20
> I don't understand what this is trying to say. =C2=A0What is "previous"
> referring to? What does "received by the IOMMU" mean -- do you mean=20
> issued onto the bus by the CPU?

This is all about inbound transfers, i.e. DMAs coming from the I/O bridge
into the CPU, both DMA read and DMA write.

The relevant paragraph in the specification is=20
"If the SO bits in the I/O page table entry =3D =E2=80=9811=E2=80=99 and th=
e IOIF S-bit is =E2=80=981=E2=80=99,
this READ or WRITE cannot be placed on the EIB until all previous READs and
WRITEs from this CVCID and IOID have gotten an ACK or NULL type snoop respo=
nse."

Normally, this is only true for accesses going to the same cache line,
accesses from one device to different cache lines that are issued in order
also send their response in-order (unless you get an I/O exception, which m=
eans
you're toast), but can arrive at the I/O location out of order.

My interpretation is that strong ordering basically turns our whole I/O
subsystem into single-issue non-posted accesses (all devices are currently
configured to use the same CVCID and IOID), so we really should not
do that.

> When you say "reads and writes may not=20
> pass each other," do you mean just that reads may not pass writes and
> writes may not pass reads, or do you mean that reads also can't pass
> reads and writes can't pass writes?
>=20
> Since I don't know exactly what this attribute does, I can't be sure,
> but it seems that making weak ordering the default is dangerous in that
> it breaks drivers that expect usual memory ordering semantics. =C2=A0Woul=
d it
> be safer/better to make strong ordering the default and then add a
> "WEAK_ORDERING" attribute that drivers can use as an optimization?

With all our existing hardware, the I/O bridge overrides the setting
to select weak ordering. The purpose of this patch is to change the
default so that the bridge does not force weak ordering any more and
some drivers are free to set strong ordering without impacting performance
on the other drivers.

Strong ordering is only active when both the bridge and the IOMMU enable
it, but for correctly written drivers, this only results in a slowdown.

	Arnd <><

^ permalink raw reply

* [PATCH] powerpc: correct CMO feature flag enablement
From: Robert Jennings @ 2008-07-15 21:20 UTC (permalink / raw)
  To: Benjamin Herrenschmidt, paulus, linuxppc-dev, Brian King,
	Nathan Fontenot, David Darrington

Correct string conversion for rtas value being read for CMO configuration.
A value of -1 in the string indicates that CMO is not enabled and we
had used simple_strtoul rather than simple_strtol which caused problems.

Signed-off-by: Robert Jennings <rcj@linux.vnet.ibm.com>

---

This patch applies on top of the CMO patchset sent to the list.

---
 arch/powerpc/platforms/pseries/setup.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Index: b/arch/powerpc/platforms/pseries/setup.c
===================================================================
--- a/arch/powerpc/platforms/pseries/setup.c
+++ b/arch/powerpc/platforms/pseries/setup.c
@@ -366,9 +366,9 @@ void pSeries_cmo_feature_init(void)
 			}
 
 			if (0 == strcmp(key, "PrPSP"))
-				PrPSP = simple_strtoul(value, NULL, 10);
+				PrPSP = simple_strtol(value, NULL, 10);
 			else if (0 == strcmp(key, "SecPSP"))
-				SecPSP = simple_strtoul(value, NULL, 10);
+				SecPSP = simple_strtol(value, NULL, 10);
 			value = key = ptr + 1;
 		}
 		ptr++;

^ permalink raw reply

* Re: [patch 9/9] powerpc/cell: Add DMA_ATTR_STRONG_ORDERING dma attribute and use in IOMMU code
From: Roland Dreier @ 2008-07-15 20:34 UTC (permalink / raw)
  To: arnd; +Cc: Mark Nelson, cbe-oss-dev, linuxppc-dev
In-Reply-To: <20080715195740.098068951@arndb.de>

Sorry for the late comments, I missed this when it went by before.

 > +DMA_ATTR_STRONG_ORDERING
 > +----------------------
 > +
 > +DMA_ATTR_STRONG_ORDERING specifies that previous reads and writes are
 > +performed in the order in which they're received by the IOMMU; thus
 > +reads and writes may not pass each other.

I don't understand what this is trying to say.  What is "previous"
referring to?  What does "received by the IOMMU" mean -- do you mean
issued onto the bus by the CPU? When you say "reads and writes may not
pass each other," do you mean just that reads may not pass writes and
writes may not pass reads, or do you mean that reads also can't pass
reads and writes can't pass writes?

Since I don't know exactly what this attribute does, I can't be sure,
but it seems that making weak ordering the default is dangerous in that
it breaks drivers that expect usual memory ordering semantics.  Would it
be safer/better to make strong ordering the default and then add a
"WEAK_ORDERING" attribute that drivers can use as an optimization?

 - R.

^ permalink raw reply

* [patch 9/9] powerpc/cell: Add DMA_ATTR_STRONG_ORDERING dma attribute and use in IOMMU code
From: arnd @ 2008-07-15 19:51 UTC (permalink / raw)
  To: benh, cbe-oss-dev, linuxppc-dev; +Cc: Mark Nelson
In-Reply-To: <20080715195139.316677337@arndb.de>

From: Mark Nelson <markn@au1.ibm.com>

Introduce a new dma attriblue DMA_ATTR_STRONG_ORDERING to use strong ordering
on DMA mappings in the Cell processor. Add the code to the Cell's IOMMU
implementation to use this.

The current Cell IOMMU implementation sets the IOPTE_SO_RW bits in all IOTPEs
(for both the dynamic and fixed mappings) which enforces strong ordering of
both reads and writes. This patch makes the default behaviour weak ordering
(the IOPTE_SO_RW bits not set) and to request a strongly ordered mapping the
new DMA_ATTR_STRONG_ORDERING needs to be used.

Dynamic mappings can be weakly or strongly ordered on an individual basis
but the fixed mapping is always weakly ordered.

Signed-off-by: Mark Nelson <markn@au1.ibm.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 Documentation/DMA-attributes.txt    |   12 +++++
 arch/powerpc/platforms/cell/iommu.c |   93 ++++++++++++++++++++++++++++++++---
 include/linux/dma-attrs.h           |    1 +
 3 files changed, 99 insertions(+), 7 deletions(-)

diff --git a/Documentation/DMA-attributes.txt b/Documentation/DMA-attributes.txt
index 6d772f8..f2d2800 100644
--- a/Documentation/DMA-attributes.txt
+++ b/Documentation/DMA-attributes.txt
@@ -22,3 +22,15 @@ ready and available in memory.  The DMA of the "completion indication"
 could race with data DMA.  Mapping the memory used for completion
 indications with DMA_ATTR_WRITE_BARRIER would prevent the race.
 
+
+DMA_ATTR_STRONG_ORDERING
+----------------------
+
+DMA_ATTR_STRONG_ORDERING specifies that previous reads and writes are
+performed in the order in which they're received by the IOMMU; thus
+reads and writes may not pass each other.
+
+Platforms that are strongly ordered by default will ignore this new
+attribute but platforms that are weakly ordered by default should not
+ignore this new attribute. Instead, they should return an error if a
+strongly ordered mapping cannot be used when one is requested.
diff --git a/arch/powerpc/platforms/cell/iommu.c b/arch/powerpc/platforms/cell/iommu.c
index 3b70784..7f6ed20 100644
--- a/arch/powerpc/platforms/cell/iommu.c
+++ b/arch/powerpc/platforms/cell/iommu.c
@@ -194,11 +194,13 @@ static void tce_build_cell(struct iommu_table *tbl, long index, long npages,
 	const unsigned long prot = 0xc48;
 	base_pte =
 		((prot << (52 + 4 * direction)) & (IOPTE_PP_W | IOPTE_PP_R))
-		| IOPTE_M | IOPTE_SO_RW | (window->ioid & IOPTE_IOID_Mask);
+		| IOPTE_M | (window->ioid & IOPTE_IOID_Mask);
 #else
-	base_pte = IOPTE_PP_W | IOPTE_PP_R | IOPTE_M | IOPTE_SO_RW |
+	base_pte = IOPTE_PP_W | IOPTE_PP_R | IOPTE_M |
 		(window->ioid & IOPTE_IOID_Mask);
 #endif
+	if (unlikely(dma_get_attr(DMA_ATTR_STRONG_ORDERING, attrs)))
+		base_pte |= IOPTE_SO_RW;
 
 	io_pte = (unsigned long *)tbl->it_base + (index - tbl->it_offset);
 
@@ -539,7 +541,6 @@ static struct cbe_iommu *cell_iommu_for_node(int nid)
 static unsigned long cell_dma_direct_offset;
 
 static unsigned long dma_iommu_fixed_base;
-struct dma_mapping_ops dma_iommu_fixed_ops;
 
 static struct iommu_table *cell_get_iommu_table(struct device *dev)
 {
@@ -563,6 +564,85 @@ static struct iommu_table *cell_get_iommu_table(struct device *dev)
 	return &window->table;
 }
 
+static void *dma_fixed_alloc_coherent(struct device *dev, size_t size,
+				      dma_addr_t *dma_handle, gfp_t flag)
+{
+	return dma_direct_ops.alloc_coherent(dev, size, dma_handle, flag);
+}
+
+static void dma_fixed_free_coherent(struct device *dev, size_t size,
+				    void *vaddr, dma_addr_t dma_handle)
+{
+	dma_direct_ops.free_coherent(dev, size, vaddr, dma_handle);
+}
+
+static dma_addr_t dma_fixed_map_single(struct device *dev, void *ptr,
+				       size_t size,
+				       enum dma_data_direction direction,
+				       struct dma_attrs *attrs)
+{
+	if (dma_get_attr(DMA_ATTR_STRONG_ORDERING, attrs))
+		return iommu_map_single(dev, cell_get_iommu_table(dev), ptr,
+					size, device_to_mask(dev), direction,
+					attrs);
+	else
+		return dma_direct_ops.map_single(dev, ptr, size, direction,
+						 attrs);
+}
+
+static void dma_fixed_unmap_single(struct device *dev, dma_addr_t dma_addr,
+				   size_t size,
+				   enum dma_data_direction direction,
+				   struct dma_attrs *attrs)
+{
+	if (dma_get_attr(DMA_ATTR_STRONG_ORDERING, attrs))
+		iommu_unmap_single(cell_get_iommu_table(dev), dma_addr, size,
+				   direction, attrs);
+	else
+		dma_direct_ops.unmap_single(dev, dma_addr, size, direction,
+					    attrs);
+}
+
+static int dma_fixed_map_sg(struct device *dev, struct scatterlist *sg,
+			   int nents, enum dma_data_direction direction,
+			   struct dma_attrs *attrs)
+{
+	if (dma_get_attr(DMA_ATTR_STRONG_ORDERING, attrs))
+		return iommu_map_sg(dev, cell_get_iommu_table(dev), sg, nents,
+				    device_to_mask(dev), direction, attrs);
+	else
+		return dma_direct_ops.map_sg(dev, sg, nents, direction, attrs);
+}
+
+static void dma_fixed_unmap_sg(struct device *dev, struct scatterlist *sg,
+			       int nents, enum dma_data_direction direction,
+			       struct dma_attrs *attrs)
+{
+	if (dma_get_attr(DMA_ATTR_STRONG_ORDERING, attrs))
+		iommu_unmap_sg(cell_get_iommu_table(dev), sg, nents, direction,
+			       attrs);
+	else
+		dma_direct_ops.unmap_sg(dev, sg, nents, direction, attrs);
+}
+
+static int dma_fixed_dma_supported(struct device *dev, u64 mask)
+{
+	return mask == DMA_64BIT_MASK;
+}
+
+static int dma_set_mask_and_switch(struct device *dev, u64 dma_mask);
+
+struct dma_mapping_ops dma_iommu_fixed_ops = {
+	.alloc_coherent = dma_fixed_alloc_coherent,
+	.free_coherent  = dma_fixed_free_coherent,
+	.map_single     = dma_fixed_map_single,
+	.unmap_single   = dma_fixed_unmap_single,
+	.map_sg         = dma_fixed_map_sg,
+	.unmap_sg       = dma_fixed_unmap_sg,
+	.dma_supported  = dma_fixed_dma_supported,
+	.set_dma_mask   = dma_set_mask_and_switch,
+};
+
 static void cell_dma_dev_setup_fixed(struct device *dev);
 
 static void cell_dma_dev_setup(struct device *dev)
@@ -919,9 +999,11 @@ static void cell_iommu_setup_fixed_ptab(struct cbe_iommu *iommu,
 
 	pr_debug("iommu: mapping 0x%lx pages from 0x%lx\n", fsize, fbase);
 
-	base_pte = IOPTE_PP_W | IOPTE_PP_R | IOPTE_M | IOPTE_SO_RW
+	base_pte = IOPTE_PP_W | IOPTE_PP_R | IOPTE_M
 		    | (cell_iommu_get_ioid(np) & IOPTE_IOID_Mask);
 
+	pr_info("IOMMU: Using weak ordering for fixed mapping\n");
+
 	for (uaddr = 0; uaddr < fsize; uaddr += (1 << 24)) {
 		/* Don't touch the dynamic region */
 		ioaddr = uaddr + fbase;
@@ -1037,9 +1119,6 @@ static int __init cell_iommu_fixed_mapping_init(void)
 		cell_iommu_setup_window(iommu, np, dbase, dsize, 0);
 	}
 
-	dma_iommu_fixed_ops = dma_direct_ops;
-	dma_iommu_fixed_ops.set_dma_mask = dma_set_mask_and_switch;
-
 	dma_iommu_ops.set_dma_mask = dma_set_mask_and_switch;
 	set_pci_dma_ops(&dma_iommu_ops);
 
diff --git a/include/linux/dma-attrs.h b/include/linux/dma-attrs.h
index 1677e2b..600fea7 100644
--- a/include/linux/dma-attrs.h
+++ b/include/linux/dma-attrs.h
@@ -12,6 +12,7 @@
  */
 enum dma_attr {
 	DMA_ATTR_WRITE_BARRIER,
+	DMA_ATTR_STRONG_ORDERING,
 	DMA_ATTR_MAX,
 };
 
-- 
1.5.4.3

-- 

^ permalink raw reply related

* [patch 8/9] powerpc/dma: use the struct dma_attrs in iommu code
From: arnd @ 2008-07-15 19:51 UTC (permalink / raw)
  To: benh, cbe-oss-dev, linuxppc-dev; +Cc: Mark Nelson
In-Reply-To: <20080715195139.316677337@arndb.de>

From: Mark Nelson <markn@au1.ibm.com>

Update iommu_alloc() to take the struct dma_attrs and pass them on to
tce_build(). This change propagates down to the tce_build functions of
all the platforms.

Signed-off-by: Mark Nelson <markn@au1.ibm.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/powerpc/kernel/iommu.c            |   13 ++++++++-----
 arch/powerpc/platforms/cell/iommu.c    |    5 +++--
 arch/powerpc/platforms/iseries/iommu.c |    3 ++-
 arch/powerpc/platforms/pasemi/iommu.c  |    3 ++-
 arch/powerpc/platforms/pseries/iommu.c |   14 +++++++++-----
 arch/powerpc/sysdev/dart_iommu.c       |    3 ++-
 include/asm-powerpc/machdep.h          |    3 ++-
 7 files changed, 28 insertions(+), 16 deletions(-)

diff --git a/arch/powerpc/kernel/iommu.c b/arch/powerpc/kernel/iommu.c
index 8c68ee9..2385f68 100644
--- a/arch/powerpc/kernel/iommu.c
+++ b/arch/powerpc/kernel/iommu.c
@@ -186,7 +186,8 @@ static unsigned long iommu_range_alloc(struct device *dev,
 static dma_addr_t iommu_alloc(struct device *dev, struct iommu_table *tbl,
 			      void *page, unsigned int npages,
 			      enum dma_data_direction direction,
-			      unsigned long mask, unsigned int align_order)
+			      unsigned long mask, unsigned int align_order,
+			      struct dma_attrs *attrs)
 {
 	unsigned long entry, flags;
 	dma_addr_t ret = DMA_ERROR_CODE;
@@ -205,7 +206,7 @@ static dma_addr_t iommu_alloc(struct device *dev, struct iommu_table *tbl,
 
 	/* Put the TCEs in the HW table */
 	ppc_md.tce_build(tbl, entry, npages, (unsigned long)page & IOMMU_PAGE_MASK,
-			 direction);
+			 direction, attrs);
 
 
 	/* Flush/invalidate TLB caches if necessary */
@@ -336,7 +337,8 @@ int iommu_map_sg(struct device *dev, struct iommu_table *tbl,
 			    npages, entry, dma_addr);
 
 		/* Insert into HW table */
-		ppc_md.tce_build(tbl, entry, npages, vaddr & IOMMU_PAGE_MASK, direction);
+		ppc_md.tce_build(tbl, entry, npages, vaddr & IOMMU_PAGE_MASK,
+				 direction, attrs);
 
 		/* If we are in an open segment, try merging */
 		if (segstart != s) {
@@ -573,7 +575,8 @@ dma_addr_t iommu_map_single(struct device *dev, struct iommu_table *tbl,
 			align = PAGE_SHIFT - IOMMU_PAGE_SHIFT;
 
 		dma_handle = iommu_alloc(dev, tbl, vaddr, npages, direction,
-					 mask >> IOMMU_PAGE_SHIFT, align);
+					 mask >> IOMMU_PAGE_SHIFT, align,
+					 attrs);
 		if (dma_handle == DMA_ERROR_CODE) {
 			if (printk_ratelimit())  {
 				printk(KERN_INFO "iommu_alloc failed, "
@@ -642,7 +645,7 @@ void *iommu_alloc_coherent(struct device *dev, struct iommu_table *tbl,
 	nio_pages = size >> IOMMU_PAGE_SHIFT;
 	io_order = get_iommu_order(size);
 	mapping = iommu_alloc(dev, tbl, ret, nio_pages, DMA_BIDIRECTIONAL,
-			      mask >> IOMMU_PAGE_SHIFT, io_order);
+			      mask >> IOMMU_PAGE_SHIFT, io_order, NULL);
 	if (mapping == DMA_ERROR_CODE) {
 		free_pages((unsigned long)ret, order);
 		return NULL;
diff --git a/arch/powerpc/platforms/cell/iommu.c b/arch/powerpc/platforms/cell/iommu.c
index eeacb3a..3b70784 100644
--- a/arch/powerpc/platforms/cell/iommu.c
+++ b/arch/powerpc/platforms/cell/iommu.c
@@ -173,7 +173,8 @@ static void invalidate_tce_cache(struct cbe_iommu *iommu, unsigned long *pte,
 }
 
 static void tce_build_cell(struct iommu_table *tbl, long index, long npages,
-		unsigned long uaddr, enum dma_data_direction direction)
+		unsigned long uaddr, enum dma_data_direction direction,
+		struct dma_attrs *attrs)
 {
 	int i;
 	unsigned long *io_pte, base_pte;
@@ -519,7 +520,7 @@ cell_iommu_setup_window(struct cbe_iommu *iommu, struct device_node *np,
 
 	__set_bit(0, window->table.it_map);
 	tce_build_cell(&window->table, window->table.it_offset, 1,
-		       (unsigned long)iommu->pad_page, DMA_TO_DEVICE);
+		       (unsigned long)iommu->pad_page, DMA_TO_DEVICE, NULL);
 	window->table.it_hint = window->table.it_blocksize;
 
 	return window;
diff --git a/arch/powerpc/platforms/iseries/iommu.c b/arch/powerpc/platforms/iseries/iommu.c
index ab5d868..bc818e4 100644
--- a/arch/powerpc/platforms/iseries/iommu.c
+++ b/arch/powerpc/platforms/iseries/iommu.c
@@ -42,7 +42,8 @@
 #include <asm/iseries/iommu.h>
 
 static void tce_build_iSeries(struct iommu_table *tbl, long index, long npages,
-		unsigned long uaddr, enum dma_data_direction direction)
+		unsigned long uaddr, enum dma_data_direction direction,
+		struct dma_attrs *attrs)
 {
 	u64 rc;
 	u64 tce, rpn;
diff --git a/arch/powerpc/platforms/pasemi/iommu.c b/arch/powerpc/platforms/pasemi/iommu.c
index 86967bd..70541b7 100644
--- a/arch/powerpc/platforms/pasemi/iommu.c
+++ b/arch/powerpc/platforms/pasemi/iommu.c
@@ -85,7 +85,8 @@ static int iommu_table_iobmap_inited;
 
 static void iobmap_build(struct iommu_table *tbl, long index,
 			 long npages, unsigned long uaddr,
-			 enum dma_data_direction direction)
+			 enum dma_data_direction direction,
+			 struct dma_attrs *attrs)
 {
 	u32 *ip;
 	u32 rpn;
diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c
index 9a12908..5377dd4 100644
--- a/arch/powerpc/platforms/pseries/iommu.c
+++ b/arch/powerpc/platforms/pseries/iommu.c
@@ -50,7 +50,8 @@
 
 static void tce_build_pSeries(struct iommu_table *tbl, long index,
 			      long npages, unsigned long uaddr,
-			      enum dma_data_direction direction)
+			      enum dma_data_direction direction,
+			      struct dma_attrs *attrs)
 {
 	u64 proto_tce;
 	u64 *tcep;
@@ -95,7 +96,8 @@ static unsigned long tce_get_pseries(struct iommu_table *tbl, long index)
 
 static void tce_build_pSeriesLP(struct iommu_table *tbl, long tcenum,
 				long npages, unsigned long uaddr,
-				enum dma_data_direction direction)
+				enum dma_data_direction direction,
+				struct dma_attrs *attrs)
 {
 	u64 rc;
 	u64 proto_tce, tce;
@@ -127,7 +129,8 @@ static DEFINE_PER_CPU(u64 *, tce_page) = NULL;
 
 static void tce_buildmulti_pSeriesLP(struct iommu_table *tbl, long tcenum,
 				     long npages, unsigned long uaddr,
-				     enum dma_data_direction direction)
+				     enum dma_data_direction direction,
+				     struct dma_attrs *attrs)
 {
 	u64 rc;
 	u64 proto_tce;
@@ -136,7 +139,8 @@ static void tce_buildmulti_pSeriesLP(struct iommu_table *tbl, long tcenum,
 	long l, limit;
 
 	if (npages == 1) {
-		tce_build_pSeriesLP(tbl, tcenum, npages, uaddr, direction);
+		tce_build_pSeriesLP(tbl, tcenum, npages, uaddr,
+				    direction, attrs);
 		return;
 	}
 
@@ -150,7 +154,7 @@ static void tce_buildmulti_pSeriesLP(struct iommu_table *tbl, long tcenum,
 		/* If allocation fails, fall back to the loop implementation */
 		if (!tcep) {
 			tce_build_pSeriesLP(tbl, tcenum, npages, uaddr,
-					    direction);
+					    direction, attrs);
 			return;
 		}
 		__get_cpu_var(tce_page) = tcep;
diff --git a/arch/powerpc/sysdev/dart_iommu.c b/arch/powerpc/sysdev/dart_iommu.c
index 005c2ec..de8c8b5 100644
--- a/arch/powerpc/sysdev/dart_iommu.c
+++ b/arch/powerpc/sysdev/dart_iommu.c
@@ -149,7 +149,8 @@ static void dart_flush(struct iommu_table *tbl)
 
 static void dart_build(struct iommu_table *tbl, long index,
 		       long npages, unsigned long uaddr,
-		       enum dma_data_direction direction)
+		       enum dma_data_direction direction,
+		       struct dma_attrs *attrs)
 {
 	unsigned int *dp;
 	unsigned int rpn;
diff --git a/include/asm-powerpc/machdep.h b/include/asm-powerpc/machdep.h
index 9899226..1233d73 100644
--- a/include/asm-powerpc/machdep.h
+++ b/include/asm-powerpc/machdep.h
@@ -80,7 +80,8 @@ struct machdep_calls {
 				     long index,
 				     long npages,
 				     unsigned long uaddr,
-				     enum dma_data_direction direction);
+				     enum dma_data_direction direction,
+				     struct dma_attrs *attrs);
 	void		(*tce_free)(struct iommu_table *tbl,
 				    long index,
 				    long npages);
-- 
1.5.4.3

-- 

^ permalink raw reply related

* [patch 7/9] azfs: initial submit of azfs, a non-buffered filesystem
From: arnd @ 2008-07-15 19:51 UTC (permalink / raw)
  To: benh, cbe-oss-dev, linuxppc-dev; +Cc: Maxim Shchetynin
In-Reply-To: <20080715195139.316677337@arndb.de>

From: Maxim Shchetynin <maxim@linux.vnet.ibm.com>

AZFS is a file system which keeps all files on memory mapped random
access storage. It was designed to work on the axonram device driver
for IBM QS2x blade servers, but can operate on any block device
that exports a direct_access method.

Signed-off-by: Maxim Shchetynin <maxim@de.ibm.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 Documentation/filesystems/azfs.txt  |   22 +
 arch/powerpc/configs/cell_defconfig |    1 +
 fs/Kconfig                          |   15 +
 fs/Makefile                         |    1 +
 fs/azfs/Makefile                    |    7 +
 fs/azfs/inode.c                     | 1184 +++++++++++++++++++++++++++++++++++
 6 files changed, 1230 insertions(+), 0 deletions(-)
 create mode 100644 Documentation/filesystems/azfs.txt
 create mode 100644 fs/azfs/Makefile
 create mode 100644 fs/azfs/inode.c

diff --git a/Documentation/filesystems/azfs.txt b/Documentation/filesystems/azfs.txt
new file mode 100644
index 0000000..c4bf659
--- /dev/null
+++ b/Documentation/filesystems/azfs.txt
@@ -0,0 +1,22 @@
+AZFS is a file system which keeps all files on memory backed random
+access storage. It was designed to work on the axonram device driver
+for IBM QS2x blade servers, but can operate on any block device
+that exports a direct_access method.
+
+Everything in AZFS is temporary in the sense that all the data stored
+therein is lost when you switch off or reboot a system. If you unmount
+an AZFS instance, all the data will be kept on device as long your system
+is not shut down or rebooted. You can later mount AZFS on from device again
+to get access to your files.
+
+AZFS uses a block device only for data but not for file information.
+All inodes (file and directory information) is kept in RAM.
+
+When you mount AZFS you are able to specify a file system block size with
+'-o bs=<size in bytes>' option. There are no software limitations for
+a block size but you would not be able to mmap files on AZFS if block size
+is less than a system page size. If no '-o bs' option is specified on mount
+a block size of the used block device is used as a default block size for AZFS.
+
+Other available mount options for AZFS are '-o uid=<id>' and '-o gid=<id>',
+which allow you to set the owner and group of the root of the file system.
diff --git a/arch/powerpc/configs/cell_defconfig b/arch/powerpc/configs/cell_defconfig
index c420e47..235a0c8 100644
--- a/arch/powerpc/configs/cell_defconfig
+++ b/arch/powerpc/configs/cell_defconfig
@@ -240,6 +240,7 @@ CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
 # CPU Frequency drivers
 #
 CONFIG_AXON_RAM=m
+CONFIG_AZ_FS=m
 # CONFIG_FSL_ULI1575 is not set
 
 #
diff --git a/fs/Kconfig b/fs/Kconfig
index 2694648..2d4e42b 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -1017,6 +1017,21 @@ config HUGETLBFS
 config HUGETLB_PAGE
 	def_bool HUGETLBFS
 
+config AZ_FS
+	tristate "AZFS filesystem support"
+	help
+	  azfs is a file system for I/O attached memory backing. It requires
+	  a block device with direct_access capability, e.g. axonram.
+	  Mounting such device with azfs gives memory mapped access to the
+	  underlying memory to user space.
+
+	  Read <file:Documentation/filesystems/azfs.txt> for details.
+
+	  To compile this file system support as a module, choose M here: the
+	  module will be called azfs.
+
+	  If unsure, say N.
+
 config CONFIGFS_FS
 	tristate "Userspace-driven configuration filesystem"
 	depends on SYSFS
diff --git a/fs/Makefile b/fs/Makefile
index 1e7a11b..20e3253 100644
--- a/fs/Makefile
+++ b/fs/Makefile
@@ -119,3 +119,4 @@ obj-$(CONFIG_HPPFS)		+= hppfs/
 obj-$(CONFIG_DEBUG_FS)		+= debugfs/
 obj-$(CONFIG_OCFS2_FS)		+= ocfs2/
 obj-$(CONFIG_GFS2_FS)           += gfs2/
+obj-$(CONFIG_AZ_FS)		+= azfs/
diff --git a/fs/azfs/Makefile b/fs/azfs/Makefile
new file mode 100644
index 0000000..ff04d41
--- /dev/null
+++ b/fs/azfs/Makefile
@@ -0,0 +1,7 @@
+#
+# Makefile for azfs routines
+#
+
+obj-$(CONFIG_AZ_FS) += azfs.o
+
+azfs-y := inode.o
diff --git a/fs/azfs/inode.c b/fs/azfs/inode.c
new file mode 100644
index 0000000..00dc2af
--- /dev/null
+++ b/fs/azfs/inode.c
@@ -0,0 +1,1184 @@
+/*
+ * (C) Copyright IBM Deutschland Entwicklung GmbH 2007
+ *
+ * Author: Maxim Shchetynin <maxim@de.ibm.com>
+ *
+ * Non-buffered filesystem driver.
+ * It registers a filesystem which may be used for all kind of block devices
+ * which have a direct_access() method in block_device_operations.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <linux/backing-dev.h>
+#include <linux/blkdev.h>
+#include <linux/cache.h>
+#include <linux/dcache.h>
+#include <linux/device.h>
+#include <linux/err.h>
+#include <linux/fs.h>
+#include <linux/genhd.h>
+#include <linux/kernel.h>
+#include <linux/limits.h>
+#include <linux/list.h>
+#include <linux/module.h>
+#include <linux/mount.h>
+#include <linux/mm.h>
+#include <linux/mm_types.h>
+#include <linux/mutex.h>
+#include <linux/namei.h>
+#include <linux/pagemap.h>
+#include <linux/parser.h>
+#include <linux/slab.h>
+#include <linux/spinlock.h>
+#include <linux/stat.h>
+#include <linux/statfs.h>
+#include <linux/string.h>
+#include <linux/time.h>
+#include <linux/types.h>
+#include <linux/aio.h>
+#include <linux/uio.h>
+#include <asm/bug.h>
+#include <asm/page.h>
+#include <asm/pgtable.h>
+#include <asm/string.h>
+
+#define AZFS_FILESYSTEM_NAME		"azfs"
+#define AZFS_FILESYSTEM_FLAGS		FS_REQUIRES_DEV
+
+#define AZFS_SUPERBLOCK_MAGIC		0xABBA1972
+#define AZFS_SUPERBLOCK_FLAGS		MS_SYNCHRONOUS | \
+					MS_DIRSYNC | \
+					MS_ACTIVE
+
+#define AZFS_BDI_CAPABILITIES		BDI_CAP_NO_ACCT_DIRTY | \
+					BDI_CAP_NO_WRITEBACK | \
+					BDI_CAP_MAP_COPY | \
+					BDI_CAP_MAP_DIRECT | \
+					BDI_CAP_VMFLAGS
+
+#define AZFS_CACHE_FLAGS		SLAB_HWCACHE_ALIGN | \
+					SLAB_RECLAIM_ACCOUNT | \
+					SLAB_MEM_SPREAD
+
+struct azfs_super {
+	struct list_head		list;
+	unsigned long			media_size;
+	unsigned long			block_size;
+	unsigned short			block_shift;
+	unsigned long			sector_size;
+	unsigned short			sector_shift;
+	uid_t				uid;
+	gid_t				gid;
+	unsigned long			ph_addr;
+	unsigned long			io_addr;
+	struct block_device		*blkdev;
+	struct dentry			*root;
+	struct list_head		block_list;
+	rwlock_t			lock;
+};
+
+struct azfs_super_list {
+	struct list_head		head;
+	spinlock_t			lock;
+};
+
+struct azfs_block {
+	struct list_head		list;
+	unsigned long			id;
+	unsigned long			count;
+};
+
+struct azfs_znode {
+	struct list_head		block_list;
+	rwlock_t			lock;
+	loff_t				size;
+	struct inode			vfs_inode;
+};
+
+static struct azfs_super_list		super_list;
+static struct kmem_cache		*azfs_znode_cache __read_mostly = NULL;
+static struct kmem_cache		*azfs_block_cache __read_mostly = NULL;
+
+#define I2S(inode) \
+	inode->i_sb->s_fs_info
+#define I2Z(inode) \
+	container_of(inode, struct azfs_znode, vfs_inode)
+
+#define for_each_block(block, block_list) \
+	list_for_each_entry(block, block_list, list)
+#define for_each_block_reverse(block, block_list) \
+	list_for_each_entry_reverse(block, block_list, list)
+#define for_each_block_safe(block, temp, block_list) \
+	list_for_each_entry_safe(block, temp, block_list, list)
+#define for_each_block_safe_reverse(block, temp, block_list) \
+	list_for_each_entry_safe_reverse(block, temp, block_list, list)
+
+/**
+ * azfs_block_init - create and initialise a new block in a list
+ * @block_list: destination list
+ * @id: block id
+ * @count: size of a block
+ */
+static inline struct azfs_block*
+azfs_block_init(struct list_head *block_list,
+		unsigned long id, unsigned long count)
+{
+	struct azfs_block *block;
+
+	block = kmem_cache_alloc(azfs_block_cache, GFP_KERNEL);
+	if (!block)
+		return NULL;
+
+	block->id = id;
+	block->count = count;
+
+	INIT_LIST_HEAD(&block->list);
+	list_add_tail(&block->list, block_list);
+
+	return block;
+}
+
+/**
+ * azfs_block_free - remove block from a list and free it back in cache
+ * @block: block to be removed
+ */
+static inline void
+azfs_block_free(struct azfs_block *block)
+{
+	list_del(&block->list);
+	kmem_cache_free(azfs_block_cache, block);
+}
+
+/**
+ * azfs_block_move - move block to another list
+ * @block: block to be moved
+ * @block_list: destination list
+ */
+static inline void
+azfs_block_move(struct azfs_block *block, struct list_head *block_list)
+{
+	list_move_tail(&block->list, block_list);
+}
+
+/**
+ * azfs_block_find - get a block id of a part of a file
+ * @inode: inode
+ * @from: offset for read/write operation
+ * @size: pointer to a value of the amount of data to be read/written
+ */
+static unsigned long
+azfs_block_find(struct inode *inode, unsigned long from, unsigned long *size)
+{
+	struct azfs_super *super;
+	struct azfs_znode *znode;
+	struct azfs_block *block;
+	unsigned long block_id, west, east;
+
+	super = I2S(inode);
+	znode = I2Z(inode);
+
+	read_lock(&znode->lock);
+
+	while (from + *size > znode->size) {
+		read_unlock(&znode->lock);
+		i_size_write(inode, from + *size);
+		inode->i_op->truncate(inode);
+		read_lock(&znode->lock);
+	}
+
+	if (list_empty(&znode->block_list)) {
+		read_unlock(&znode->lock);
+		*size = 0;
+		return 0;
+	}
+
+	block_id = from >> super->block_shift;
+
+	for_each_block(block, &znode->block_list) {
+		if (block->count > block_id)
+			break;
+		block_id -= block->count;
+	}
+
+	west = from % super->block_size;
+	east = ((block->count - block_id) << super->block_shift) - west;
+
+	if (*size > east)
+		*size = east;
+
+	block_id = ((block->id + block_id) << super->block_shift) + west;
+
+	read_unlock(&znode->lock);
+
+	return block_id;
+}
+
+static struct inode*
+azfs_new_inode(struct super_block *, struct inode *, int, dev_t);
+
+/**
+ * azfs_mknod - mknod() method for inode_operations
+ * @dir, @dentry, @mode, @dev: see inode_operations methods
+ */
+static int
+azfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t dev)
+{
+	struct inode *inode;
+
+	inode = azfs_new_inode(dir->i_sb, dir, mode, dev);
+	if (!inode)
+		return -ENOSPC;
+
+	if (S_ISREG(mode))
+		I2Z(inode)->size = 0;
+
+	dget(dentry);
+	d_instantiate(dentry, inode);
+
+	return 0;
+}
+
+/**
+ * azfs_create - create() method for inode_operations
+ * @dir, @dentry, @mode, @nd: see inode_operations methods
+ */
+static int
+azfs_create(struct inode *dir, struct dentry *dentry, int mode,
+	    struct nameidata *nd)
+{
+	return azfs_mknod(dir, dentry, mode | S_IFREG, 0);
+}
+
+/**
+ * azfs_mkdir - mkdir() method for inode_operations
+ * @dir, @dentry, @mode: see inode_operations methods
+ */
+static int
+azfs_mkdir(struct inode *dir, struct dentry *dentry, int mode)
+{
+	int rc;
+
+	rc = azfs_mknod(dir, dentry, mode | S_IFDIR, 0);
+	if (!rc)
+		inc_nlink(dir);
+
+	return rc;
+}
+
+/**
+ * azfs_symlink - symlink() method for inode_operations
+ * @dir, @dentry, @name: see inode_operations methods
+ */
+static int
+azfs_symlink(struct inode *dir, struct dentry *dentry, const char *name)
+{
+	struct inode *inode;
+	int rc;
+
+	inode = azfs_new_inode(dir->i_sb, dir, S_IFLNK | S_IRWXUGO, 0);
+	if (!inode)
+		return -ENOSPC;
+
+	rc = page_symlink(inode, name, strlen(name) + 1);
+	if (rc) {
+		iput(inode);
+		return rc;
+	}
+
+	dget(dentry);
+	d_instantiate(dentry, inode);
+
+	return 0;
+}
+
+/**
+ * azfs_aio_read - aio_read() method for file_operations
+ * @iocb, @iov, @nr_segs, @pos: see file_operations methods
+ */
+static ssize_t
+azfs_aio_read(struct kiocb *iocb, const struct iovec *iov,
+	      unsigned long nr_segs, loff_t pos)
+{
+	struct azfs_super *super;
+	struct inode *inode;
+	void *target;
+	unsigned long pin;
+	unsigned long size, todo, step;
+	ssize_t rc;
+
+	inode = iocb->ki_filp->f_mapping->host;
+	super = I2S(inode);
+
+	mutex_lock(&inode->i_mutex);
+
+	if (pos >= i_size_read(inode)) {
+		rc = 0;
+		goto out;
+	}
+
+	target = iov->iov_base;
+	todo = min((loff_t) iov->iov_len, i_size_read(inode) - pos);
+
+	for (step = todo; step; step -= size) {
+		size = step;
+		pin = azfs_block_find(inode, pos, &size);
+		if (!size) {
+			rc = -ENOSPC;
+			goto out;
+		}
+		pin += super->io_addr;
+		/*
+		 * FIXME: pin is actually an __iomem pointer, is
+		 * that safe? -arnd
+		 */
+		if (copy_to_user(target, (void*) pin, size)) {
+			rc = -EFAULT;
+			goto out;
+		}
+
+		iocb->ki_pos += size;
+		pos += size;
+		target += size;
+	}
+
+	rc = todo;
+
+out:
+	mutex_unlock(&inode->i_mutex);
+
+	return rc;
+}
+
+/**
+ * azfs_aio_write - aio_write() method for file_operations
+ * @iocb, @iov, @nr_segs, @pos: see file_operations methods
+ */
+static ssize_t
+azfs_aio_write(struct kiocb *iocb, const struct iovec *iov,
+	       unsigned long nr_segs, loff_t pos)
+{
+	struct azfs_super *super;
+	struct inode *inode;
+	void *source;
+	unsigned long pin;
+	unsigned long size, todo, step;
+	ssize_t rc;
+
+	inode = iocb->ki_filp->f_mapping->host;
+	super = I2S(inode);
+
+	source = iov->iov_base;
+	todo = iov->iov_len;
+
+	mutex_lock(&inode->i_mutex);
+
+	for (step = todo; step; step -= size) {
+		size = step;
+		pin = azfs_block_find(inode, pos, &size);
+		if (!size) {
+			rc = -ENOSPC;
+			goto out;
+		}
+		pin += super->io_addr;
+		/*
+		 * FIXME: pin is actually an __iomem pointer, is
+		 * that safe? -arnd
+		 */
+		if (copy_from_user((void*) pin, source, size)) {
+			rc = -EFAULT;
+			goto out;
+		}
+
+		iocb->ki_pos += size;
+		pos += size;
+		source += size;
+	}
+
+	rc = todo;
+
+out:
+	mutex_unlock(&inode->i_mutex);
+
+	return rc;
+}
+
+/**
+ * azfs_open - open() method for file_operations
+ * @inode, @file: see file_operations methods
+ */
+static int
+azfs_open(struct inode *inode, struct file *file)
+{
+	if (file->f_flags & O_TRUNC) {
+		i_size_write(inode, 0);
+		inode->i_op->truncate(inode);
+	}
+	if (file->f_flags & O_APPEND)
+		inode->i_fop->llseek(file, 0, SEEK_END);
+
+	return 0;
+}
+
+/**
+ * azfs_mmap - mmap() method for file_operations
+ * @file, @vm: see file_operations methods
+ */
+static int
+azfs_mmap(struct file *file, struct vm_area_struct *vma)
+{
+	struct azfs_super *super;
+	struct azfs_znode *znode;
+	struct inode *inode;
+	unsigned long cursor, pin;
+	unsigned long todo, size, vm_start;
+	pgprot_t page_prot;
+
+	inode = file->f_dentry->d_inode;
+	znode = I2Z(inode);
+	super = I2S(inode);
+
+	if (super->block_size < PAGE_SIZE)
+		return -EINVAL;
+
+	cursor = vma->vm_pgoff << super->block_shift;
+	todo = vma->vm_end - vma->vm_start;
+
+	if (cursor + todo > i_size_read(inode))
+		return -EINVAL;
+
+	page_prot = pgprot_val(vma->vm_page_prot);
+#ifdef CONFIG_PPC
+	page_prot |= (_PAGE_NO_CACHE | _PAGE_RW);
+	page_prot &= ~_PAGE_GUARDED;
+#else
+	page_prot = pgprot_noncached(page_prot);
+#endif
+	vma->vm_page_prot = __pgprot(page_prot);
+
+	vm_start = vma->vm_start;
+	for (size = todo; todo; todo -= size, size = todo) {
+		pin = azfs_block_find(inode, cursor, &size);
+		if (!size)
+			return -EAGAIN;
+		pin += super->ph_addr;
+		pin >>= PAGE_SHIFT;
+		if (remap_pfn_range(vma, vm_start, pin, size, vma->vm_page_prot))
+			return -EAGAIN;
+
+		vm_start += size;
+		cursor += size;
+	}
+
+	return 0;
+}
+
+/**
+ * azfs_truncate - truncate() method for inode_operations
+ * @inode: see inode_operations methods
+ */
+static void
+azfs_truncate(struct inode *inode)
+{
+	struct azfs_super *super;
+	struct azfs_znode *znode;
+	struct azfs_block *block, *tmp_block, *temp, *west, *east;
+	unsigned long id, count;
+	signed long delta;
+
+	super = I2S(inode);
+	znode = I2Z(inode);
+
+	delta = i_size_read(inode) + (super->block_size - 1);
+	delta >>= super->block_shift;
+	delta -= inode->i_blocks;
+
+	if (delta == 0) {
+		znode->size = i_size_read(inode);
+		return;
+	}
+
+	write_lock(&znode->lock);
+
+	while (delta > 0) {
+		west = east = NULL;
+
+		write_lock(&super->lock);
+
+		if (list_empty(&super->block_list)) {
+			write_unlock(&super->lock);
+			break;
+		}
+
+		for (count = delta; count; count--) {
+			for_each_block(block, &super->block_list)
+				if (block->count >= count) {
+					east = block;
+					break;
+				}
+			if (east)
+				break;
+		}
+
+		for_each_block_reverse(block, &znode->block_list) {
+			if (block->id + block->count == east->id)
+				west = block;
+			break;
+		}
+
+		if (east->count == count) {
+			if (west) {
+				west->count += east->count;
+				azfs_block_free(east);
+			} else {
+				azfs_block_move(east, &znode->block_list);
+			}
+		} else {
+			if (west) {
+				west->count += count;
+			} else {
+				if (!azfs_block_init(&znode->block_list,
+						east->id, count)) {
+					write_unlock(&super->lock);
+					break;
+				}
+			}
+
+			east->id += count;
+			east->count -= count;
+		}
+
+		write_unlock(&super->lock);
+
+		inode->i_blocks += count;
+
+		delta -= count;
+	}
+
+	while (delta < 0) {
+		for_each_block_safe_reverse(block, tmp_block, &znode->block_list) {
+			id = block->id;
+			count = block->count;
+			if ((signed long) count + delta > 0) {
+				block->count += delta;
+				id += block->count;
+				count -= block->count;
+				block = NULL;
+			}
+
+			west = east = NULL;
+
+			write_lock(&super->lock);
+
+			for_each_block(temp, &super->block_list) {
+				if (!west && (temp->id + temp->count == id))
+					west = temp;
+				else if (!east && (id + count == temp->id))
+					east = temp;
+				if (west && east)
+					break;
+			}
+
+			if (west && east) {
+				west->count += count + east->count;
+				azfs_block_free(east);
+				if (block)
+					azfs_block_free(block);
+			} else if (west) {
+				west->count += count;
+				if (block)
+					azfs_block_free(block);
+			} else if (east) {
+				east->id -= count;
+				east->count += count;
+				if (block)
+					azfs_block_free(block);
+			} else {
+				if (!block) {
+					if (!azfs_block_init(&super->block_list,
+							id, count)) {
+						write_unlock(&super->lock);
+						break;
+					}
+				} else {
+					azfs_block_move(block, &super->block_list);
+				}
+			}
+
+			write_unlock(&super->lock);
+
+			inode->i_blocks -= count;
+
+			delta += count;
+
+			break;
+		}
+	}
+
+	write_unlock(&znode->lock);
+
+	znode->size = min(i_size_read(inode),
+			(loff_t) inode->i_blocks << super->block_shift);
+}
+
+/**
+ * azfs_getattr - getattr() method for inode_operations
+ * @mnt, @dentry, @stat: see inode_operations methods
+ */
+static int
+azfs_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat)
+{
+	struct azfs_super *super;
+	struct inode *inode;
+	unsigned short shift;
+
+	inode = dentry->d_inode;
+	super = I2S(inode);
+
+	generic_fillattr(inode, stat);
+	stat->blocks = inode->i_blocks;
+	shift = super->block_shift - super->sector_shift;
+	if (shift)
+		stat->blocks <<= shift;
+
+	return 0;
+}
+
+static const struct address_space_operations azfs_aops = {
+	.write_begin	= simple_write_begin,
+	.write_end	= simple_write_end
+};
+
+static struct backing_dev_info azfs_bdi = {
+	.ra_pages	= 0,
+	.capabilities	= AZFS_BDI_CAPABILITIES
+};
+
+static struct inode_operations azfs_dir_iops = {
+	.create		= azfs_create,
+	.lookup		= simple_lookup,
+	.link		= simple_link,
+	.unlink		= simple_unlink,
+	.symlink	= azfs_symlink,
+	.mkdir		= azfs_mkdir,
+	.rmdir		= simple_rmdir,
+	.mknod		= azfs_mknod,
+	.rename		= simple_rename
+};
+
+static const struct file_operations azfs_reg_fops = {
+	.llseek		= generic_file_llseek,
+	.aio_read	= azfs_aio_read,
+	.aio_write	= azfs_aio_write,
+	.open		= azfs_open,
+	.mmap		= azfs_mmap,
+	.fsync		= simple_sync_file,
+};
+
+static struct inode_operations azfs_reg_iops = {
+	.truncate	= azfs_truncate,
+	.getattr	= azfs_getattr
+};
+
+/**
+ * azfs_new_inode - cook a new inode
+ * @sb: super-block
+ * @dir: parent directory
+ * @mode: file mode
+ * @dev: to be forwarded to init_special_inode()
+ */
+static struct inode*
+azfs_new_inode(struct super_block *sb, struct inode *dir, int mode, dev_t dev)
+{
+	struct azfs_super *super;
+	struct inode *inode;
+
+	inode = new_inode(sb);
+	if (!inode)
+		return NULL;
+
+	inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
+
+	inode->i_mode = mode;
+	if (dir) {
+		dir->i_mtime = dir->i_ctime = inode->i_mtime;
+		inode->i_uid = current->fsuid;
+		if (dir->i_mode & S_ISGID) {
+			if (S_ISDIR(mode))
+				inode->i_mode |= S_ISGID;
+			inode->i_gid = dir->i_gid;
+		} else {
+			inode->i_gid = current->fsgid;
+		}
+	} else {
+		super = sb->s_fs_info;
+		inode->i_uid = super->uid;
+		inode->i_gid = super->gid;
+	}
+
+	inode->i_blocks = 0;
+	inode->i_mapping->a_ops = &azfs_aops;
+	inode->i_mapping->backing_dev_info = &azfs_bdi;
+
+	switch (mode & S_IFMT) {
+	case S_IFDIR:
+		inode->i_op = &azfs_dir_iops;
+		inode->i_fop = &simple_dir_operations;
+		inc_nlink(inode);
+		break;
+
+	case S_IFREG:
+		inode->i_op = &azfs_reg_iops;
+		inode->i_fop = &azfs_reg_fops;
+		break;
+
+	case S_IFLNK:
+		inode->i_op = &page_symlink_inode_operations;
+		break;
+
+	default:
+		init_special_inode(inode, mode, dev);
+		break;
+	}
+
+	return inode;
+}
+
+/**
+ * azfs_alloc_inode - alloc_inode() method for super_operations
+ * @sb: see super_operations methods
+ */
+static struct inode*
+azfs_alloc_inode(struct super_block *sb)
+{
+	struct azfs_znode *znode;
+
+	znode = kmem_cache_alloc(azfs_znode_cache, GFP_KERNEL);
+	if (znode) {
+		INIT_LIST_HEAD(&znode->block_list);
+		rwlock_init(&znode->lock);
+
+		inode_init_once(&znode->vfs_inode);
+
+		return &znode->vfs_inode;
+	}
+
+	return NULL;
+}
+
+/**
+ * azfs_destroy_inode - destroy_inode() method for super_operations
+ * @inode: see super_operations methods
+ */
+static void
+azfs_destroy_inode(struct inode *inode)
+{
+	kmem_cache_free(azfs_znode_cache, I2Z(inode));
+}
+
+/**
+ * azfs_delete_inode - delete_inode() method for super_operations
+ * @inode: see super_operations methods
+ */
+static void
+azfs_delete_inode(struct inode *inode)
+{
+	if (S_ISREG(inode->i_mode)) {
+		i_size_write(inode, 0);
+		azfs_truncate(inode);
+	}
+	truncate_inode_pages(&inode->i_data, 0);
+	clear_inode(inode);
+}
+
+/**
+ * azfs_statfs - statfs() method for super_operations
+ * @dentry, @stat: see super_operations methods
+ */
+static int
+azfs_statfs(struct dentry *dentry, struct kstatfs *stat)
+{
+	struct super_block *sb;
+	struct azfs_super *super;
+	struct inode *inode;
+	unsigned long inodes, blocks;
+
+	sb = dentry->d_sb;
+	super = sb->s_fs_info;
+
+	inodes = blocks = 0;
+	mutex_lock(&sb->s_lock);
+	list_for_each_entry(inode, &sb->s_inodes, i_sb_list) {
+		inodes++;
+		blocks += inode->i_blocks;
+	}
+	mutex_unlock(&sb->s_lock);
+
+	stat->f_type = AZFS_SUPERBLOCK_MAGIC;
+	stat->f_bsize = super->block_size;
+	stat->f_blocks = super->media_size >> super->block_shift;
+	stat->f_bfree = stat->f_blocks - blocks;
+	stat->f_bavail = stat->f_blocks - blocks;
+	stat->f_files = inodes + blocks;
+	stat->f_ffree = blocks + 1;
+	stat->f_namelen = NAME_MAX;
+
+	return 0;
+}
+
+static struct super_operations azfs_ops = {
+	.alloc_inode	= azfs_alloc_inode,
+	.destroy_inode	= azfs_destroy_inode,
+	.drop_inode	= generic_delete_inode,
+	.delete_inode	= azfs_delete_inode,
+	.statfs		= azfs_statfs
+};
+
+enum {
+	Opt_blocksize_short,
+	Opt_blocksize_long,
+	Opt_uid,
+	Opt_gid,
+	Opt_err
+};
+
+static match_table_t tokens = {
+	{Opt_blocksize_short, "bs=%u"},
+	{Opt_blocksize_long, "blocksize=%u"},
+	{Opt_uid, "uid=%u"},
+	{Opt_gid, "gid=%u"},
+	{Opt_err, NULL}
+};
+
+/**
+ * azfs_parse_mount_parameters - parse options given to mount with -o
+ * @super: azfs super block extension
+ * @options: comma separated options
+ */
+static int
+azfs_parse_mount_parameters(struct azfs_super *super, char *options)
+{
+	char *option;
+	int token, value;
+	substring_t args[MAX_OPT_ARGS];
+
+	if (!options)
+		return 1;
+
+	while ((option = strsep(&options, ",")) != NULL) {
+		if (!*option)
+			continue;
+
+		token = match_token(option, tokens, args);
+		switch (token) {
+		case Opt_blocksize_short:
+		case Opt_blocksize_long:
+			if (match_int(&args[0], &value))
+				goto syntax_error;
+			super->block_size = value;
+			break;
+
+		case Opt_uid:
+			if (match_int(&args[0], &value))
+				goto syntax_error;
+			super->uid = value;
+			break;
+
+		case Opt_gid:
+			if (match_int(&args[0], &value))
+				goto syntax_error;
+			super->gid = value;
+			break;
+
+		default:
+			goto syntax_error;
+		}
+	}
+
+	return 1;
+
+syntax_error:
+	printk(KERN_ERR "%s: invalid mount option\n",
+			AZFS_FILESYSTEM_NAME);
+
+	return 0;
+}
+
+/**
+ * azfs_fill_super - fill_super routine for get_sb
+ * @sb, @data, @silent: see file_system_type methods
+ */
+static int
+azfs_fill_super(struct super_block *sb, void *data, int silent)
+{
+	struct gendisk *disk;
+	struct azfs_super *super = NULL, *tmp_super;
+	struct azfs_block *block = NULL;
+	struct inode *inode = NULL;
+	void *kaddr;
+	unsigned long pfn;
+	int rc;
+
+	BUG_ON(!sb->s_bdev);
+
+	disk = sb->s_bdev->bd_disk;
+
+	BUG_ON(!disk || !disk->queue);
+
+	if (!disk->fops->direct_access) {
+		printk(KERN_ERR "%s needs a block device with a "
+				"direct_access() method\n",
+				AZFS_FILESYSTEM_NAME);
+		return -ENOSYS;
+	}
+
+	get_device(disk->driverfs_dev);
+
+	sb->s_magic = AZFS_SUPERBLOCK_MAGIC;
+	sb->s_flags = AZFS_SUPERBLOCK_FLAGS;
+	sb->s_op = &azfs_ops;
+	sb->s_maxbytes = get_capacity(disk) * disk->queue->hardsect_size;
+	sb->s_time_gran = 1;
+
+	spin_lock(&super_list.lock);
+	list_for_each_entry(tmp_super, &super_list.head, list)
+		if (tmp_super->blkdev == sb->s_bdev) {
+			super = tmp_super;
+			break;
+		}
+	spin_unlock(&super_list.lock);
+
+	if (super) {
+		if (data && strlen((char*) data))
+			printk(KERN_WARNING "/dev/%s was already mounted with "
+					"%s before, it will be mounted with "
+					"mount options used last time, "
+					"options just given would be ignored\n",
+					disk->disk_name, AZFS_FILESYSTEM_NAME);
+		sb->s_fs_info = super;
+	} else {
+		super = kzalloc(sizeof(struct azfs_super), GFP_KERNEL);
+		if (!super) {
+			rc = -ENOMEM;
+			goto failed;
+		}
+		sb->s_fs_info = super;
+
+		if (!azfs_parse_mount_parameters(super, (char*) data)) {
+			rc = -EINVAL;
+			goto failed;
+		}
+
+		inode = azfs_new_inode(sb, NULL, S_IFDIR | S_IRWXUGO, 0);
+		if (!inode) {
+			rc = -ENOMEM;
+			goto failed;
+		}
+
+		super->root = d_alloc_root(inode);
+		if (!super->root) {
+			rc = -ENOMEM;
+			goto failed;
+		}
+		dget(super->root);
+
+		INIT_LIST_HEAD(&super->list);
+		INIT_LIST_HEAD(&super->block_list);
+		rwlock_init(&super->lock);
+
+		super->media_size = sb->s_maxbytes;
+
+		if (!super->block_size)
+			super->block_size = sb->s_blocksize;
+		super->block_shift = blksize_bits(super->block_size);
+
+		super->sector_size = disk->queue->hardsect_size;
+		super->sector_shift = blksize_bits(super->sector_size);
+
+		super->blkdev = sb->s_bdev;
+
+		block = azfs_block_init(&super->block_list,
+				0, super->media_size >> super->block_shift);
+		if (!block) {
+			rc = -ENOMEM;
+			goto failed;
+		}
+
+		rc = disk->fops->direct_access(super->blkdev, 0, &kaddr, &pfn);
+		if (rc < 0) {
+			rc = -EFAULT;
+			goto failed;
+		}
+		super->ph_addr = (unsigned long) kaddr;
+
+		super->io_addr = (unsigned long) ioremap_flags(
+				super->ph_addr, super->media_size, _PAGE_NO_CACHE);
+		if (!super->io_addr) {
+			rc = -EFAULT;
+			goto failed;
+		}
+
+		spin_lock(&super_list.lock);
+		list_add(&super->list, &super_list.head);
+		spin_unlock(&super_list.lock);
+	}
+
+	sb->s_root = super->root;
+	disk->driverfs_dev->driver_data = super;
+	disk->driverfs_dev->platform_data = sb;
+
+	if (super->block_size < PAGE_SIZE)
+		printk(KERN_INFO "Block size on %s is smaller then system "
+				"page size: mmap() would not be supported\n",
+				disk->disk_name);
+
+	return 0;
+
+failed:
+	if (super) {
+		sb->s_root = NULL;
+		sb->s_fs_info = NULL;
+		if (block)
+			azfs_block_free(block);
+		if (super->root)
+			dput(super->root);
+		if (inode)
+			iput(inode);
+		disk->driverfs_dev->driver_data = NULL;
+		kfree(super);
+		disk->driverfs_dev->platform_data = NULL;
+		put_device(disk->driverfs_dev);
+	}
+
+	return rc;
+}
+
+/**
+ * azfs_get_sb - get_sb() method for file_system_type
+ * @fs_type, @flags, @dev_name, @data, @mount: see file_system_type methods
+ */
+static int
+azfs_get_sb(struct file_system_type *fs_type, int flags,
+	    const char *dev_name, void *data, struct vfsmount *mount)
+{
+	return get_sb_bdev(fs_type, flags,
+			dev_name, data, azfs_fill_super, mount);
+}
+
+/**
+ * azfs_kill_sb - kill_sb() method for file_system_type
+ * @sb: see file_system_type methods
+ */
+static void
+azfs_kill_sb(struct super_block *sb)
+{
+	sb->s_root = NULL;
+	kill_block_super(sb);
+}
+
+static struct file_system_type azfs_fs = {
+	.owner		= THIS_MODULE,
+	.name		= AZFS_FILESYSTEM_NAME,
+	.get_sb		= azfs_get_sb,
+	.kill_sb	= azfs_kill_sb,
+	.fs_flags	= AZFS_FILESYSTEM_FLAGS
+};
+
+/**
+ * azfs_init
+ */
+static int __init
+azfs_init(void)
+{
+	int rc;
+
+	INIT_LIST_HEAD(&super_list.head);
+	spin_lock_init(&super_list.lock);
+
+	azfs_znode_cache = kmem_cache_create("azfs_znode_cache",
+			sizeof(struct azfs_znode), 0, AZFS_CACHE_FLAGS, NULL);
+	if (!azfs_znode_cache) {
+		printk(KERN_ERR "Could not allocate inode cache for %s\n",
+				AZFS_FILESYSTEM_NAME);
+		rc = -ENOMEM;
+		goto failed;
+	}
+
+	azfs_block_cache = kmem_cache_create("azfs_block_cache",
+			sizeof(struct azfs_block), 0, AZFS_CACHE_FLAGS, NULL);
+	if (!azfs_block_cache) {
+		printk(KERN_ERR "Could not allocate block cache for %s\n",
+				AZFS_FILESYSTEM_NAME);
+		rc = -ENOMEM;
+		goto failed;
+	}
+
+	rc = register_filesystem(&azfs_fs);
+	if (rc != 0) {
+		printk(KERN_ERR "Could not register %s\n",
+				AZFS_FILESYSTEM_NAME);
+		goto failed;
+	}
+
+	return 0;
+
+failed:
+	if (azfs_block_cache)
+		kmem_cache_destroy(azfs_block_cache);
+
+	if (azfs_znode_cache)
+		kmem_cache_destroy(azfs_znode_cache);
+
+	return rc;
+}
+
+/**
+ * azfs_exit
+ */
+static void __exit
+azfs_exit(void)
+{
+	struct azfs_super *super, *tmp_super;
+	struct azfs_block *block, *tmp_block;
+	struct gendisk *disk;
+
+	spin_lock(&super_list.lock);
+	list_for_each_entry_safe(super, tmp_super, &super_list.head, list) {
+		disk = super->blkdev->bd_disk;
+		list_del(&super->list);
+		iounmap((void*) super->io_addr);
+		write_lock(&super->lock);
+		for_each_block_safe(block, tmp_block, &super->block_list)
+			azfs_block_free(block);
+		write_unlock(&super->lock);
+		disk->driverfs_dev->driver_data = NULL;
+		disk->driverfs_dev->platform_data = NULL;
+		kfree(super);
+		put_device(disk->driverfs_dev);
+	}
+	spin_unlock(&super_list.lock);
+
+	unregister_filesystem(&azfs_fs);
+
+	kmem_cache_destroy(azfs_block_cache);
+	kmem_cache_destroy(azfs_znode_cache);
+}
+
+module_init(azfs_init);
+module_exit(azfs_exit);
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Maxim Shchetynin <maxim@de.ibm.com>");
+MODULE_DESCRIPTION("Non-buffered file system for IO devices");
-- 
1.5.4.3

-- 

^ permalink raw reply related

* [patch 6/9] powerpc/cell: add support for power button of future IBM cell blades
From: arnd @ 2008-07-15 19:51 UTC (permalink / raw)
  To: benh, cbe-oss-dev, linuxppc-dev; +Cc: Christian Krafft
In-Reply-To: <20080715195139.316677337@arndb.de>

From: Christian Krafft <krafft@de.ibm.com>

This patch adds support for the power button on future IBM cell blades.
It actually doesn't shut down the machine. Instead it exposes an
input device /dev/input/event0 to userspace which sends KEY_POWER
if power button has been pressed.
haldaemon actually recognizes the button, so a plattform independent acpid
replacement should handle it correctly.

Signed-off-by: Christian Krafft <krafft@de.ibm.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/powerpc/platforms/cell/Kconfig           |    8 ++
 arch/powerpc/platforms/cell/Makefile          |    2 +
 arch/powerpc/platforms/cell/cbe_powerbutton.c |  117 +++++++++++++++++++++++++
 include/asm-powerpc/pmi.h                     |    1 +
 4 files changed, 128 insertions(+), 0 deletions(-)
 create mode 100644 arch/powerpc/platforms/cell/cbe_powerbutton.c

diff --git a/arch/powerpc/platforms/cell/Kconfig b/arch/powerpc/platforms/cell/Kconfig
index 2d1957b..c14d7d8 100644
--- a/arch/powerpc/platforms/cell/Kconfig
+++ b/arch/powerpc/platforms/cell/Kconfig
@@ -91,6 +91,14 @@ config PPC_IBM_CELL_RESETBUTTON
 	  Support Pinhole Resetbutton on IBM Cell blades.
 	  This adds a method to trigger system reset via front panel pinhole button.
 
+config PPC_IBM_CELL_POWERBUTTON
+	tristate "IBM Cell Blade power button"
+	depends on PPC_IBM_CELL_BLADE && PPC_PMI && INPUT_EVDEV
+	default y
+	help
+	  Support Powerbutton on IBM Cell blades.
+	  This will enable the powerbutton as an input device.
+
 config CBE_THERM
 	tristate "CBE thermal support"
 	default m
diff --git a/arch/powerpc/platforms/cell/Makefile b/arch/powerpc/platforms/cell/Makefile
index 7fcf09b..7fd8308 100644
--- a/arch/powerpc/platforms/cell/Makefile
+++ b/arch/powerpc/platforms/cell/Makefile
@@ -10,6 +10,8 @@ obj-$(CONFIG_CBE_CPUFREQ)		+= cbe-cpufreq.o
 cbe-cpufreq-y				+= cbe_cpufreq_pervasive.o cbe_cpufreq.o
 obj-$(CONFIG_CBE_CPUFREQ_SPU_GOVERNOR)	+= cpufreq_spudemand.o
 
+obj-$(CONFIG_PPC_IBM_CELL_POWERBUTTON)	+= cbe_powerbutton.o
+
 ifeq ($(CONFIG_SMP),y)
 obj-$(CONFIG_PPC_CELL_NATIVE)		+= smp.o
 endif
diff --git a/arch/powerpc/platforms/cell/cbe_powerbutton.c b/arch/powerpc/platforms/cell/cbe_powerbutton.c
new file mode 100644
index 0000000..dcddaa5
--- /dev/null
+++ b/arch/powerpc/platforms/cell/cbe_powerbutton.c
@@ -0,0 +1,117 @@
+/*
+ * driver for powerbutton on IBM cell blades
+ *
+ * (C) Copyright IBM Corp. 2005-2008
+ *
+ * Author: Christian Krafft <krafft@de.ibm.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <linux/input.h>
+#include <linux/platform_device.h>
+#include <asm/pmi.h>
+#include <asm/prom.h>
+
+static struct input_dev *button_dev;
+static struct platform_device *button_pdev;
+
+static void cbe_powerbutton_handle_pmi(pmi_message_t pmi_msg)
+{
+	BUG_ON(pmi_msg.type != PMI_TYPE_POWER_BUTTON);
+
+	input_report_key(button_dev, KEY_POWER, 1);
+	input_sync(button_dev);
+	input_report_key(button_dev, KEY_POWER, 0);
+	input_sync(button_dev);
+}
+
+static struct pmi_handler cbe_pmi_handler = {
+	.type			= PMI_TYPE_POWER_BUTTON,
+	.handle_pmi_message	= cbe_powerbutton_handle_pmi,
+};
+
+static int __init cbe_powerbutton_init(void)
+{
+	int ret = 0;
+	struct input_dev *dev;
+
+	if (!machine_is_compatible("IBM,CBPLUS-1.0")) {
+		printk(KERN_ERR "%s: Not a cell blade.\n", __func__);
+		ret = -ENODEV;
+		goto out;
+	}
+
+	dev = input_allocate_device();
+	if (!dev) {
+		ret = -ENOMEM;
+		printk(KERN_ERR "%s: Not enough memory.\n", __func__);
+		goto out;
+	}
+
+	set_bit(EV_KEY, dev->evbit);
+	set_bit(KEY_POWER, dev->keybit);
+
+	dev->name = "Power Button";
+	dev->id.bustype = BUS_HOST;
+
+	/* this makes the button look like an acpi power button
+	 * no clue whether anyone relies on that though */
+	dev->id.product = 0x02;
+	dev->phys = "LNXPWRBN/button/input0";
+
+	button_pdev = platform_device_register_simple("power_button", 0, NULL, 0);
+	if (IS_ERR(button_pdev)) {
+		ret = PTR_ERR(button_pdev);
+		goto out_free_input;
+	}
+
+	dev->dev.parent = &button_pdev->dev;
+	ret = input_register_device(dev);
+	if (ret) {
+		printk(KERN_ERR "%s: Failed to register device\n", __func__);
+		goto out_free_pdev;
+	}
+
+	button_dev = dev;
+
+	ret = pmi_register_handler(&cbe_pmi_handler);
+	if (ret) {
+		printk(KERN_ERR "%s: Failed to register with pmi.\n", __func__);
+		goto out_free_pdev;
+	}
+
+	goto out;
+
+out_free_pdev:
+	platform_device_unregister(button_pdev);
+out_free_input:
+	input_free_device(dev);
+out:
+	return ret;
+}
+
+static void __exit cbe_powerbutton_exit(void)
+{
+	pmi_unregister_handler(&cbe_pmi_handler);
+	platform_device_unregister(button_pdev);
+	input_free_device(button_dev);
+}
+
+module_init(cbe_powerbutton_init);
+module_exit(cbe_powerbutton_exit);
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Christian Krafft <krafft@de.ibm.com>");
diff --git a/include/asm-powerpc/pmi.h b/include/asm-powerpc/pmi.h
index e1dc090..b4e91fb 100644
--- a/include/asm-powerpc/pmi.h
+++ b/include/asm-powerpc/pmi.h
@@ -30,6 +30,7 @@
 #ifdef __KERNEL__
 
 #define PMI_TYPE_FREQ_CHANGE	0x01
+#define PMI_TYPE_POWER_BUTTON	0x02
 #define PMI_READ_TYPE		0
 #define PMI_READ_DATA0		1
 #define PMI_READ_DATA1		2
-- 
1.5.4.3

-- 

^ permalink raw reply related

* [patch 5/9] powerpc/cell: cleanup sysreset_hack for IBM cell blades
From: arnd @ 2008-07-15 19:51 UTC (permalink / raw)
  To: benh, cbe-oss-dev, linuxppc-dev; +Cc: Christian Krafft
In-Reply-To: <20080715195139.316677337@arndb.de>

From: Christian Krafft <krafft@de.ibm.com>

This patch adds a config option for the sysreset_hack used for
IBM Cell blades. The code is moves from pervasive.c into ras.c and
gets it's own init method.

Signed-off-by: Christian Krafft <krafft@de.ibm.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/powerpc/platforms/cell/Kconfig     |    8 +++++
 arch/powerpc/platforms/cell/pervasive.c |   27 +-----------------
 arch/powerpc/platforms/cell/pervasive.h |    9 ++++++
 arch/powerpc/platforms/cell/ras.c       |   46 +++++++++++++++++++++++++++++++
 4 files changed, 64 insertions(+), 26 deletions(-)

diff --git a/arch/powerpc/platforms/cell/Kconfig b/arch/powerpc/platforms/cell/Kconfig
index 6ee571f..2d1957b 100644
--- a/arch/powerpc/platforms/cell/Kconfig
+++ b/arch/powerpc/platforms/cell/Kconfig
@@ -83,6 +83,14 @@ config CBE_RAS
 	depends on PPC_CELL_NATIVE
 	default y
 
+config PPC_IBM_CELL_RESETBUTTON
+	bool "IBM Cell Blade Pinhole reset button"
+	depends on CBE_RAS && PPC_IBM_CELL_BLADE
+	default y
+	help
+	  Support Pinhole Resetbutton on IBM Cell blades.
+	  This adds a method to trigger system reset via front panel pinhole button.
+
 config CBE_THERM
 	tristate "CBE thermal support"
 	default m
diff --git a/arch/powerpc/platforms/cell/pervasive.c b/arch/powerpc/platforms/cell/pervasive.c
index 8a3631c..efdacc8 100644
--- a/arch/powerpc/platforms/cell/pervasive.c
+++ b/arch/powerpc/platforms/cell/pervasive.c
@@ -38,8 +38,6 @@
 
 #include "pervasive.h"
 
-static int sysreset_hack;
-
 static void cbe_power_save(void)
 {
 	unsigned long ctrl, thread_switch_control;
@@ -87,9 +85,6 @@ static void cbe_power_save(void)
 
 static int cbe_system_reset_exception(struct pt_regs *regs)
 {
-	int cpu;
-	struct cbe_pmd_regs __iomem *pmd;
-
 	switch (regs->msr & SRR1_WAKEMASK) {
 	case SRR1_WAKEEE:
 		do_IRQ(regs);
@@ -98,19 +93,7 @@ static int cbe_system_reset_exception(struct pt_regs *regs)
 		timer_interrupt(regs);
 		break;
 	case SRR1_WAKEMT:
-		/*
-		 * The BMC can inject user triggered system reset exceptions,
-		 * but cannot set the system reset reason in srr1,
-		 * so check an extra register here.
-		 */
-		if (sysreset_hack && (cpu = smp_processor_id()) == 0) {
-			pmd = cbe_get_cpu_pmd_regs(cpu);
-			if (in_be64(&pmd->ras_esc_0) & 0xffff) {
-				out_be64(&pmd->ras_esc_0, 0);
-				return 0;
-			}
-		}
-		break;
+		return cbe_sysreset_hack();
 #ifdef CONFIG_CBE_RAS
 	case SRR1_WAKESYSERR:
 		cbe_system_error_exception(regs);
@@ -134,8 +117,6 @@ void __init cbe_pervasive_init(void)
 	if (!cpu_has_feature(CPU_FTR_PAUSE_ZERO))
 		return;
 
-	sysreset_hack = machine_is_compatible("IBM,CBPLUS-1.0");
-
 	for_each_possible_cpu(cpu) {
 		struct cbe_pmd_regs __iomem *regs = cbe_get_cpu_pmd_regs(cpu);
 		if (!regs)
@@ -144,12 +125,6 @@ void __init cbe_pervasive_init(void)
 		 /* Enable Pause(0) control bit */
 		out_be64(&regs->pmcr, in_be64(&regs->pmcr) |
 					    CBE_PMD_PAUSE_ZERO_CONTROL);
-
-		/* Enable JTAG system-reset hack */
-		if (sysreset_hack)
-			out_be32(&regs->fir_mode_reg,
-				in_be32(&regs->fir_mode_reg) |
-				CBE_PMD_FIR_MODE_M8);
 	}
 
 	ppc_md.power_save = cbe_power_save;
diff --git a/arch/powerpc/platforms/cell/pervasive.h b/arch/powerpc/platforms/cell/pervasive.h
index 7b50947..fd4d7b7 100644
--- a/arch/powerpc/platforms/cell/pervasive.h
+++ b/arch/powerpc/platforms/cell/pervasive.h
@@ -30,4 +30,13 @@ extern void cbe_system_error_exception(struct pt_regs *regs);
 extern void cbe_maintenance_exception(struct pt_regs *regs);
 extern void cbe_thermal_exception(struct pt_regs *regs);
 
+#ifdef CONFIG_PPC_IBM_CELL_RESETBUTTON
+extern int cbe_sysreset_hack(void);
+#else
+static inline int cbe_sysreset_hack(void)
+{
+	return 1;
+}
+#endif /* CONFIG_PPC_IBM_CELL_RESETBUTTON */
+
 #endif
diff --git a/arch/powerpc/platforms/cell/ras.c b/arch/powerpc/platforms/cell/ras.c
index 505f9b9..2a14b05 100644
--- a/arch/powerpc/platforms/cell/ras.c
+++ b/arch/powerpc/platforms/cell/ras.c
@@ -236,6 +236,52 @@ static struct notifier_block cbe_ptcal_reboot_notifier = {
 	.notifier_call = cbe_ptcal_notify_reboot
 };
 
+#ifdef CONFIG_PPC_IBM_CELL_RESETBUTTON
+static int sysreset_hack;
+
+static int __init cbe_sysreset_init(void)
+{
+	struct cbe_pmd_regs __iomem *regs;
+
+	sysreset_hack = machine_is_compatible("IBM,CBPLUS-1.0");
+	if (!sysreset_hack)
+		return 0;
+
+	regs = cbe_get_cpu_pmd_regs(0);
+	if (!regs)
+		return 0;
+
+	/* Enable JTAG system-reset hack */
+	out_be32(&regs->fir_mode_reg,
+		in_be32(&regs->fir_mode_reg) |
+		CBE_PMD_FIR_MODE_M8);
+
+	return 0;
+}
+device_initcall(cbe_sysreset_init);
+
+int cbe_sysreset_hack(void)
+{
+	struct cbe_pmd_regs __iomem *regs;
+
+	/*
+	 * The BMC can inject user triggered system reset exceptions,
+	 * but cannot set the system reset reason in srr1,
+	 * so check an extra register here.
+	 */
+	if (sysreset_hack && (smp_processor_id() == 0)) {
+		regs = cbe_get_cpu_pmd_regs(0);
+		if (!regs)
+			return 0;
+		if (in_be64(&regs->ras_esc_0) & 0x0000ffff) {
+			out_be64(&regs->ras_esc_0, 0);
+			return 0;
+		}
+	}
+	return 1;
+}
+#endif /* CONFIG_PPC_IBM_CELL_RESETBUTTON */
+
 int __init cbe_ptcal_init(void)
 {
 	int ret;
-- 
1.5.4.3

-- 

^ permalink raw reply related

* [patch 4/9] powerpc/cell/cpufreq: add spu aware cpufreq governor
From: arnd @ 2008-07-15 19:51 UTC (permalink / raw)
  To: benh, cbe-oss-dev, linuxppc-dev; +Cc: Christian Krafft, Jeremy Kerr, Dave Jones
In-Reply-To: <20080715195139.316677337@arndb.de>

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 7043 bytes --]

From: Christian Krafft <krafft@de.ibm.com>

This patch adds a cpufreq governor that takes the number of running spus
into account. It's very similar to the ondemand governor, but not as complex.
Instead of hacking spu load into the ondemand governor it might be easier to
have cpufreq accepting multiple governors per cpu in future.
Don't know if this is the right way, but it would keep the governors simple.

Signed-off-by: Christian Krafft <krafft@de.ibm.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Dave Jones <davej@redhat.com>
Cc: Jeremy Kerr <jk@ozlabs.org>
---
 arch/powerpc/platforms/cell/Kconfig             |    9 +
 arch/powerpc/platforms/cell/Makefile            |    1 +
 arch/powerpc/platforms/cell/cpufreq_spudemand.c |  184 +++++++++++++++++++++++
 3 files changed, 194 insertions(+), 0 deletions(-)
 create mode 100644 arch/powerpc/platforms/cell/cpufreq_spudemand.c

diff --git a/arch/powerpc/platforms/cell/Kconfig b/arch/powerpc/platforms/cell/Kconfig
index 3959fcf..6ee571f 100644
--- a/arch/powerpc/platforms/cell/Kconfig
+++ b/arch/powerpc/platforms/cell/Kconfig
@@ -107,6 +107,15 @@ config CBE_CPUFREQ_PMI
 	  processor will not only be able to run at lower speed,
 	  but also at lower core voltage.
 
+config CBE_CPUFREQ_SPU_GOVERNOR
+	tristate "CBE frequency scaling based on SPU usage"
+	depends on SPU_FS && CPU_FREQ
+	default m
+	help
+	  This governor checks for spu usage to adjust the cpu frequency.
+	  If no spu is running on a given cpu, that cpu will be throttled to
+	  the minimal possible frequency.
+
 endmenu
 
 config OPROFILE_CELL
diff --git a/arch/powerpc/platforms/cell/Makefile b/arch/powerpc/platforms/cell/Makefile
index c2a7e4e..7fcf09b 100644
--- a/arch/powerpc/platforms/cell/Makefile
+++ b/arch/powerpc/platforms/cell/Makefile
@@ -8,6 +8,7 @@ obj-$(CONFIG_CBE_THERM)			+= cbe_thermal.o
 obj-$(CONFIG_CBE_CPUFREQ_PMI)		+= cbe_cpufreq_pmi.o
 obj-$(CONFIG_CBE_CPUFREQ)		+= cbe-cpufreq.o
 cbe-cpufreq-y				+= cbe_cpufreq_pervasive.o cbe_cpufreq.o
+obj-$(CONFIG_CBE_CPUFREQ_SPU_GOVERNOR)	+= cpufreq_spudemand.o
 
 ifeq ($(CONFIG_SMP),y)
 obj-$(CONFIG_PPC_CELL_NATIVE)		+= smp.o
diff --git a/arch/powerpc/platforms/cell/cpufreq_spudemand.c b/arch/powerpc/platforms/cell/cpufreq_spudemand.c
new file mode 100644
index 0000000..a3c6c01
--- /dev/null
+++ b/arch/powerpc/platforms/cell/cpufreq_spudemand.c
@@ -0,0 +1,184 @@
+/*
+ * spu aware cpufreq governor for the cell processor
+ *
+ * © Copyright IBM Corporation 2006-2008
+ *
+ * Author: Christian Krafft <krafft@de.ibm.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <linux/cpufreq.h>
+#include <linux/sched.h>
+#include <linux/timer.h>
+#include <linux/workqueue.h>
+#include <asm/atomic.h>
+#include <asm/machdep.h>
+#include <asm/spu.h>
+
+#define POLL_TIME	100000		/* in µs */
+#define EXP		753		/* exp(-1) in fixed-point */
+
+struct spu_gov_info_struct {
+	unsigned long busy_spus;	/* fixed-point */
+	struct cpufreq_policy *policy;
+	struct delayed_work work;
+	unsigned int poll_int;		/* µs */
+};
+static DEFINE_PER_CPU(struct spu_gov_info_struct, spu_gov_info);
+
+static struct workqueue_struct *kspugov_wq;
+
+static int calc_freq(struct spu_gov_info_struct *info)
+{
+	int cpu;
+	int busy_spus;
+
+	cpu = info->policy->cpu;
+	busy_spus = atomic_read(&cbe_spu_info[cpu_to_node(cpu)].busy_spus);
+
+	CALC_LOAD(info->busy_spus, EXP, busy_spus * FIXED_1);
+	pr_debug("cpu %d: busy_spus=%d, info->busy_spus=%ld\n",
+			cpu, busy_spus, info->busy_spus);
+
+	return info->policy->max * info->busy_spus / FIXED_1;
+}
+
+static void spu_gov_work(struct work_struct *work)
+{
+	struct spu_gov_info_struct *info;
+	int delay;
+	unsigned long target_freq;
+
+	info = container_of(work, struct spu_gov_info_struct, work.work);
+
+	/* after cancel_delayed_work_sync we unset info->policy */
+	BUG_ON(info->policy == NULL);
+
+	target_freq = calc_freq(info);
+	__cpufreq_driver_target(info->policy, target_freq, CPUFREQ_RELATION_H);
+
+	delay = usecs_to_jiffies(info->poll_int);
+	queue_delayed_work_on(info->policy->cpu, kspugov_wq, &info->work, delay);
+}
+
+static void spu_gov_init_work(struct spu_gov_info_struct *info)
+{
+	int delay = usecs_to_jiffies(info->poll_int);
+	INIT_DELAYED_WORK_DEFERRABLE(&info->work, spu_gov_work);
+	queue_delayed_work_on(info->policy->cpu, kspugov_wq, &info->work, delay);
+}
+
+static void spu_gov_cancel_work(struct spu_gov_info_struct *info)
+{
+	cancel_delayed_work_sync(&info->work);
+}
+
+static int spu_gov_govern(struct cpufreq_policy *policy, unsigned int event)
+{
+	unsigned int cpu = policy->cpu;
+	struct spu_gov_info_struct *info, *affected_info;
+	int i;
+	int ret = 0;
+
+	info = &per_cpu(spu_gov_info, cpu);
+
+	switch (event) {
+	case CPUFREQ_GOV_START:
+		if (!cpu_online(cpu)) {
+			printk(KERN_ERR "cpu %d is not online\n", cpu);
+			ret = -EINVAL;
+			break;
+		}
+
+		if (!policy->cur) {
+			printk(KERN_ERR "no cpu specified in policy\n");
+			ret = -EINVAL;
+			break;
+		}
+
+		/* initialize spu_gov_info for all affected cpus */
+		for_each_cpu_mask(i, policy->cpus) {
+			affected_info = &per_cpu(spu_gov_info, i);
+			affected_info->policy = policy;
+		}
+
+		info->poll_int = POLL_TIME;
+
+		/* setup timer */
+		spu_gov_init_work(info);
+
+		break;
+
+	case CPUFREQ_GOV_STOP:
+		/* cancel timer */
+		spu_gov_cancel_work(info);
+
+		/* clean spu_gov_info for all affected cpus */
+		for_each_cpu_mask (i, policy->cpus) {
+			info = &per_cpu(spu_gov_info, i);
+			info->policy = NULL;
+		}
+
+		break;
+	}
+
+	return ret;
+}
+
+static struct cpufreq_governor spu_governor = {
+	.name = "spudemand",
+	.governor = spu_gov_govern,
+	.owner = THIS_MODULE,
+};
+
+/*
+ * module init and destoy
+ */
+
+static int __init spu_gov_init(void)
+{
+	int ret;
+
+	kspugov_wq = create_workqueue("kspugov");
+	if (!kspugov_wq) {
+		printk(KERN_ERR "creation of kspugov failed\n");
+		ret = -EFAULT;
+		goto out;
+	}
+
+	ret = cpufreq_register_governor(&spu_governor);
+	if (ret) {
+		printk(KERN_ERR "registration of governor failed\n");
+		destroy_workqueue(kspugov_wq);
+		goto out;
+	}
+out:
+	return ret;
+}
+
+static void __exit spu_gov_exit(void)
+{
+	cpufreq_unregister_governor(&spu_governor);
+	destroy_workqueue(kspugov_wq);
+}
+
+
+module_init(spu_gov_init);
+module_exit(spu_gov_exit);
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Christian Krafft <krafft@de.ibm.com>");
+
-- 
1.5.4.3

-- 

^ permalink raw reply related


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox