====== cell-defconfig.diff ====== Subject: cell: update defconfig Already submitted by paulus Signed-off-by: Arnd Bergmann --- diffstat: cell_defconfig | 56 ++++++++++++++++++++++++++++++++----- 1 file changed, 49 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(-) ====== powerpc-pci-scan.diff ====== Subject: powerpc: allow PHBs anywhere in the device tree The rtas_pci code currently restricts pci host bridges to locations directly under the device tree root. In order to correctly model a north bridge that has multiple PCI buses, that restriction needs to be relaxed. The new definition is a device node of type "pci" whose parent is of a different type, so we don't treat pci-to-pci bridges as host bridges. It also accepts any device type of "pci", "pcie", "ht" and "pciex" in order to match anything that is currently in use. I have added a new helper "of_find_phb_node" to prom.c so that pci implementations of non-rtas platforms can use this as well. Signed-off-by: Arnd Bergmann --- diffstat: arch/powerpc/kernel/prom.c | 66 +++++++++++++++++++++ arch/powerpc/kernel/rtas_pci.c | 20 ------ include/asm-powerpc/prom.h | 1 3 files changed, 69 insertions(+), 18 deletions(-) ====== spidernet-burstsize.diff ====== Subject: powerpc/cell spidernet burst alignment patch. From: James K Lewis This patch increases the Burst Address alignment from 64 to 1024 in the Spidernet driver. This improves transmit performance for large packets from about 100Mbps to 300-400Mbps. Signed-off-by: James K Lewis Signed-off-by: Linas Vepstas Signed-off-by: Arnd Bergmann Cc: Utz Bacher Cc: Jens Osterkamp Cc: Arnd Bergmann ---- drivers/net/spider_net.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- diffstat: spider_net.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) ====== spidernet-low-watermark.diff ====== Subject: powerpc/cell spidernet low watermark patch. From: Linas Vepstas Implement basic low-watermark support for the transmit queue. The basic idea of a low-watermark interrupt is as follows. The device driver queues up a bunch of packets for the hardware to transmit, and then kicks he hardware to get it started. As the hardware drains the queue of pending, untransmitted packets, the device driver will want to know when the queue is almost empty, so that it can queue some more packets. This is accomplished by setting the DESCR_TXDESFLG flag in one of the packets. When the hardware sees this flag, it will interrupt the device driver. Because this flag is on a fixed packet, rather than at fixed location in the queue, the code below needs to move the flag as more packets are queued up. This implementation attempts to keep te flag at about 3/4's of the way into the queue. This patch boosts driver performance from about 300-400Mbps for 1500 byte packets, to about 710-740Mbps. Signed-off-by: James K Lewis Signed-off-by: Linas Vepstas Signed-off-by: Arnd Bergmann Cc: Utz Bacher Cc: Jens Osterkamp Cc: Arnd Bergmann ---- drivers/net/spider_net.c | 56 ++++++++++++++++++++++++++++++++++++++++++----- drivers/net/spider_net.h | 6 +++-- 2 files changed, 55 insertions(+), 7 deletions(-) --- diffstat: spider_net.c | 56 +++++++++++++++++++++++++++++++++++---- spider_net.h | 6 ++-- 2 files changed, 55 insertions(+), 7 deletions(-) ====== spidernet-queue-empty-print.diff ====== Subject: powerpc/cell spidernet stop error printing patch. From: Linas Vepstas Turn off mis-interpretation of the queue-empty interrupt status bit as an error. This bit is set as a part of the previous low-watermark patch. Signed-off-by: Linas Vepstas Signed-off-by: James K Lewis Signed-off-by: Arnd Bergmann Cc: Utz Bacher Cc: Jens Osterkamp Cc: Arnd Bergmann ---- drivers/net/spider_net.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) --- diffstat: spider_net.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) ====== spidernet-version.diff ====== Subject: powerpc/cell spidernet ethtool -i version number info. From: James K Lewis This patch adds version information as reported by ethtool -i to the Spidernet driver. Signed-off-by: James K Lewis Signed-off-by: Linas Vepstas Signed-off-by: Arnd Bergmann Cc: Utz Bacher Cc: Jens Osterkamp ---- drivers/net/spider_net.c | 3 +++ drivers/net/spider_net.h | 2 ++ drivers/net/spider_net_ethtool.c | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) --- diffstat: spider_net.c | 1 + spider_net.h | 2 ++ spider_net_ethtool.c | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) ====== 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-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(-) ====== 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-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!). Signed-off-by: Arnd Bergmann --- diffstat: run.c | 28 +++++++++++++++------------- syscalls.c | 7 +++++-- 2 files changed, 20 insertions(+), 15 deletions(-) ====== systemsim-2.6.18-rc2.diff ====== This patch contains a diff of Linus' v2.6.18-rc2 and Eric's systemsim-2.6.18-rc2 at git://kernel.org/pub/scm/linux/kernel/git/ericvh/systemsim.git Changelog : commit c7c2d69e9ec0af0f1b62628a9859e56e729f219b Author: Eric Van Hensbergen Date: Tue Jul 25 22:17:21 2006 -0500 Remove devfs code from Systemsim Block driver Signed-off-by: Eric Van Hensbergen -- --- diffstat: Documentation/systemsim/maple.tcl | 1145 +++++++++++ Documentation/systemsim/systemsim.txt | 92 arch/powerpc/Kconfig | 28 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/pseries/setup.c | 7 drivers/block/Kconfig | 7 drivers/block/Makefile | 2 drivers/block/systemsim_bd.c | 303 ++ drivers/char/Kconfig | 32 drivers/char/Makefile | 1 drivers/char/hvc_fss.c | 124 + 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 21 files changed, 3445 insertions(+), 18 deletions(-) ====== systemsim-bd-fixup-2.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(+) ====== cell-hvc-fss-detection-2.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(-) ====== cbesim-defconfig-3.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 | 868 +++++++++++++++++++++++++++++++++++ 1 file changed, 868 insertions(+) ====== systemsim-cell-detect.diff ====== Subject: cell: correctly detect systemsim host Systemsim uses a different compatible property in the device tree. Signed-off-by: Christian Krafft Signed-off-by: Arnd Bergmann --- --- diffstat: setup.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) ====== systemsim-cell_defconfig.diff ====== Subject: [FYI] cell: enable systemsim in cell_defconfig This is a patch against the cell_defconfig to enable systemsim. Signed-off-by: Jens Osterkamp --- --- diffstat: cell_defconfig | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) ====== 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: configs/cell_defconfig | 1 kernel/head_64.S | 44 +++++++++++++++++++++++++++++ platforms/cell/Kconfig | 10 ++++++ 3 files changed, 55 insertions(+) ====== 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(-) ====== ib-max_rbc_rrs.diff ====== Subject: backport an infiniband fix From: Erez Cohen Add control of PCIX max read byte count and PCI Express max read request size parameters. This is due to the fact that some chipsets may not work or may not work optimally with the default parametrs. logic as follows: If the user sets a valid value to a paramter this value wins. Otherwise the value read from the device is compared to the default value defined by the spec. If value read does not equal default it is assumed the BIOS configured it and the BIOS value is retained. Signed-off-by: Arnd Bergmann --- diffstat: mthca_main.c | 67 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 65 insertions(+), 2 deletions(-) ====== cbe-regs-update.diff ====== Subject: cell: update cell be register definitions there are a few definitions that are required by subsequent patches, so add them here. This patch probably needs a little cosmetic cleanup. Signed-off-by: Arnd Bergmann --- diffstat: cbe_regs.c | 25 +++ cbe_regs.h | 259 ++++++++++++++++++++++++++++++++++------ pervasive.c | 6 3 files changed, 250 insertions(+), 40 deletions(-) ====== cell-ras-2.diff ====== Subject: Cell: add register access based on SPU device_nodes Signed-off-by: Christian Krafft Signed-off-by: Arnd Bergmann --- diffstat: cbe_regs.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) ====== cell-ras-3.diff ====== Subject: Cell: add MIC register access to RAS Signed-off-by: Christian Krafft --- diffstat: cbe_regs.c | 5 ++++- cbe_regs.h | 13 +++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) ====== spu-add-attributes.diff ====== Subject: Cell: add additional properties to spu struct In order to add sysfs attributes to all spu's, there is a need for a list of all available spu's. Adding the device_node makes also sense, as it is needed for proper register access. Signed-off-by: Christian Krafft --- diffstat: arch/powerpc/platforms/cell/spu_base.c | 33 +++++++++++++ include/asm-powerpc/spu.h | 3 + 2 files changed, 36 insertions(+) ====== cell-thermal-support.diff ====== Subject: Cell: add temperature to SPU sysfs entries Signed-off-by: Christian Krafft --- diffstat: arch/powerpc/configs/cell_defconfig | 1 arch/powerpc/platforms/cell/Kconfig | 5 arch/powerpc/platforms/cell/Makefile | 2 arch/powerpc/platforms/cell/cbe_regs.c | 1 arch/powerpc/platforms/cell/thermal.c | 73 +++++++++++++ include/asm-powerpc/spu.h | 2 6 files changed, 84 insertions(+) ====== thermal-defconfig.diff ====== Subject: Cell: add thermal support to default config Signed-off-by: Christian Krafft --- diffstat: cell_defconfig | 3 +++ 1 file changed, 3 insertions(+) ====== prom-extern-function.diff ====== Subject: externalize a function and a map of cpumasks, both needed by upcomming cpufreq driver Signed-off-by: Christian Krafft --- diffstat: arch/powerpc/kernel/prom.c | 2 +- arch/powerpc/kernel/smp.c | 1 + include/asm-powerpc/prom.h | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) ====== cell-thermal-ppe.diff ====== Subject: Cell: add support for the two additional temperature sensors The temperature can be read from /sys/devices/system/cpu/cpuX/temperatureX. The file temperature0 is belonging to the sensor near the linear thermal diode on the PPE, temperature1 is the other sensor. Signed-off-by: Christian Krafft --- diffstat: arch/powerpc/kernel/sysfs.c | 31 ++++++ arch/powerpc/platforms/cell/thermal.c | 64 +++++++++++++- include/linux/cpu.h | 4 3 files changed, 96 insertions(+), 3 deletions(-) ====== cpufreq-cell.diff ====== Subject: Cell: add cpufreq driver for Cell BE processor Signed-off-by: Christian Krafft --- diffstat: configs/cell_defconfig | 4 platforms/cell/Kconfig | 9 platforms/cell/Makefile | 1 platforms/cell/cbe_cpufreq.c | 263 +++++++++++++++++++++++ 4 files changed, 274 insertions(+), 3 deletions(-) ====== cpufreq-defconfig.diff ====== Subject: Cell: add cpufreq driver to the default config file Signed-off-by: Christian Krafft --- diffstat: cell_defconfig | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) ====== nodeaware-netdev-2.diff ====== Subject: Node-aware netdevice allocation Adds alloca_netdev_node & friends to allocate a struct netdevice on a given NUMA node. Note: needs benchmarking to prove a gain. Signed-off-by: Christoph Hellwig --- diffstat: include/linux/etherdevice.h | 1 + include/linux/netdevice.h | 3 +++ net/core/dev.c | 14 +++++++++++--- net/ethernet/eth.c | 24 ++++++++++++++++++++++++ 4 files changed, 39 insertions(+), 3 deletions(-) ====== nodeaware-skb_alloc.diff ====== Subject: node-aware skb allocation Note: needs benchmarking to prove a gain. Note2: Needs to API rework before upstream submission Signed-off-by: Christoph Hellwig --- diffstat: include/linux/skbuff.h | 15 ++++++++++++--- net/core/skbuff.c | 9 ++++++--- 2 files changed, 18 insertions(+), 6 deletions(-) ====== nodeaware-spidernet.diff ====== Subject: use node-aware netdev allocation in spidernet Signed-off-by: Christoph Hellwig --- diffstat: spider_net.c | 10 ++++++---- spider_net.h | 1 + 2 files changed, 7 insertions(+), 4 deletions(-) ====== spufs-event-addon.diff ====== --- diffstat: arch/powerpc/platforms/cell/spu_base.c | 6 +- arch/powerpc/platforms/cell/spufs/inode.c | 9 ++- arch/powerpc/platforms/cell/spufs/run.c | 24 +++++++++- arch/powerpc/platforms/cell/spufs/sched.c | 4 - arch/powerpc/platforms/cell/spufs/spufs.h | 4 + include/asm-powerpc/spu.h | 14 +++++ 6 files changed, 50 insertions(+), 11 deletions(-) ====== spufs-gang-2.diff ====== Subject: spufs: Add infrastructure needed for gang scheduling Add the concept of a gang to spufs as a new type of object. So far, this has no impact whatsover on scheduling, but makes it possible to add that later. A new type of object in spufs is now a spu_gang. It is created with the spu_create system call with the flags argument set to SPU_CREATE_GANG (0x80000000). Inside of a spu_gang, it is then possible to create spu_context objects, which until now was only possible at the root of spufs. There is a new member in struct spu_context pointing to the spu_gang it belongs to, if any. The spu_gang maintains a list of spu_context structures that are its children. This information can then be used in the scheduler in the future. There is still a bug that needs to be resolved in this basic infrastructure regarding the order in which objects are removed. When the spu_gang file descriptor is closed before the spu_context descriptors, we leak the dentry and inode for the gang. Any ideas how to cleanly solve this are appreciated. Signed-off-by: Arnd Bergmann --- diffstat: arch/powerpc/platforms/cell/spufs/Makefile | 2 arch/powerpc/platforms/cell/spufs/context.c | 6 arch/powerpc/platforms/cell/spufs/gang.c | 81 +++ arch/powerpc/platforms/cell/spufs/inode.c | 227 ++++++++-- arch/powerpc/platforms/cell/spufs/spufs.h | 24 - arch/powerpc/platforms/cell/spufs/syscalls.c | 2 include/asm-powerpc/spu.h | 5 7 files changed, 304 insertions(+), 43 deletions(-) ====== spufs-alloc_node-fix.diff ====== Subject: fix oops in spu_alloc_node From: Patrick Mansfield Fix the following oops in spu_alloc_node. I didn't see other reports of this or a fix, and don't know why it is not hit more often, I seemed to only hit it after running a simple spu executable multiple times in a row without much delay (scripted or from command line). Unable to handle kernel paging request for data at address 0x00004060 Faulting instruction address: 0xc0000000000345b4 cpu 0x0: Vector: 300 (Data Access) at [c000000001ffb750] pc: c0000000000345b4: .spu_alloc_node+0x90/0x128 lr: c00000000003459c: .spu_alloc_node+0x78/0x128 sp: c000000001ffb9d0 msr: 9000000000009032 dar: 4060 dsisr: 42000000 current = 0xc00000001ff7a810 paca = 0xc00000000033bf80 pid = 1860, comm = ppu_main enter ? for help 0:mon> t [c000000001ffba60] d00000000002d424 .spu_activate+0x3a4/0x3e4 [spufs] [c000000001ffbb40] d00000000002c648 .spu_acquire_runnable+0x90/0xe0 [spufs] [c000000001ffbbd0] d00000000002e738 .spufs_run_spu+0x9c/0x4e8 [spufs] [c000000001ffbcc0] d00000000002cb34 .do_spu_run+0xac/0x168 [spufs] [c000000001ffbd80] c00000000003556c .sys_spu_run+0xb0/0x140 [c000000001ffbe30] c00000000000861c syscall_exit+0x0/0x40 Signed-off-by: Patrick Mansfield --- diffstat: spu_base.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)