====== powerpc-of-serial-2.diff ====== Subject: powerpc: experimental of serial port driver From: Arnd Bergmann This can be used for serial ports that are connected to an OF platform bus but are not autodetected by the lecacy serial support. Not for inclusion at this point. Signed-off-by: Arnd Bergmann --- diffstat: Kconfig | 10 ++ Makefile | 1 of_serial.c | 141 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 152 insertions(+) ====== powerpc-of-serial-update.diff ====== Subject: of_serial: fix custom divisor setting From: Jens Osterkamp Small fix to Arnds of_serial driver which computes the custom divisor from the device tree values. Signed-off-by: Jens Osterkamp Signed-off-by: Arnd Bergmann --- diffstat: of_serial.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) ====== ipmi_si-check-devicetree-3.diff ====== Subject: ipmi: add suport for powerpc of_platform_driver From: Christian Krafft This patch adds support for of_platform_driver to the ipmi_si module. When loading the module, the driver will be registered to of_platform. The driver will be probed for all devices with the type ipmi. It's supporting devices with compatible settings ipmi-kcs, ipmi-smic and ipmi-bt. Only ipmi-kcs could be tested. Signed-off-by: Christian Krafft Acked-by: Heiko J Schick Signed-off-by: Corey Minyard Signed-off-by: Arnd Bergmann --- diffstat: ipmi_si_intf.c | 108 +++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) ====== cbe_thermal-add-reg_to_temp.diff ====== Subject: cbe_thermal: clean up computation of temperature From: Christian Krafft This patch introduces a little function for transforming register values into temperature. Signed-off-by: Christian Krafft Signed-off-by: Arnd Bergmann --- diffstat: cbe_thermal.c | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) ====== cbe_thermal-throttling-attributes.diff ====== Subject: cbe_thermal: add throttling attributes to cpu and spu nodes From: Christian Krafft This patch adds some attributes the cpu and spu nodes: /sys/devices/system/[c|s]pu/[c|s]pu*/thermal/throttle_begin /sys/devices/system/[c|s]pu/[c|s]pu*/thermal/throttle_end /sys/devices/system/[c|s]pu/[c|s]pu*/thermal/throttle_full_stop Signed-off-by: Christian Krafft Signed-off-by: Arnd Bergmann --- diffstat: cbe_thermal.c | 155 +++++++++++++++++++++++++++++++++++++- 1 file changed, 154 insertions(+), 1 deletion(-) ====== pmi-initial-checkin.diff ====== Subject: powerpc: add PMI driver for cell blade From: Christian Krafft This patch adds driver code for the PMI device found in future IBM products. PMI stands for "Platform Management Interrupt" and is a way to communicate with the BMC. It provides bidirectional communication with a low latency. Signed-off-by: Christian Krafft Signed-off-by: Arnd Bergmann --- --- diffstat: arch/powerpc/Kconfig | 9 arch/powerpc/sysdev/Makefile | 1 arch/powerpc/sysdev/pmi.c | 275 +++++++++++++++++++++++ include/asm-powerpc/pmi.h | 63 +++++ 4 files changed, 348 insertions(+) ====== cbe_cpufreq-use-pmi.diff ====== Subject: cell: use pmi in cpufreq driver From: Christian Krafft The new PMI driver was added in order to support cpufreq on blades that require the frequency to be controlled by the service processor, so use it on those. Signed-off-by: Arnd Bergmann --- --- diffstat: configs/cell_defconfig | 1 platforms/cell/cbe_cpufreq.c | 122 ++++++++++++++++++++++- 2 files changed, 120 insertions(+), 3 deletions(-) ====== spidernet-linas.diff ====== Subject: spidernet: backport from from 2.6.21 From: Jens Osterkamp Signed-off-by: Arnd Bergmann --- diffstat: spider_net.c | 311 ++++++++++++++----------------- spider_net.h | 20 - spider_net_ethtool.c | 4 3 files changed, 158 insertions(+), 177 deletions(-) ====== spidernet-sungem-update-4.diff ====== Subject: spidernet: add improved phy support From: Jens Osterkamp This patch adds improved version of enable_fiber for both the 5421 and the 5461 phy. It is now possible to specify with these wether you want autonegotiation or not. This is needed for bladecenter switches where some expect autonegotiation and some dont seem to like this at all. Depending on this flag it sets phy->autoneg accordingly for the fiber mode. More importantly it implements proper read_link and poll_link functions for both phys which can handle both copper and fiber mode by determining the medium first and then branching to the required functions. For fiber they all work fine, for copper they are not tested but return the result of the genmii_* function anyway which is supposed to work. A "medium" variable in the phy struct is introduced to save the medium with which the phy is currently used. The patch moves the genmii_* functions around to avoid foreward declarations. Signed-off-by: Jens Osterkamp Signed-off-by: Arnd Bergmann --- diffstat: sungem_phy.c | 389 +++++++++++++++++++++++++-------------- sungem_phy.h | 10 - 2 files changed, 263 insertions(+), 136 deletions(-) ====== spidernet-autoneg-support-for-celleb.diff ====== Subject: spidernet: autoneg support for Celleb From: Kou Ishizaki Add auto negotiation support for Celleb. Signed-off-by: Kou Ishizaki Signed-off-by: Arnd Bergmann --- --- diffstat: spider_net.c | 175 +++++++++++++++++++++++++++++++++++---- spider_net.h | 10 ++ 2 files changed, 169 insertions(+), 16 deletions(-) ====== spidernet-load-firmware-when-open.diff ====== Subject: spidernet: load firmware when open From: Kou Ishizaki This patch moves calling init_firmware() from spider_net_probe() to spider_net_open() so as to use the driver by built-in. Signed-off-by: Kou Ishizaki Signed-off-by: Arnd Bergmann --- --- diffstat: spider_net.c | 247 +++++++++++++++++++-------------------- 1 file changed, 123 insertions(+), 124 deletions(-) ====== spidernet-add-support-for-celleb.diff ====== Subject: spidernet: spidernet: add support for Celleb From: Kou Ishizaki This patch adds or changes some HW specific settings for spider_net on Celleb. Signed-off-by: Kou Ishizaki Signed-off-by: Arnd Bergmann --- --- diffstat: Kconfig | 2 +- spider_net.c | 8 +++++++- spider_net.h | 6 ++++-- 3 files changed, 12 insertions(+), 4 deletions(-) ====== spidernet-remove-txram-full-logging.diff ====== Subject: spidernet: remove txram full logging From: Kou Ishizaki This patches removes logging for SPIDER_NET_GTMFLLINT interrupts. Since the interrupts are not irregular, and they happen frequently when using 100Mbps network switches. Signed-off-by: Kou Ishizaki Signed-off-by: Arnd Bergmann --- --- diffstat: spider_net.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) ====== spidernet-autoneg-medium.diff ====== Subject: spidernet: move medium variable into card struct From: Jens Osterkamp This patch implements a comment by BenH to move the medium variable into the spidernet card structure. Besides that it renames the GMII_ variables to BCM54XX specific ones. Signed-off-by: Jens Osterkamp Signed-off-by: Arnd Bergmann --- --- diffstat: spider_net.c | 14 +++++++------- spider_net.h | 2 ++ 2 files changed, 9 insertions(+), 7 deletions(-) ====== cell-defconfig-2.6.20.diff ====== Subject: update cell_defconfig From: Jens Osterkamp Signed-off-by: Arnd Bergmann --- --- diffstat: cell_defconfig | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) ====== axon-ram-2.diff ====== Subject: cell: driver for DDR2 memory on AXON From: Maxim Shchetynin Signed-off-by: Arnd Bergmann --- diffstat: Kconfig | 7 sysdev/Makefile | 1 sysdev/axonram.c | 498 +++++++++++++++++++++++++++++++++++ 3 files changed, 506 insertions(+) ====== axon-ram-block-config-fix.diff ====== Subject: axonram bugfix From: Jens Osterkamp unlink_gendisk is already called in del_gendisk, so we dont need it here. Signed-off-by: Jens Osterkamp Signed-off-by: Arnd Bergmann --- --- diffstat: axonram.c | 1 - 1 file changed, 1 deletion(-) ====== systemsim-2.6.20-rc5.diff ====== Subject: cell: add support for the IBM full system simulator From: Jens Osterkamp taken from systemsim.git, from lots of authors Signed-off-by: Arnd Bergmann --- diffstat: Documentation/systemsim/maple.tcl | 1145 +++++++++++ Documentation/systemsim/systemsim.txt | 92 arch/powerpc/Kconfig | 28 arch/powerpc/configs/cbesim_defconfig | 868 ++++++++ arch/powerpc/configs/systemsim_defconfig | 1127 ++++++++++ arch/powerpc/kernel/Makefile | 1 arch/powerpc/kernel/idle_systemsim.c | 35 arch/powerpc/kernel/setup_64.c | 20 arch/powerpc/kernel/udbg.c | 3 arch/powerpc/platforms/cell/setup.c | 3 arch/powerpc/platforms/pseries/setup.c | 10 drivers/block/Kconfig | 7 drivers/block/Makefile | 2 drivers/block/systemsim_bd.c | 319 +++ drivers/char/Kconfig | 32 drivers/char/Makefile | 1 drivers/char/hvc_fss.c | 134 + drivers/net/Kconfig | 8 drivers/net/Makefile | 1 drivers/net/systemsim_net.c | 393 +++ include/asm-powerpc/machdep.h | 1 include/asm-powerpc/systemsim.h | 132 + include/asm-powerpc/udbg.h | 1 23 files changed, 4343 insertions(+), 20 deletions(-) ====== systemsim-defconfig-2.6.20.diff ====== Subject: cell: update defconfig for systemsim From: Jens Osterkamp Signed-off-by: Arnd Bergmann --- --- diffstat: cell_defconfig | 7 +++++++ 1 file changed, 7 insertions(+) ====== spufs-fixme.diff ====== Subject: spufs: add a FIXME From: Arnd Bergmann 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(+) ====== mm-fix-alloc_bootmem-on-nodes-without-mem.diff ====== Subject: mm: enables booting a NUMA system where some nodes have no memory From: Christian Krafft When booting a NUMA system with nodes that have no memory (eg by limiting memory), bootmem_alloc_core tried to find pages in an uninitialized bootmem_map. This caused a null pointer access. This fix adds a check, so that NULL is returned. That will enable the caller (bootmem_alloc_nopanic) to alloc memory on other without a panic. Signed-off-by: Christian Krafft Signed-off-by: Arnd Bergmann --- diffstat: bootmem.c | 4 ++++ 1 file changed, 4 insertions(+) ====== mm-fix-alloc_bootmem-call-after-bootmem-freed-2.diff ====== Subject: mm: fix call to alloc_bootmem after bootmem has been freed From: Christian Krafft In some cases it might happen, that alloc_bootmem is beeing called after bootmem pages have been freed. This is, because the condition SYSTEM_BOOTING is still true after bootmem has been freed. Signed-off-by: Christian Krafft Signed-off-by: Arnd Bergmann --- diffstat: page_alloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) ====== early_pfn_in_nid-workaround-2.diff ====== Subject: early_pfn_in_nid() called when not early From: Arnd Bergmann After a lot of debugging in spufs, I found that a crash that we encountered on Cell actually was caused by a change in the memory management. The patch that caused it is archived in http://lkml.org/lkml/2006/11/1/43, and this one has been discussed back and forth, but I fear that the current version may be broken for all setups that do memory hotplug with sparsemen and NUMA, at least on powerpc. What happens exactly is that the spufs code tries to register the memory area owned by the SPU as hotplug memory in order to get page structs (we probably shouldn't do it that way, but that's a separate discussion). memmap_init_zone now calls early_pfn_valid() and early_pfn_in_nid() in order to determine if the page struct should be initialized. This is wrong for two reasons: - early_pfn_in_nid checks the early_node_map variable to determine to which node the hot plugged memory belongs. However, the new memory never was part of the early_node_map to start with, so it incorrectly returns node zero, and then fails to initialize the page struct if we were trying to add it to a nonzero node. This is probably not a problem for pseries, but it is for cell. - both early_pfn_{in,to}_nid and early_node_map are in the __init section and may already have been freed at the time we are calling memmap_init_zone(). The patch below is not a suggested fix that I want to get into mainline (checking slab_is_available is the wrong here), but it is a quick fix that you should apply if you want to run a recent (post-2.6.18) kernel on the IBM QS20 blade. I'm sorry for not having reported this earlier, but we were always trying to find the problem in my own code... Signed-off-by: Arnd Bergmann --- diffstat: page_alloc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) ====== spufs-remove-SPU_CONTEXT_PREEMPT.diff ====== Subject: spufs: remove SPU_CONTEXT_PREEMPT From: Christoph Hellwig Remove the SPU_CONTEXT_PREEMPT define. It's unused and won't be used in this form after the scheduler rework. Signed-off-by: Christoph Hellwig Signed-off-by: Arnd Bergmann --- --- diffstat: spufs.h | 3 --- 1 file changed, 3 deletions(-) ====== spufs-run.c-remove-emptry-last-line.diff ====== Subject: spufs: remove empty last line in run.c From: Christoph Hellwig Remove the empty last line in arch/powerpc/platforms/cell/spufs/run.c. Signed-off-by: Christoph Hellwig Signed-off-by: Arnd Bergmann --- --- diffstat: run.c | 1 - 1 file changed, 1 deletion(-) ====== spufs-remove-superflous-SPU_STATE_SAVED-assignments.diff ====== Subject: spufs: remove superfluous SPU_STATE_SAVED assignments From: Christoph Hellwig unbind_context already sets the context state to SPU_STATE_SAVED, thus the spu_deactivate callers don't need to do it again. Signed-off-by: Christoph Hellwig Signed-off-by: Arnd Bergmann --- --- diffstat: context.c | 4 +--- sched.c | 1 - 2 files changed, 1 insertion(+), 4 deletions(-) ====== spufs-bind-context-set-SPU_STATE_RUNNABLE.diff ====== Subject: spufs: bind_context sets SPU_STATE_RUNNABLE From: Christoph Hellwig Only bind_context/unbind_context change the spu context state. Thus we can move all assignents of SPU_STATE_RUNNABLE into bind_context, which parallels the unbind side aswell. Signed-off-by: Christoph Hellwig Signed-off-by: Arnd Bergmann --- --- diffstat: context.c | 2 -- sched.c | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) ====== spufs-sched.c-cleanups.diff ====== Subject: spufs: sched.c cleanups From: Christoph Hellwig Various cleanups to sched.c that don't change the global control flow: - add kerneldoc comments to various functions - add spu_ prefixes to various functions - add/remove context from the runqueue in bind/unbind_context as it's part of the logical operation - add a call to put_active_spu to spu_unbind_contex as it's logically part of the unbind operation Signed-off-by: Christoph Hellwig Signed-off-by: Arnd Bergmann --- diffstat: sched.c | 98 +++++++++++++++++++++++++++----------------- 1 file changed, 61 insertions(+), 37 deletions(-) ====== spufs-state-mutex-simple.diff ====== Subject: spufs: simplify state_mutex From: Christoph Hellwig The r/w semaphore to lock the spus was overkill and can be replaced with a mutex to make it faster, simpler and easier to debug. It also helps to allow making most spufs interruptible in future patches. Signed-off-by: Christoph Hellwig Signed-off-by: Arnd Bergmann --- diffstat: context.c | 33 ++++++++++----------------------- sched.c | 8 ++++---- spufs.h | 6 +++--- 3 files changed, 17 insertions(+), 30 deletions(-) ====== spufs-state-mutex-cleanup.diff ====== Subject: spufs: state_mutex cleanup From: Christoph Hellwig Various cleanups in code surrounding the state semaphore: - inline spu_acquire/spu_release - cleanup spu_acquire_* and add kerneldoc comments to these functions - remove spu_release_exclusive and replace it with spu_release Signed-off-by: Christoph Hellwig Signed-off-by: Arnd Bergmann --- diffstat: context.c | 97 ++++++++++++++++++++++-------------------- run.c | 2 spufs.h | 18 ++++--- 3 files changed, 64 insertions(+), 53 deletions(-) ====== spufs-prio-in-ctx.diff ====== Subject: spufs: move prio to spu_context From: Christoph Hellwig It doesn't make any sense to have a priority field in the physical spu structure. Move it into the spu context instead. Signed-off-by: Christoph Hellwig Signed-off-by: Arnd Bergmann --- --- diffstat: arch/powerpc/platforms/cell/spufs/context.c | 4 ++-- arch/powerpc/platforms/cell/spufs/sched.c | 6 +----- arch/powerpc/platforms/cell/spufs/spufs.h | 3 +++ arch/powerpc/xmon/xmon.c | 1 - include/asm-powerpc/spu.h | 1 - 5 files changed, 6 insertions(+), 9 deletions(-) ====== spufs-runqueue-simplification.diff ====== Subject: spufs: runqueue simplification From: Christoph Hellwig This is the biggest patch in this series, and it reworks the guts of the spu scheduler runqueue mechanism: - instead of embedding a waitqueue in the runqueue there is now a simple doubly-linked list, the actual wakeups happen by reusing the stop_wq in the spu context (maybe we should rename it one day) - spu_free and spu_prio_wakeup are merged into a single spu_reschedule function - various functionality is split out into small helpers, and kerneldoc comments are added in various places to document what's going on. - spu_activate is rewritten into a tight loop by removing test for various impossible conditions and using the infrastructure in this patch. Signed-off-by: Christoph Hellwig Signed-off-by: Arnd Bergmann --- --- diffstat: sched.c | 159 +++++++++++++++++++++++++------------------- spufs.h | 1 2 files changed, 93 insertions(+), 67 deletions(-) ====== spufs-optimize-spu_run.diff ====== Subject: spufs: optimize spu_run From: Christoph Hellwig There is no need to directly wake up contexts in spu_activate when called from spu_run, so add a flag to surpress this wakeup. Signed-off-by: Christoph Hellwig Signed-off-by: Arnd Bergmann --- --- diffstat: context.c | 4 ++-- file.c | 4 ++-- run.c | 4 ++-- sched.c | 10 ++++++---- spufs.h | 13 +++++++++++-- 5 files changed, 23 insertions(+), 12 deletions(-) ====== add-vm_insert_pfn.diff ====== Subject: add vm_insert_pfn() From: Benjamin Herrenschmidt From: Nick Piggin Add a vm_insert_pfn helper, so that ->fault handlers can have nopfn functionality by installing their own pte and returning NULL. Signed-off-by: Nick Piggin Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Arnd Bergmann --- include/linux/mm.h | 1 + mm/memory.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) --- diffstat: include/linux/mm.h | 1 mm/memory.c | 44 +++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) ====== add-nopfn_refault-result-from-vm_ops-nopfn.diff ====== Subject: Add NOPFN_REFAULT result from vm_ops->nopfn() From: Benjamin Herrenschmidt Add a NOPFN_REFAULT return code for vm_ops->nopfn() equivalent to NOPAGE_REFAULT for vmops->nopage() indicating that the handler requests a re-execution of the faulting instruction Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Arnd Bergmann --- include/linux/mm.h | 1 + mm/memory.c | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) --- diffstat: include/linux/mm.h | 1 + mm/memory.c | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) ====== spufs-remove-need-for-struct-page-for-spes.diff ====== Subject: spufs: remove need for struct page for SPEs From: Benjamin Herrenschmidt This patch removes the need for struct page for SPE local store and registers from spufs. It also makes the locking much more obvious and no longer relying on the truncate logic black magic for protecting against races between unmap_mapping_range() and new pages faulted in. It does so by switching to a nopfn() handler and using the new vm_insert_pfn() to setup the PTEs itself while holding a lock on the SPE. The nice thing is that this patch actually removes a lot more code than it adds :-) Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Arnd Bergmann --- Kconfig | 2 --- diffstat: Kconfig | 2 platforms/cell/spu_priv1_mmio.c | 65 ---------- platforms/cell/spufs/file.c | 121 +++++++++----------- 3 files changed, 60 insertions(+), 128 deletions(-) ====== spufs-fix-bitrot-of-the-spu-mmap-facility.diff ====== Subject: spufs: Fix bitrot of the SPU mmap facility From: Benjamin Herrenschmidt It looks like we've had some serious bitrot there mostly due to tracking of address_space's of mmap'ed files getting out of sync with the actual mmap code. The mfc, mss and psmap were not tracked properly and thus not invalidated on context switches (oops !) Note that I kept the various file->f_mapping = inode->i_mapping; assignments that were done in the other open() routines though it's unclear to me wether those are really necessary as I think the generic open code already does that but then, I'm not that familiar with filesystem foo. Another improvement we might want to do is assign those to the varioux ctx-> fields at mmap time instead of file open/close time. I also added some smp_wmb's after assigning the ctx-> fields to make sure they are visible to other CPUs. I don't think this is really necessary as I suspect locking in the fs layer will make that happen anyway but better safe than sorry. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Arnd Bergmann --- arch/powerpc/platforms/cell/spufs/context.c | 12 ++++++++---- arch/powerpc/platforms/cell/spufs/file.c | 15 +++++++++++++++ arch/powerpc/platforms/cell/spufs/spufs.h | 2 ++ 3 files changed, 25 insertions(+), 4 deletions(-) --- diffstat: context.c | 12 ++++++++---- file.c | 15 +++++++++++++++ spufs.h | 2 ++ 3 files changed, 25 insertions(+), 4 deletions(-) ====== spu-sched-simplity-spu_remove_from_active_list.diff ====== Subject: spu sched: simplity spu_remove_from_active_list From: Christoph Hellwig If we call spu_remove_from_active_list that spu is always guaranteed to be on the active list and in runnable state, so we can simply do a list_del to remove it and unconditionally take the was_active codepath. Signed-off-by: Christoph Hellwig Signed-off-by: Arnd Bergmann --- --- diffstat: sched.c | 44 +++++++++++++++----------------------------- 1 file changed, 15 insertions(+), 29 deletions(-) ====== spu-sched-update-some-comments.diff ====== Subject: spu sched: update some comments From: Christoph Hellwig Give spu_yield a kerneldoc comment and remove the old comment documenting spu_activate, spu_deactive and spu_yield as all of them now have descriptive kerneldoc comments of their own. Signed-off-by: Christoph Hellwig Signed-off-by: Arnd Bergmann --- --- diffstat: sched.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) ====== spu-sched-forced-preemption-at-execution.diff ====== Subject: spu sched: forced preemption at execution From: Christoph Hellwig If we start a spu context with realtime priority we want it to run immediately and not wait until some other lower priority thread has finished. Try to find a suitable victim and use it's spu in this case. Signed-off-by: Christoph Hellwig Signed-off-by: Arnd Bergmann --- --- diffstat: context.c | 1 sched.c | 74 ++++++++++++++++++++++++++++++++++++++++++ spufs.h | 1 3 files changed, 76 insertions(+) ====== spu-sched-use-declare_bitmap.diff ====== Subject: spu sched: use DECLARE_BITMAP From: Christoph Hellwig use DECLARE_BITMAP in the spu scheduler instead of reimplementing it. Signed-off-by: Christoph Hellwig Signed-off-by: Arnd Bergmann --- --- diffstat: sched.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) ====== spu-sched-static-timeslicing-for-sched_rr-contexts.diff ====== Subject: spu sched: static timeslicing for SCHED_RR contexts From: Christoph Hellwig For SCHED_RR tasks we can do some really trivial timeslicing. Basically we fire up a time for every scheduler tick that searches for a higher or same priority thread that is on the runqueue and if there is one context switches to it. Because we can't lock spus from timer context we actually run this from a delayed runqueue instead of a timer. A nice optimization would be to skip the actual priority bitmap search when there are less contexts than physical spus available. To implement this I need a so far unpublished patch from Andre, and it will be added after we have that patch in. Note that right now we only do the time slicing for SCHED_RR tasks. The code would work for SCHED_OTHER tasks aswell, but their prio value is defered from the one the PPU thread has at time of spu_run, and using this for spu scheduling decisions would make the code very unfair. SCHED_OTHER support will be enabled once we the spu scheduler knows how to calculcate cpu_context.prio (very soon) Signed-off-by: Christoph Hellwig Signed-off-by: Arnd Bergmann --- --- diffstat: context.c | 2 + run.c | 9 ++++++-- sched.c | 43 +++++++++++++++++++++++++++++++++++++++++- spufs.h | 5 ++++ 4 files changed, 56 insertions(+), 3 deletions(-) ====== spufs-avoid-accessing-kernel-memory-through-mmapped-mem-node.diff ====== Subject: spufs: avoid accessing kernel memory through mmapped /mem node From: Masato Noguchi I found an exploit in current kernel. Currently, there is no range check about mmapping "/mem" node in spufs. Thus, an application can access privilege memory region. In case this kernel already worked on a public server, I send this information only here. If there are such servers in somewhere, please replace it, ASAP. Signed-off-by: Masato Noguchi Signed-off-by: Arnd Bergmann --- file.c | 4 ++++ 1 files changed, 4 insertions(+) [NOTICE] This is a security patch. Please handle it carefully. --- --- diffstat: file.c | 3 +++ 1 file changed, 3 insertions(+) ====== cell-be_info-1.diff ====== Subject: cell: add per BE structure with info about its SPUs From: Andre Detsch Addition of a spufs-global "be_info" array. Each entry contains information about one BE node, namelly: * list of available spus (both free and busy spus are in this list); * list of free spus (substituting the static spu_list from spu_base.c) * number of spus; * number of isolated spus. SPE affinity implementation actually requires only access to one spu per BE node (since it implements its own pointer to walk through the other spus of the ring) and the number of non-isolated spus (n_spus - isolated_spus) However having this more general structure can be useful for other functionalities, concentrating per-be statistics / data. Decrementation of isolated SPUs number is still missing. Signed-off-by: Andre Detsch Signed-off-by: Arnd Bergmann --- --- diffstat: arch/powerpc/platforms/cell/spu_base.c | 26 ++++++---- arch/powerpc/platforms/cell/spufs/context.c | 2 include/asm-powerpc/spu.h | 10 +++ 3 files changed, 29 insertions(+), 9 deletions(-) ====== cell-spu_indexing-1.diff ====== Subject: cell: add vicinity information on spus From: Andre Detsch This patch adds affinity data to each spu instance. A doubly linked list is created, meant to connect the spus in the physical order they are placed in the BE. SPUs near to memory should be marked as having memory affinity. Adjustments of the fields acording to FW properties is done in separate patches, one for CPBW, one for Malta (patch for Malta under testing). Signed-off-by: Andre Detsch Signed-off-by: Arnd Bergmann --- --- diffstat: arch/powerpc/platforms/cell/spu_base.c | 3 +++ include/asm-powerpc/spu.h | 4 ++++ 2 files changed, 7 insertions(+) ====== cell-spu_indexing_CPBW-1.diff ====== Subject: cell: add hardcoded spu vicinity information for CBPW From: Andre Detsch This patch allows the use of spu affinity on CPBW platform, whose original FW does not provide affinity information. This is done through two hardcoded arrays, and by reading the reg property from each spu. Signed-off-by: Andre Detsch Signed-off-by: Arnd Bergmann --- --- diffstat: spu_base.c | 47 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) ====== spufs-affinity_create-1.diff ====== Subject: spufs: extension of spu_create to support affinity definition From: Andre Detsch This patch adds support for additional flags at spu_create, which relate to the establishment of affinity between contexts and contexts to memory. A fourth, optional, parameter is supported. This parameter represent a affinity neighbor of the context being created, and is used when defining SPU-SPU affinity. Affinity is represented as a doubly linked list of spu_contexts. Signed-off-by: Andre Detsch Signed-off-by: Arnd Bergmann --- --- diffstat: arch/powerpc/platforms/cell/spu_syscalls.c | 17 + arch/powerpc/platforms/cell/spufs/context.c | 1 arch/powerpc/platforms/cell/spufs/gang.c | 4 arch/powerpc/platforms/cell/spufs/inode.c | 123 +++++++++- arch/powerpc/platforms/cell/spufs/spufs.h | 19 + arch/powerpc/platforms/cell/spufs/syscalls.c | 35 ++ include/asm-powerpc/spu.h | 8 include/linux/syscalls.h | 2 8 files changed, 193 insertions(+), 16 deletions(-) ====== spufs-affinity_placement-1.diff ====== Subject: cell: add placement computation for scheduling of affinity contexts From: Andre Detsch This patch provides the spu affinity placement logic for the spufs scheduler. Each time a gang is going to be scheduled, the placement of a reference context is defined. The placement of all other contexts with affinity from the gang is defined based on this reference context location and on a precomputed displacement offset. Signed-off-by: Andre Detsch Signed-off-by: Arnd Bergmann --- --- diffstat: gang.c | 5 + sched.c | 129 ++++++++++++++++++++++++++++++++++++++++++++ spufs.h | 6 ++ 3 files changed, 139 insertions(+), 1 deletion(-) ====== spufs-affinity_schedulling-1.diff ====== Subject: spufs: integartion of SPE affinity with the scheduller From: Andre Detsch This patch makes the scheduller honor affinity information for each context being scheduled. If the context has no affinity information, behaviour is unchanged. If there are affinity information, context is schedulled to be run on the exact spu recommended by the affinity placement algorithm. Signed-off-by: Andre Detsch Signed-off-by: Arnd Bergmann --- --- diffstat: spu_base.c | 19 +++++++++++++++++++ spufs/sched.c | 4 ++++ 2 files changed, 23 insertions(+) ====== cell-ppu-oprofile-cleanup-patch-updated-patch.diff ====== Subject: CELL PPU Oprofile cleanup patch (updated patch) From: Carl Love This is a clean up patch that includes the following changes: -Some comments were added to clarify the code based on feedback from the community. -The write_pm_cntrl() and set_count_mode() were passed a structure element from a global variable. The argument was removed so the functions now just operate on the global directly. -The set_pm_event() function call in the cell_virtual_cntr() routine was moved to a for-loop before the for_each_cpu loop Signed-off-by: Carl Love Signed-off-by: Maynard Johnson Signed-off-by: Arnd Bergmann --- diffstat: arch/powerpc/oprofile/op_model_cell.c | 104 ++++++++------ arch/powerpc/platforms/cell/pmu.c | 14 - include/asm-powerpc/cell-pmu.h | 15 -- 3 files changed, 73 insertions(+), 60 deletions(-) ====== pm_rtas_activat_signals-routine-cleanup.diff ====== Subject: pm_rtas_activat_signals routine cleanup From: Maynard Johnson The code was setting up the debug bus for group 21 when profiling on the event PPU CYCLES. The debug bus is not actually used by the hardware performance counters when counting PPU CYCLES. Setting up the debug bus for PPU CYCLES causes signal routing conflicts on the debug bus when profiling PPU cycles and another PPU event. This patch fixes the code to only setup the debug bus to route the performance signals for the non PPU CYCLE events. Signed-off-by: Maynard Johnson Signed-off-by: Carl Love Signed-off-by: Arnd Bergmann --- diffstat: op_model_cell.c | 51 ++++++++++++++++++++++++------------ 1 file changed, 34 insertions(+), 17 deletions(-) ====== enable-SPU-switch-notification-to-detect-currently-active-SPU-tasks.diff ====== Subject: Enable SPU switch notification to detect currently active SPU tasks. From: Maynard Johnson This patch adds to the capability of spu_switch_event_register so that the caller is also notified of currently active SPU tasks. It also exports spu_switch_event_register and spu_switch_event_unregister. Signed-off-by: Maynard Johnson Signed-off-by: Arnd Bergmann --- diffstat: arch/powerpc/platforms/cell/spufs/run.c | 14 ++++ arch/powerpc/platforms/cell/spufs/sched.c | 29 +++++++++- arch/powerpc/platforms/cell/spufs/spufs.h | 1 include/asm-powerpc/spu.h | 1 4 files changed, 41 insertions(+), 4 deletions(-) ====== re-cell-oprofile-spu-profiling-updated-patch.diff ====== Subject: Add support to OProfile for profiling Cell BE SPUs From: Maynard Johnson This patch updates the existing arch/powerpc/oprofile/op_model_cell.c to add in the SPU profiling capabilities. In addition, a 'cell' subdirectory was added to arch/powerpc/oprofile to hold Cell-specific SPU profiling code. Signed-off-by: Carl Love Signed-off-by: Maynard Johnson Signed-off-by: Arnd Bergmann --- --- diffstat: arch/powerpc/configs/cell_defconfig | 2 arch/powerpc/kernel/time.c | 1 arch/powerpc/oprofile/Kconfig | 3 arch/powerpc/oprofile/Makefile | 3 arch/powerpc/oprofile/cell/pr_util.h | 78 + arch/powerpc/oprofile/cell/spu_profiler.c | 203 ++++ arch/powerpc/oprofile/cell/spu_task_sync.c | 425 ++++++++++ arch/powerpc/oprofile/cell/vma_map.c | 229 +++++ arch/powerpc/oprofile/common.c | 2 arch/powerpc/oprofile/op_model_cell.c | 332 +++++++ arch/powerpc/platforms/cell/spufs/context.c | 29 arch/powerpc/platforms/cell/spufs/sched.c | 2 arch/powerpc/platforms/cell/spufs/spufs.h | 4 drivers/oprofile/buffer_sync.c | 1 drivers/oprofile/event_buffer.h | 20 drivers/oprofile/oprof.c | 26 include/asm-powerpc/oprofile_impl.h | 2 include/asm-powerpc/spu.h | 6 include/linux/oprofile.h | 37 kernel/hrtimer.c | 1 20 files changed, 1379 insertions(+), 27 deletions(-)