====== hvc-console-rework-4.diff ====== Subject: powerpc: hvc_console updates These are some updates from both Ryan and Arnd for the hvc_console driver: The main point is to enable the inclusion of a console driver for rtas, which is currrently needed for the cell platform. Also shuffle around some data-type declarations and moves some functions out of include/asm-ppc64/hvconsole.h and into a new drivers/char/hvc_console.h file. From: "Ryan S. Arnold" Signed-off-by: "Ryan S. Arnold" Signed-off-by: Arnd Bergmann --- diffstat: arch/powerpc/platforms/pseries/hvconsole.c | 5 drivers/char/Kconfig | 10 + drivers/char/Makefile | 3 drivers/char/hvc_console.c | 69 ++++------ drivers/char/hvc_console.h | 63 +++++++++ drivers/char/hvc_vio.c | 11 + include/asm-powerpc/hvconsole.h | 26 +-- 7 files changed, 128 insertions(+), 59 deletions(-) ====== hvc-console-rtas-4.diff ====== Subject: powerpc: add hvc backend for rtas Current Cell hardware is using the console through a set of rtas calls. This driver is needed to get console output on those boards. Signed-off-by: Arnd Bergmann --- diffstat: Kconfig | 7 ++ Makefile | 1 hvc_rtas.c | 138 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 146 insertions(+) ====== cell-detect.diff ====== Subject: powerpc: update cell platform detection All future firmware should have 'CBEA' in the compatible property in order to tell us that we are running on the cell platform, so check for that as well as the now deprecated value we have been using so far. Signed-off-by: Arnd Bergmann --- diffstat: prom_init.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) ====== iommu-fix.diff ====== Subject: powerpc: fix cell iommu setup A small bug crept in the iommu driver when we made it more generic. This patch is needed for boards that have a dma window that does not start at bus address zero. Signed-off-by: Arnd Bergmann --- diffstat: iommu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) ====== cell-defconfigs-11.diff ====== Subject: powerpc: update cell defconfig The default configuration in mainline got a little out of sync with what we use internally. Signed-off-by: Arnd Bergmann --- diffstat: cell_defconfig | 133 ++++++++++++++----------------------- 1 file changed, 52 insertions(+), 81 deletions(-) ====== cell-pic-updates-3.diff ====== Subject: [RFC] powerpc: cell interrupt controller updates The current interrupt controller setup on Cell is done in a rather ad-hoc way with device tree properties that are not standardized at all. In an attempt to do something that follows the OF standard (or at least the IBM extensions to it) more closely, we have now come up with this patch. It still provides a fallback to the old behaviour when we find older firmware, that hack can not be removed until the existing customer installations have upgraded. Cc: hpenner@de.ibm.com Cc: stk@de.ibm.com Cc: Segher Boessenkool Cc: Milton Miller Cc: benh@kernel.crashing.org From: Jens Osterkamp Signed-off-by: Arnd Bergmann --- diffstat: interrupt.c | 118 ++++++++++++++++++++++++++++++--------- interrupt.h | 2 spider-pic.c | 106 +++++++++++++++++++++++++---------- 3 files changed, 170 insertions(+), 56 deletions(-) ====== powerpc-asm-syscalls-h-2.diff ====== Subject: powerpc: declare arch syscalls in powerpc currently declares some of its own system calls in , but not all of them. That place also contains remainders of the now almost unused kernel syscall hack. - Add a new with clean declarations - Include that file from every source that implements one of these - Get rid of old declarations in This patch is required as a base for implementing system calls from an SPU, but also makes sense as a general cleanup. Signed-off-by: Arnd Bergmann --- diffstat: arch/powerpc/kernel/process.c | 1 arch/powerpc/kernel/rtas.c | 1 arch/powerpc/kernel/signal_32.c | 1 arch/powerpc/kernel/signal_64.c | 1 arch/powerpc/kernel/syscalls.c | 1 include/asm-powerpc/syscalls.h | 58 ++++++++++++++++++++ include/asm-powerpc/unistd.h | 35 ------------ 7 files changed, 64 insertions(+), 34 deletions(-) ====== spufs-callbacks-3.diff ====== Subject: spufs: allow SPU code to do syscalls An SPU does not have a way to implement system calls itself, but it can create intercepts to the kernel. This patch uses the method defined by the JSRE interface for C99 host library calls from an SPU to implement Linux system calls. It uses the reserved SPU stop code 0x2104 for this, using the structure layout and syscall numbers for ppc64-linux. I'm still undecided wether it is better to have a list of allowed syscalls or a list of forbidden syscalls, since we can't allow an SPU to call all syscalls that are defined for ppc64-linux. This patch implements the easier choice of them, with a blacklist that only prevents an SPU from calling anything that interacts with its own execution, e.g fork, execve, clone, vfork, exit, spu_run and spu_create and everything that deals with signals. Signed-off-by: Arnd Bergmann --- diffstat: arch/powerpc/platforms/cell/Makefile | 10 arch/powerpc/platforms/cell/spu_callbacks.c | 345 ++++++++++ arch/powerpc/platforms/cell/spufs/run.c | 91 ++ include/asm-powerpc/spu.h | 9 4 files changed, 452 insertions(+), 3 deletions(-) ====== unshare-decl.diff ====== Subject: add sys_unshare to syscalls.h All architecture independent system calls should be declared in syscalls.h, add the one that is missing. To: Andrew Morton Signed-off-by: Arnd Bergmann --- This patch is not powerpc-specific in principle, the reason for including it in my cell updates is that my next patch depends on it. --- diffstat: syscalls.h | 1 + 1 file changed, 1 insertion(+) ====== spufs-mfc-file.diff ====== Subject: spufs: implement mfc access for PPE-side DMA This patch adds a new file called 'mfc' to each spufs directory. The file accepts DMA commands that are a subset of what would be legal DMA commands for problem state register access. Upon reading the file, a bitmask is returned with the completed tag groups set. The file is meant to be used from an abstraction in libspe that is added by a different patch. From the kernel perspective, this means a process can now offload a memory copy from or into an SPE local store without having to run code on the SPE itself. The transfer will only be performed while the SPE is owned by one thread that is waiting in the spu_run system call and the data will be transferred into that thread's address space, independent of which thread started the transfer. Signed-off-by: Arnd Bergmann --- diffstat: arch/powerpc/platforms/cell/spu_base.c | 7 arch/powerpc/platforms/cell/spufs/backing_ops.c | 47 + arch/powerpc/platforms/cell/spufs/context.c | 5 arch/powerpc/platforms/cell/spufs/file.c | 294 ++++++++++ arch/powerpc/platforms/cell/spufs/hw_ops.c | 57 + arch/powerpc/platforms/cell/spufs/sched.c | 2 arch/powerpc/platforms/cell/spufs/spufs.h | 20 arch/powerpc/platforms/cell/spufs/switch.c | 3 include/asm-powerpc/spu.h | 1 9 files changed, 431 insertions(+), 5 deletions(-) ====== spufs-ps-mapping-3.diff ====== Subject: spufs: enable SPE problem state MMIO access. This patch is layered on top of CONFIG_SPARSEMEM and is patterned after direct mapping of LS. This patch allows mmap() of the following regions: "mfc", which represents the area from [0x3000 - 0x3fff]; "cntl", which represents the area from [0x4000 - 0x4fff]; "signal1" which begins at offset 0x14000; "signal2" which begins at offset 0x1c000. The signal1 & signal2 files may be mmap()'d by regular user processes. The cntl and mfc file, on the other hand, may only be accessed if the owning process has CAP_SYS_RAWIO, because they have the potential to confuse the kernel with regard to parallel access to the same files with regular file operations: the kernel always holds a spinlock when accessing registers in these areas to serialize them, which can not be guaranteed with user mmaps, From: Mark Nutter Signed-off-by: Arnd Bergmann --- diffstat: arch/powerpc/platforms/cell/Kconfig | 5 arch/powerpc/platforms/cell/spu_base.c | 5 arch/powerpc/platforms/cell/spufs/context.c | 18 arch/powerpc/platforms/cell/spufs/file.c | 229 +++++++++- arch/powerpc/platforms/cell/spufs/inode.c | 2 arch/powerpc/platforms/cell/spufs/spufs.h | 8 include/asm-powerpc/spu.h | 1 7 files changed, 256 insertions(+), 12 deletions(-) ====== spufs-ini-section.diff ====== Subject: fix __init/__exit annotations for spufs spufs_init and spufs_exit should be marked correctly so they can be removed when not needed. Signed-off-by: Arnd Bergmann --- --- diffstat: inode.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) ====== init_mfc.diff ====== Subject: spufs: initialize context correctly the mfc member of a new context was not initialized to zero, which potentially leads to wild memory accesses. From: Dirk Herrendoerfer Signed-off-by: Arnd Bergmann --- diffstat: context.c | 1 + 1 file changed, 1 insertion(+) ====== spufs-ls-protfault-fix.diff ====== Subject: spufs: Fix endless protection fault on LS writes by SPE. If an SPE attempts a DMA put to a local store after already doing a get, the kernel must update the HW PTE to allow the write access. This case was not being handled correctly. From: Mike Kistler Signed-off-by: Mike Kistler Signed-off-by: Arnd Bergmann --- diffstat: spu_base.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) ====== spidernet-buildfix.diff ====== Subject: don't link sungem_phy.o in twice This patch fixes a spidernet build issue found in 2.6.16-rc5-mm2. Signed-off-by: Jens Osterkamp Signed-off-by: Arnd Bergmann --- diffstat: Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) ====== spidernet-selectfwloader.diff ====== Subject: spidernet: add a dependency on CONFIG_FW_LOADER Signed-off-by: Arnd Bergmann --- diffstat: Kconfig | 1 + 1 file changed, 1 insertion(+) ====== spidernet-txcsum-2.diff ====== Subject: spidernet: enable HW checksum offload From: Jens Osterkamp Signed-off-by: Arnd Bergmann --- --- diffstat: spider_net.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) ====== spidernet-rxramfl.diff ====== Subject: spidernet: shut up about rx buffer full From: Jens Osterkamp Signed-off-by: Arnd Bergmann --- diffstat: spider_net.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) ====== iic-map-guarded.diff ====== Subject: powerpc: use guarded ioremap for on-chip mappings I'm not sure where the information came from, but I assumed that doing cache-inhibited mappings for mmio regions was sufficient. It seems we also need the guarded bit set, like everyone else, which is the default for ioremap. Signed-off-by: Arnd Bergmann --- --- diffstat: interrupt.c | 10 +++------- iommu.c | 12 ++++++------ pervasive.c | 2 +- spider-pic.c | 4 ++-- 4 files changed, 12 insertions(+), 16 deletions(-) ====== spider-pic-nodeid.diff ====== Subject: cell: set the correct node id in spider-pic Signed-off-by: Arnd Bergmann --- diffstat: spider-pic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) ====== signal-fix.diff ====== Subject: sigaltstack bad behavior on powerpc64 I may have found a bug in powerpc64 arch specific code. *) When setting a sighandler using sigaction() call, if the flag SA_ONSTACK is set and no alternate stack is provided via sigaltstack(), the kernel still try to install the alternate stack. This behavior is the opposite of the one which is documented in Single Unix Specifications V3. *) Also when setting an alternate stack using sigaltstack() with the flag SS_DISABLE, the kernel try to install the alternate stack on signal delivery. These two use cases makes the process crash at signal delivery. I wrote a small patch to add a condition in get_sigframe(). Hope that is relevant and helpfull. Regards, Laurent MEYER. Signed-off-by: Laurent Meyer Signed-off-by: Arnd Bergmann --- diffstat: signal_64.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) ====== defconfig-update.diff ====== Subject: cell: update defconfig Signed-off-by: Arnd Bergmann --- diffstat: cell_defconfig | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) ====== spufs-decrementer-fix.diff ====== Subject: Fix SPU context-switch decrementer code From: Jordi Caubet We found that when the 'decrementer' is saved, the PPE saves the current time 'csa->suspend_time'. When restoring the 'decrementer', (Step 34) decrementer seems to be adjusted with the number of cycles th= at a spu thread has not been running. In that code it is missing a substract ('-') because 'delta_time' is assigned a not substracted(see bellow). Acked-by: Mark Nutter Signed-off-by: Arnd Bergmann --- diffstat: switch.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) ====== hvc-console-fast.diff ====== Subject: powerpc: Make rtas console _much_ faster From: Michael Ellerman Currently the hvc_rtas driver is painfully slow to use. Our "benchmark" is ls -R /etc, which spits out about 27866 characters. The theoretical maximum speed would be about 2.2 seconds, the current code takes ~50 seconds. The core of the problem is that sometimes when the tty layer asks us to push characters the firmware isn't able to handle some or all of them, and so returns an error. The current code sees this and just returns to the tty code with the buffer half sent. There's the khvcd thread which will eventually wake up and try to push more characters, that will usually work because the firmware's had time to push the characters out. But the thread only wakes up every 10 milliseconds, which isn't fast enough. There's already code in the hvc_console driver to make the khvcd thread do a "quick" loop, where it just calls yield() instead of sleeping. The only code that triggered that behaviour was recently removed though, which I don't quite understand. Still, if we set HVC_POLL_QUICK whenever the push hvc_push() doesn't push all characters (ie. RTAS blocks), we can get good performance out of the hvc_rtas backend. With this patch the "benchmark" takes ~2.8 seconds. I'll test this on P5 LPAR, is there anyone else that uses hvc_console? Thoughts? Cc: Ryan Arnold Signed-off-by: Michael Ellerman Signed-off-by: Arnd Bergmann --- drivers/char/hvc_console.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- diffstat: hvc_console.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) ====== spu-base-no-module-2.diff ====== Subject: cell: always build spu base into the kernel The spu_base module is rather deeply intermixed with the core kernel, so it makes sense to have that built-in. This will let us extend the base in the future without having to export more core symbols just for it. Signed-off-by: Arnd Bergmann --- diffstat: Makefile | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) ====== spidernet-bcm5461-2.diff ====== Subject: spidernet: enable support for bcm5461 ethernet phy From: Jens Osterkamp A newer board revision changed the type of ethernet phy. Moreover, this generalizes the way that a phy gets switched into fiber mode when autodetection is not available. Signed-off-by: Jens Osterkamp Signed-off-by: Arnd Bergmann --- --- diffstat: spider_net.c | 10 -------- sungem_phy.c | 45 +++++++++++++++++++++++++++++++++++++++ sungem_phy.h | 1 3 files changed, 47 insertions(+), 9 deletions(-) ====== ib-disable_tune_pci.diff ====== From: Michael S. Tsirkin Date: Wed, 5 Apr 2006 12:47:16 +0000 (+0300) Subject: IB/mthca: Disable tuning PCI read burst size X-Git-Tag: v2.6.17-rc2 X-Git-Url: http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=abf45dbb5b256dab439ca3b6b71191ecfddf9cb6 IB/mthca: Disable tuning PCI read burst size The PCI spec recommends against drivers playing with a device's PCI read burst size, and says that systems software should configure it. And we actually have users that report that changing it from the default set by BIOS hurts performance and/or stability for them. On the other hand, the Mellanox Programmer's Reference Manual recommends turning it up all the way to the maximum value. Some tests conducted here in the lab do not show performance improvement from this tuning, but this might be just me. As a work-around, make this tuning an option, off by default (safe value), with an eye towards removing it completely one day if no one complains. Signed-off-by: Michael S. Tsirkin Signed-off-by: Roland Dreier --- --- diffstat: mthca_main.c | 7 +++++++ 1 file changed, 7 insertions(+) ====== ib-ioremap-3.diff ====== Subject: IB/mthca: FMR ioremap fix From: Michael S. Tsirkin Addresses for ioremap must be calculated off of pci_resource_start; we can't directly use the bus address as seen by the HCA. Fix the code that remaps device memory for FMR access. Based on patch by Klaus Smolin. Signed-off-by: Michael S. Tsirkin Signed-off-by: Roland Dreier --- diffstat: mthca_mr.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) ====== ib-mthca_reset.diff ====== mthca misses restoring the following PCI-X/PCI-Express registers at reset: PCI-X device: PCI-X command register PCI-X bridge: upstream and downstream split transaction registers PCI-Express : PCI-Express device control and link control registers Signed-off-by: Michael S. Tsirkin --- diffstat: mthca_reset.c | 59 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) ====== systemsim-base.diff ====== Subject: powerpc: basic systemsim support Add some support and doc files for the IBM Full System Simulator and a configuration option that acts as a control for the patches based on this one. No code is changed in this patch, but it is required for the systemsim network, block, hvc_console and cpu_idle patches that are based on the infrastructure in here. From: Eric Van Hensbergen Signed-off-by: Arnd Bergmann --- --- diffstat: Documentation/systemsim/maple.tcl | 95 ++++++++++ Documentation/systemsim/systemsim.txt | 92 +++++++++ arch/powerpc/Kconfig | 11 + include/asm-powerpc/systemsim.h | 132 ++++++++++++++ 4 files changed, 330 insertions(+) ====== systemsim-block.diff ====== Subject: powerpc: systemsim block device driver The block device driver for systemsim is currently required for running on the Cell systemsim port, which does not simulate any other block devices. From: Eric Van Hensbergen Signed-off-by: Arnd Bergmann --- --- diffstat: Kconfig | 7 Makefile | 2 systemsim_bd.c | 285 +++++++++++++++++++++++++++++++++++++ 3 files changed, 293 insertions(+), 1 deletion(-) ====== systemsim-bd-fixup.diff ====== Subject: systemsim: don't load systemsim_bd when running on real HW If we don't do this, we crash during bootup Signed-off-by: Arnd Bergmann --- --- diffstat: systemsim_bd.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) ====== systemsim-net.diff ====== Subject: powerpc: systemsim network driver This adds a simple network driver for virtual networking on the IBM Full System Simulator. From: Eric Van Hensbergen Signed-off-by: Arnd Bergmann --- --- diffstat: Kconfig | 8 Makefile | 1 systemsim_net.c | 390 ++++++++++++++++++++++++++++++++++++ 3 files changed, 399 insertions(+) ====== systemsim-defconfig.diff ====== Subject: powerpc: add systemsim_defconfig This default configuration is supposed to work with both the powerpc970 as well as the cell systemsim. From: Eric Van Hensbergen Signed-off-by: Arnd Bergmann --- --- diffstat: systemsim_defconfig | 1191 ++++++++++++++++++++++++++++++++ 1 file changed, 1191 insertions(+) ====== hvc-console-fss-2.diff ====== Subject: powerpc: Add a hvc backend for systemsim The IBM full system simulator for PowerPC has its own set of calls used for console interaction, when not simulating actual serial port hardware. This is needed to run the simulator for Cell and can also be used for the PowerPC 970 simulator. It also adds the generic asm/systemsim.h header file that is also used by other device drivers for the system simulator, i.e. the block and network drivers. Signed-off-by: "Ryan S. Arnold" Signed-off-by: Arnd Bergmann --- --- diffstat: Kconfig | 8 +++ Makefile | 1 hvc_fss.c | 109 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 118 insertions(+) ====== mss-map.diff ====== Subject: spufs: restore mapping of mssync register A recent change to the way that the mfc file gets mapped made it impossible to map the SPE Multi-Source Synchronization register into user space, but that may be needed by some applications. This restores the missing functionality. Signed-off-by: Arnd Bergmann --- --- diffstat: file.c | 50 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) ====== systemsim-idle.diff ====== Subject: powerpc: cpu_idle implementation for systemsim The original cpu_idle hack from the systemsim git tree is a bit strange, because it unconditionally changes the native_idle function. This one instead introduces a new idle implementation that is only used on systemsim. Signed-off-by: Arnd Bergmann --- diffstat: arch/powerpc/Kconfig | 9 +++ arch/powerpc/kernel/Makefile | 1 arch/powerpc/kernel/idle_systemsim.c | 35 +++++++++++++++ arch/powerpc/kernel/setup_64.c | 19 ++++++++ include/asm-powerpc/machdep.h | 1 5 files changed, 65 insertions(+) ====== systemsim_idlefix.diff ====== Subject: systemsim: fix idle initialization We have to call setup_systemsim_idle() first so we don't overwrite the idle vector. Signed-off-by: Arnd Bergmann --- diffstat: setup_64.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) ====== cell-iic-cleanup.diff ====== Subject: cell: fix interrupt priority handling Checking the priority field to test for irq validity is completely bogus and breaks with future external interrupt controllers. Signed-off-by: Arnd Bergmann --- --- diffstat: interrupt.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) ====== spidernet-gbeburst.diff ====== Subject: spidernet: introduce new setting From: Jens Osterkamp We found a new chip setting that we need in order to make the driver work more reliable. Signed-off-by: Arnd Bergmann --- diffstat: spider_net.c | 2 ++ spider_net.h | 2 ++ 2 files changed, 4 insertions(+) ====== spidernet-tx-queue-rework.diff ====== Subject: spidernet: rework tx queue handling From: Maxim Shchetynin With this patch TX queue descriptors are not chained per default any more. The pointer to next descriptor is set only when next descriptor is prepaired for transfer. Also the mechanism of checking wether Spider is ready has been changed: it checks not for CARDOWNED flag in status of previous descriptor but for a TXDMAENABLED flag in Spider's register. Signed-off-by: Maxim Shchetynin Signed-off-by: Arnd Bergmann --- diffstat: spider_net.c | 578 +++++++++++++++++---------------------- spider_net.h | 73 +--- 2 files changed, 274 insertions(+), 377 deletions(-) ====== dd2-performance.diff ====== Subject: [FYI] Performance hacks for broken Cell CPU revisions The currently used CPUs of the Cell BE DD2.0 release have a few glitches that may result in bad performance, these workarounds are suggested in the Errata: - When a decrementer or external exception occurs, wake up the other SMT thread from pause(0) state. - When a system reset exception occurs (i.e. the CPU wakes up from pause(0) state), do a quick check if we were meant to wake up, otherwise go back to pause(0) state. - change the default floating point exception mode to zero. It is rather unlikely that we find a way to create a patch that won't be harmful to any other platform, so this is definitely not meant for inclusion in the mainline kernel, but only provided for those people that build a special kernel for Cell BE DD2.0. From: Jens Osterkamp Signed-off-by: Arnd Bergmann --- --- diffstat: arch/powerpc/kernel/head_64.S | 44 ++++++++++++++++ arch/powerpc/platforms/cell/Kconfig | 10 +++ include/asm-powerpc/processor.h | 2 3 files changed, 55 insertions(+), 1 deletion(-) ====== dd2-hack-runlatch-hack.diff ====== Subject: cell: fix dd2-performance.diff Change our DD2 hack for the new runlatch handling. Signed-off-by: Arnd Bergmann --- --- diffstat: head_64.S | 1 - 1 file changed, 1 deletion(-) ====== pci-fixup-hack.diff ====== Subject: small hacks for running on BPA hardware, v3 This patch is not meant for inclusion in a generic kernel, but is currently needed to support the available HW. Most of the things done in here are workarounds for deficiencies in the present hardware or firmware that will be solved there in later releases. Signed-off-by: Arnd Bergmann --- --- diffstat: arch/powerpc/platforms/cell/Makefile | 2 arch/powerpc/platforms/cell/pci.c | 82 +++++++++++++ arch/powerpc/platforms/cell/setup.c | 2 arch/powerpc/platforms/cell/spu_base.c | 4 include/linux/pci_ids.h | 2 5 files changed, 91 insertions(+), 1 deletion(-) ====== parm-fixup.diff ====== Subject: [FYI] cell: hack around broken firmware command line Some firmware versions on cell don't allow setting the kernel command line via nvram and the firmware user interface to set it is not officially supported. If we encounter the broken command line, we change it to the values that we expect to be correct and warn the user that they should upgrade the firmware. This patch is not for inclusion in an official kernel but only provided for information purposes. Signed-off-by: Arnd Bergmann --- --- diffstat: arch/powerpc/platforms/cell/setup.c | 31 ++++++++++++++++ drivers/ide/pci/aec62xx.c | 8 ++-- 2 files changed, 35 insertions(+), 4 deletions(-) ====== spufs-sparsemem-extreme-2.diff ====== Subject: [FYI] cell: Hack to create struct page for SPUs The initialization for the SPU page structures broken with the inclusion of extreme sparsemem in current kernels. This works around that problem by further moving code around. Unfortunately, this patch is not only ugly, but also broken when CONFIG_NUMA is enabled, so this is not meant for inclusion in the near future. I hope someone finds a way to get a working solution for this. Signed-off-by: Arnd Bergmann --- --- diffstat: arch/powerpc/kernel/setup_64.c | 2 ++ arch/powerpc/platforms/cell/setup.c | 9 ++------- include/asm-powerpc/spu.h | 7 +++++++ 3 files changed, 11 insertions(+), 7 deletions(-) ====== memory-add.diff ====== Subject: spufs: fix for CONFIG_NUMA From: Joel H Schopp Based on an older patch from Mike Kravetz We need to have a mem_map for high addresses in order to make fops->no_page work on spufs mem and register files. So far, we have used the memory_present() function during early bootup, but that did not work when CONFIG_NUMA was enabled. We now use the __add_pages() function to add the mem_map when loading the spufs module, which is a lot nicer. Unfortunately, the memory hot-add code is currently a little broken (tries to do bootmem_alloc and kmalloc from the same function), so I had to add an ugly hack to the common code for that, which I don't want to submit for upstream inclusion in its current form. Signed-off-by: Arnd Bergmann --- --- diffstat: arch/powerpc/kernel/setup_64.c | 1 arch/powerpc/platforms/cell/Kconfig | 4 arch/powerpc/platforms/cell/setup.c | 71 ------------ arch/powerpc/platforms/cell/spu_base.c | 73 ++++++++++--- mm/memory_hotplug.c | 6 - mm/sparse.c | 25 ++-- 6 files changed, 86 insertions(+), 94 deletions(-) ====== spu-hash-page-fix-2.diff ====== Subject: spufs: Disable local interrupts for SPE hash_page calls. From: Mark Nutter This patch disables and saves local interrupts during hash_page processing for SPE contexts. We have to do it explicitly in the spu_irq_class_1_bottom function. For the interrupt handlers, we get the behaviour implicitly by using SA_INTERRUPT to disable interrupts while in the handler. Signed-off-by: Arnd Bergmann --- --- diffstat: spu_base.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) ====== cell-cross-build-2.diff ====== Subject: cell: allow building with broken cross-compiler From: "David J. Erb" The currently recommended cross tool chain for cell needs an extra argument to be passed in order to build the kernel correctly. Signed-off-by: Arnd Bergmann --- diffstat: Makefile | 1 + 1 file changed, 1 insertion(+) ====== cbesim-defconfig-2.diff ====== Subject: [FYI] cell: systemsim defconfig This is an update to the default configuration from an earlier binary release on http://bsc.es/. Since the other systemsim patches are still under discussion, this is provided on a purely informational basis. Signed-off-by: Arnd Bergmann --- diffstat: cbesim_defconfig | 825 +++++++++++++++++++++++++++++++++++ 1 file changed, 825 insertions(+) ====== spufs-rmdir-3.diff ====== Subject: Fix deadlock in spu_create error path From: Michael Ellerman spufs_rmdir tries to acquire the spufs root i_mutex, which is already held by spufs_create_thread. This was tracked as Bug #H9512. Signed-off-by: Arnd Bergmann --- --- diffstat: inode.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) ====== spidernet-rxramfull-fix.diff ====== Subject: spidernet: bug fix for init code From: Jens Osterkamp We want to intitialize addr instead of data register first. Signed-off-by: Jens Osterkamp Signed-off-by: Arnd Bergmann --- diffstat: spider_net.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) ====== 64-k-page-cell-3.diff ====== Subject: cell: fake mmu_psize array to enable 64k pages Firmware currently does not have the right properties for enabling 64k pages, so just claim we have them anyway. Obviously, this patch must not get merged, instead the firmware will have to fix their device tree. Similarly, the firmware does not set up HID6 correctly and we need some more changes to have that done for secondary CPUs. Signed-off-by: Arnd Bergmann --- --- diffstat: kernel/cpu_setup_power4.S | 25 ++++++++++++++++++--- mm/hash_utils_64.c | 30 ++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 4 deletions(-) ====== 64k-page-enable.diff ====== Subject: cell: enable CPU_FTR_CI_LARGE_PAGE Reflect the fact that the Cell Broadband Engine supports 64k pages by adding the bit to the CPU features. Signed-off-by: Arnd Bergmann --- --- diffstat: cputable.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) ====== fix-tlbie-64k-page.diff ====== Subject: powerpc: fix 64k pages on non-hypervisor From: Benjamin Herrenschmidt The page size encoding passed to tlbie is incorrect for new-style large pages. This fixes it. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Arnd Bergmann --- --- diffstat: hash_native_64.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) ====== spufs-64-k-fix.diff ====== Subject: spufs: set up correct SLB entries for 64k pages spufs currently knows only 4k pages and 16M hugetlb pages. Make it use the regular methods for deciding on the SLB bits. Signed-off-by: Arnd Bergmann --- --- diffstat: spu_base.c | 11 ++++++++--- spufs/switch.c | 14 ++++++++------ 2 files changed, 16 insertions(+), 9 deletions(-) ====== 64k-page-exports.diff ====== Subject: powerpc: export symbols for page size selection We need access to some symbols in powerpc memory management from spufs in order to create proper SLB entries. Signed-off-by: Arnd Bergmann --- --- diffstat: hash_utils_64.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) ====== spufs-smm-hid.diff ====== Subject: [FYI/RFC] cell: setting up SMM_HID It turns out that the page sizes for an SPE are not controlled by HID6 but rather by SMM_HID in the hypervisor register space (priv1) of each SPE. Unfortunately, the firmware does not set these up so far (even the one that does set up HID6), so we have to do it ourselves. This is not the real solution, since we cannot simply hardcode this when the firmware might change. Need some discussion with the firmware developers about this. Cc: Hartmut Penner Signed-off-by: Arnd Bergmann --- --- diffstat: arch/powerpc/platforms/cell/spu_base.c | 1 + arch/powerpc/platforms/cell/spu_priv1.c | 9 +++++++++ include/asm-powerpc/spu.h | 1 + 3 files changed, 11 insertions(+) ====== spufs-64k-csa.diff ====== Subject: [FYI] spufs: one more fix for 64k pages The SPU context save/restore code is currently built for a 4k page size and we provide a _shipped version of it since most people don't have the spu toolchain that is needed to rebuild that code. This patch hardcodes the data structures to a 64k page alignment, which also guarantees 4k alignment but unfortunately wastes 60k of memory per SPU context that is created in the running system. We will follow up on this with another patch to reduce that overhead or maybe redo the context save/restore logic to do this part entirely different, but for now it should make experimental systems work with either page size. Signed-off-by: Arnd Bergmann --- --- diffstat: arch/powerpc/platforms/cell/spufs/Makefile | 9 arch/powerpc/platforms/cell/spufs/spu_restore_dump.h_shipped | 1122 +++++++--- arch/powerpc/platforms/cell/spufs/spu_save_dump.h_shipped | 922 ++++++-- include/asm-powerpc/spu_csa.h | 13 4 files changed, 1651 insertions(+), 415 deletions(-) ====== defconfig-numa.diff ====== Subject: cell: enable NUMA This option helps for performance of SMP systems on cell. It makes it possible for device drivers and particularly spufs to honor locality of resources. Signed-off-by: Arnd Bergmann --- --- diffstat: cell_defconfig | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) ====== defconfig-tun.diff ====== Subject: enable TUN in cell_defconfig So we can run systemsim on the blade. Signed-off-by: Arnd Bergmann --- diffstat: cell_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) ====== defconfig-bonding.diff ====== Subject: cell: enable bonding in defconfig In order to use the two ethernet interfaces on the cell blade efficiently, ethernet bonding is always needed. Signed-off-by: Arnd Bergmann --- diffstat: cell_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) ====== spufs-phys-id.diff ====== Subject: spufs: add a phys-id attribute to each SPU context For performance analysis, it is often interesting to know which physical SPE a thread is currently running on, and, more importantly, if it is running at all. This patch adds a simple attribute to each SPU directory with that information. The attribute is read-only and called 'phys-id'. It contains an ascii string with the number of the physical SPU (e.g. "0x5"), or alternatively the string "0xffffffff" (32 bit -1) when it is not running at all at the time that the file is read. Signed-off-by: Arnd Bergmann --- --- diffstat: file.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) ====== spufs-fixme.diff ====== Subject: spufs: add a FIXME SetPageReserved should probably not be called on vmalloc memory. Need to investigate further. Signed-off-by: Arnd Bergmann --- --- diffstat: switch.c | 1 + 1 file changed, 1 insertion(+) ====== spufs-initial-wbox-stat.diff ====== Subject: spufs: fix initial state of wbox file The wbox channel count of an spu is now initialized to four for the saved context. This makes it possible to write to the mailbox right away without waiting for the SPE to become scheduled first. Signed-off-by: Arnd Bergmann --- --- diffstat: switch.c | 1 + 1 file changed, 1 insertion(+) ====== spufs-kzalloc.diff ====== Subject: powerpc: cell: Use kzalloc in create_spu From: Jeremy Kerr Clean up create_spu() a little by using kzalloc instead of kmalloc + assignments. Signed-off-by: Jeremy Kerr Signed-off-by: Arnd Bergmann --- arch/powerpc/platforms/cell/spu_base.c | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) --- diffstat: spu_base.c | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) ====== spufs-node-to-nid-2.diff ====== Subject: powerpc: Allow devices to register with numa topology From: Jeremy Kerr Change of_node_to_nid() to traverse the device tree, looking for a numa id. Cell uses this to assign ids to SPUs, which are children of the CPU node. Existing users of of_node_to_nid() are altered to use of_node_to_nid_single(), which doesn't do the traversal. Export an attach_sysdev_to_node() function, allowing system devices (eg. SPUs) to link themselves into the numa topology in sysfs. Signed-off-by: Arnd Bergmann --- --- diffstat: arch/powerpc/kernel/sysfs.c | 18 +++++++++++++++ arch/powerpc/mm/numa.c | 22 +++++++++++++++++++ include/asm-powerpc/topology.h | 24 +++++++++++++++++++++ 3 files changed, 64 insertions(+) ====== fix-spus-stuck-in-nid-0.diff ====== cell: fix spu/nid placement in 2.6.16 SDK kernel The of_node_to_nid() function originally depended on of_node_numa_domain to return -1 if no nid was found for a node - this wasn't the case in 2.6.16, where there's no distinction between "no nid" and nid 0 Change of_node_to_nid() to check for the ibm,associativity property itself. Signed-off-by: Jeremy Kerr Signed-off-by: Arnd Bergmann --- diffstat: numa.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) ====== spufs-numa-id.diff ====== Subject: powerpc: cell: Add numa id to struct From: Jeremy Kerr Add an nid member to the spu structure, and store the numa id of the spu there on creation. Signed-off-by: Arnd Bergmann --- diffstat: arch/powerpc/platforms/cell/spu_base.c | 44 +++++-------- include/asm-powerpc/spu.h | 1 2 files changed, 21 insertions(+), 24 deletions(-) ====== spufs-register-sysdev.diff ====== Subject: cell: Register SPUs as sysdevs From: Jeremy Kerr SPUs are registered as system devices, exposing attributes through sysfs. Since the sysdev includes a kref, we can remove the one in struct spu (it isn't used at the moment anyway). Currently only the interrupt source and numa node attributes are added. Signed-off-by: Arnd Bergmann --- diffstat: arch/powerpc/platforms/cell/spu_base.c | 54 +++++++++++++ include/asm-powerpc/spu.h | 5 - 2 files changed, 57 insertions(+), 2 deletions(-) ====== spufs-ctx-kzalloc.diff ====== Subject: cell: use kzalloc in alloc_spu_context() From: Jeremy Kerr Use kzalloc when allocating a new spu context, rather than kmalloc + zeroing. Booted & tested on cell. Signed-off-by: Jeremy Kerr Signed-off-by: Arnd Bergmann --- arch/powerpc/platforms/cell/spufs/context.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) --- diffstat: context.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) ====== spufs-channel-1-count.diff ====== Subject: spufs: don't try to access SPE channel 1 count The save/restore sequence for SPE contexts currently attempts to save and restore the channel count for SPE channel 1 (the SPU_WriteEventMask channel. But the CBE architecture (section 9.11.2) clearly states that this channel does not have an associated count. Hardware simply ignores the attempt to write this count, but the simulator generates a warning message. WARNING: 279721590: SPE7: Attempt to write channel count for CH 1 with no associated count is ignored. Signed-off-by: Arnd Bergmann --- diffstat: switch.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) ====== cell-ras-3.diff ====== Subject: add RAS support for Cell From: Benjamin Herrenschmidt Here's an updated version of the RAS patch in the mercury-l1 serie. It fixes a couple of register definitions and remove the definition of some trace registers. It should now be legal to distribute. It doesn't yet handle some of the RAS interrupts (the ones described in iic_is/iic_irr), I'm still working on a proper way to expose these. They are essentially a cascaded controller by themselves (sic !) though I may just handle them locally to the iic driver. I need also to sync with David Erb on the way he hooked in the performance monitor interrupt. So that's all for 2.6.16 and I'll do more work on that with my rework of the powerpc interrupt layer that I'm hacking on at the moment. Signed-off-by: Arnd Bergmann --- Here's a new version. It includes a start at handling internal units registers in a common place. Pervasive has been changed to use it (though it should really be renamed to "idle" and maybe fixed in other ways, see my comment) and a simple RAS stuff that dump FIRs on System Errors and Machine Checks added. Livelock notification still not there (still waiting for details on how we get notified, hopefully tomorrow). ECC not there since I still have a couple of pending questions about it and I want to sync with some of the work Jeremy is doing on the memory controller. So expect a new patch with more bits in the upcoming couple of days, but that's a start and we can comment on my approach to accessing registers. As I wrote in an earlier message, I'm not totally happy with any approach at this point though. For the interrupt code, I've decided to keep the discovery code as it was as it's better to look for functional nodes directly. At this point, I need to test, by triggering faults etc... which I havent had a chance to do yet. Ben. --- diffstat: arch/powerpc/configs/cbesim_defconfig | 1 arch/powerpc/configs/cell_defconfig | 1 arch/powerpc/kernel/head_64.S | 29 ++ arch/powerpc/kernel/prom.c | 45 ++++ arch/powerpc/platforms/cell/Kconfig | 4 arch/powerpc/platforms/cell/Makefile | 3 arch/powerpc/platforms/cell/cbe_regs.c | 128 +++++++++++ arch/powerpc/platforms/cell/cbe_regs.h | 129 ++++++++++++ arch/powerpc/platforms/cell/interrupt.c | 37 --- arch/powerpc/platforms/cell/pervasive.c | 104 +-------- arch/powerpc/platforms/cell/pervasive.h | 37 --- arch/powerpc/platforms/cell/ras.c | 112 ++++++++++ arch/powerpc/platforms/cell/ras.h | 9 arch/powerpc/platforms/cell/setup.c | 10 include/asm-powerpc/prom.h | 9 include/asm-powerpc/reg.h | 2 16 files changed, 514 insertions(+), 146 deletions(-) ====== spufs-sched-numa-2.diff ====== Subject: [PROTOTYPE] spufs scheduler support for NUMA. From: Mark Nutter This patch adds NUMA support to the the spufs scheduler. The new arch/powerpc/platforms/cell/spufs/sched.c is greatly simplified, in an attempt to reduce complexity while adding support for NUMA scheduler domains. SPUs are allocated starting from the calling thread's node, moving to others as supported by current->cpus_allowed. Preemption is gone as it was buggy, but should be re-enabled in another patch when stable. The new arch/powerpc/platforms/cell/spu_base.c maintains idle lists on a per-node basis, and allows caller to specify which node(s) an SPU should be allocated from, while passing -1 tells spu_alloc() that any node is allowed. Signed-off-by: Arnd Bergmann --- diffstat: arch/powerpc/platforms/cell/spu_base.c | 51 - arch/powerpc/platforms/cell/spufs/sched.c | 438 +++------- include/asm-powerpc/spu.h | 1 3 files changed, 195 insertions(+), 295 deletions(-) ====== cell-hvc-fss-detection.diff ====== Subject: Don't use hvc_fss if hvc_rtas is available The latest version of Systemsim does come with HVC_RTAS support enabled. Use that one instead, since it brings us one step closer to using no special device drivers for systemsim. Signed-off-by: Arnd Bergmann --- diffstat: hvc_fss.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) ====== cell-defconfigs-oprofile.diff ====== Subject: powerpc: enable oprofile for cell From: David Erb change defconfig so we build with oprofile by default. Signed-off-by: Arnd Bergmann --- diffstat: cbesim_defconfig | 2 ++ cell_defconfig | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) ====== cell-perfmon.diff ====== Subject: Performance Monitor support for Cell From: David Erb This provides basic performance monitor functions for Cell Signed-off-by: Arnd Bergmann --- diffstat: kernel/head_64.S | 6 kernel/traps.c | 2 platforms/cell/Kconfig | 8 platforms/cell/Makefile | 2 platforms/cell/cbe_regs.c | 25 +- platforms/cell/cbe_regs.h | 259 +++++++++++++++++++--- platforms/cell/interrupt.c | 67 +++++ platforms/cell/interrupt.h | 4 platforms/cell/perfmon.c | 294 +++++++++++++++++++++++++ platforms/cell/perfmon.h | 57 ++++ platforms/cell/pervasive.c | 6 11 files changed, 689 insertions(+), 41 deletions(-) ====== cell-perfmon-fix.diff ====== Subject: cell: Oprofile sample counter fix From: Carl Love There is a stop ship issue with Oprofile not collecting enough samples. I have a fix for this. I have done some limited testing, it works fine on my machine. I am being pressured to get you this fix sooner then I would like. I don't even have time to give you a proper patch file. Fortunately, the fix is a single line. Signed-off-by: Arnd Bergmann --- diffstat: perfmon.c | 2 ++ 1 file changed, 2 insertions(+) ====== cell-perfmon-more-fixes.diff ====== Subject: make oprofile on cell take more samples From: David Erb Oprofile does not take enough samples - dozens instead of thousands Signed-off-by: Arnd Bergmann --- diffstat: perfmon.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) ====== cell-perfmon-cleanup.diff ====== Subject: small cleanup for cell perfmon support From: David Erb The cell perfmon patch was disabling some code when compiling for cell, which was wrong in case of buiding a combined kernel image. This reverts that change. Signed-off-by: Arnd Bergmann --- diffstat: head_64.S | 6 ------ traps.c | 2 -- 2 files changed, 8 deletions(-) ====== cell-oprofile.diff ====== Subject: oprofile support for Cell From: David Erb This provides oprofile functions for Cell Signed-off-by: Arnd Bergmann --- diffstat: arch/powerpc/kernel/cputable.c | 3 arch/powerpc/oprofile/op_model_cell.c | 463 ++++++++++++++ include/asm-powerpc/cputable.h | 1 3 files changed, 467 insertions(+) ====== cell-oprofile-disable.diff ====== Subject: cell: temporarily disable oprofile events From: David Erb When the firmware changed this week, it caused a fatal error that needs to be investigated. Temporarily disable events completely. Signed-off-by: Arnd Bergmann --- This patch looks really fishy. We need to investigate what exactly happens before the release! Arnd <>< --- diffstat: op_model_cell.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) ====== cell-oprofile-2.6.16.diff ====== Subject: oprofile support for Cell From: David Erb This provides oprofile functions for Cell (linux-2.6.16) TODO: fix code to allow Cell and other PowerPC to be built together Signed-off-by: Arnd Bergmann --- diffstat: arch/powerpc/kernel/pmc.c | 14 ++++++++++++++ arch/powerpc/oprofile/Makefile | 1 + arch/powerpc/oprofile/common.c | 8 ++++++++ include/asm-powerpc/oprofile_impl.h | 1 + 4 files changed, 24 insertions(+) ====== spufs-fix-remove-stop_code-member-of-struct-spu.diff ====== Subject: spufs: remove stop_code from struct spu From: Masato Noguchi This patch remove 'stop_code' -- discarded member of struct spu. It is written at initialize and interrupt, but never read in current implementation. Signed-off-by: Masato Noguchi Signed-off-by: Arnd Bergmann --- arch/powerpc/platforms/cell/spu_base.c | 2 -- arch/powerpc/platforms/cell/spufs/switch.c | 1 - include/asm-powerpc/spu.h | 1 - 3 files changed, 4 deletions(-) --- diffstat: arch/powerpc/platforms/cell/spu_base.c | 2 -- arch/powerpc/platforms/cell/spufs/switch.c | 1 - include/asm-powerpc/spu.h | 1 - 3 files changed, 4 deletions(-) ====== spufs-fix-clean-_dump.h.diff ====== Subject: spufs: fix Makefile for "make clean" From: Masato Noguchi added spu_{save,restore}_dump.h to target of 'make clean' Signed-off-by: Masato Noguchi Signed-off-by: Arnd Bergmann --- arch/powerpc/platforms/cell/spufs/Makefile | 1 + 1 files changed, 1 insertion(+) --- diffstat: Makefile | 1 + 1 file changed, 1 insertion(+) ====== spufs-fix-class2-clear-stat-before-wakeup.diff ====== Subject: spufs: clear class2 interrupt status before wakeup From: Masato Noguchi SPU interrupt status must be cleared before handle it. Otherwise, kernel may drop some interrupt packet. Currently, class2 interrupt treated like: 1) call callback to wake up waiting process 2) mask raised mailbox interrupt 3) clear interrupt status I changed like: 1) mask raised mailbox interrupt 2) clear interrupt status 3) call callback to wake up waiting process Clearing status before masking will make spurious interrupt. Thus, it is necessary to hold by steps I described above, I think. Signed-off-by: Masato Noguchi Signed-off-by: Arnd Bergmann --- diffstat: spu_base.c | 78 +++++++++-------------------------------- 1 file changed, 19 insertions(+), 59 deletions(-) ====== fix-null-pgsz-get-pointer.diff ====== Subject: cell: fix null smm_pgsz_get pointer From: Jeremy Kerr When booting the current cell tree, I get a page fault on 0x0, due to spu_priv1_ops->smm_pgsz_set being NULL. This sets adds the omitted assignment. Booted on cell (DD2). Signed-off-by: Jeremy Kerr Signed-off-by: Arnd Bergmann arch/powerpc/platforms/cell/spu_priv1_mmio.c | 1 + 1 file changed, 1 insertion(+) --- diffstat: spu_priv1_mmio.c | 1 + 1 file changed, 1 insertion(+) ====== spufs-check-flags.diff ====== Subject: spufs: fail spu_create with invalid flags At this time, all flags are invalid. Since we are planning to actually add valid flags in the future, we better check if any were passed by the user. Signed-off-by: Arnd Bergmann --- diffstat: inode.c | 4 ++++ 1 file changed, 4 insertions(+) ====== spufs-fix-context-switch-during-fault.diff ====== Subject: spufs: fix context switch during page fault From: HyeonSeung Jang For better explanation, I break down the page fault handling into steps: 1) There is a page fault caused by DMA operation initiated by SPU and DMA is suspended. 2) The interrupt handler 'spu_irq_class_1()/__spu_trap_data_map()' is called and it just wakes up the sleeping spe-manager thread. 3) by PPE scheduler, the corresponding bottom half, spu_irq_class_1_bottom() is called in process context and DMA is restarted. There can be a quite large time gap between 2) and 3) and I found the following problem: Between 2) and 3) If the context becomes unbound, 3) is not executed because when the spe-manager thread is awaken, the context is already saved. (This situation can happen, for example, when a high priority spe thread newly started in that time gap) But the actual problem is that the corresponding SPU context does not work even if it is bound again to a SPU. Besides I can see the following warning in mambo simulator when the context becomes unbound(in save_mfc_cmd()), i.e. when unbind() is called for the context after step 2) before 3) : 'WARNING: 61392752237: SPE2: MFC_CMD_QUEUE channel count of 15 is inconsistent with number of available DMA queue entries of 16' After I go through available documents, I found that the problem is because the suspended DMA is not restarted when it is bound again. Signed-off-by: Arnd Bergmann --- diffstat: switch.c | 9 +++++++++ 1 file changed, 9 insertions(+) ====== spufs-dma-status.diff ====== Subject: spufs: fix MFC command queue purge From: Benjamin Herrenschmidt In the context save/restore code, the SPU MFC command queue purge code has a bug: static inline void wait_purge_complete(struct spu_state *csa, struct spu *spu) { struct spu_priv2 __iomem *priv2 = spu->priv2; /* Save, Step 28: * Poll MFC_CNTL[Ps] until value '11' is * read * (purge complete). */ POLL_WHILE_FALSE(in_be64(&priv2->mfc_control_RW) & MFC_CNTL_PURGE_DMA_COMPLETE); } This will exit as soon as _one_ of the 2 bits that compose MFC_CNTL_PURGE_DMA_COMPLETE is set, and one of them happens to be "purge in progress"... which means that we'll happily continue restoring the MFC while it's being purged at the same time. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Arnd Bergmann --- diffstat: switch.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) ====== spufs-map-guarded.diff ====== Subject: spufs: map mmio space as guarded into user space From: Benjamin Herrenschmidt This fixes a bug where we don't properly map SPE MMIO space as guarded, causing various test cases to fail, probably due to write combining and other niceties caused by the lack of the G bit. Signed-off-by: Benjamin Herrenschmidt --- diffstat: file.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) ====== spufs-dma-events-2.diff ====== Subject: implement error event delivery to user space This tries to fix spufs so we have an interface closer to what is specified in the man page for events returned in the third argument of spu_run. Fortunately, libspe has never been using the returned contents of that register, as they were the same as the return code of spu_run (duh!). This returns what we need from libspe, but only when a flag was set on spu_create. Now that flag was previously not documented, so we're actually extending the semantics here. Signed-off-by: Arnd Bergmann --- diffstat: run.c | 28 +++++++++++++++------------- syscalls.c | 7 +++++-- 2 files changed, 20 insertions(+), 15 deletions(-) ====== spufs-correct-dma-exceptions.diff ====== Subject: spufs: fix class0 interrupt assignment The class zero interrupt handling for spus was confusing alignment and error interrupts, so swap them. Signed-off-by: Arnd Bergmann --- diffstat: spu_base.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)