====== cell-defconfig.diff ====== Subject: update cell_defconfig From: Arnd Bergmann Signed-off-by: Arnd Bergmann --- diffstat: cell_defconfig | 220 ++++++++++++------------------------- 1 file changed, 76 insertions(+), 144 deletions(-) ====== 36162.diff ====== Subject: spu_manage: use newer physical-id attribute From: Christian Krafft Legacy device tree used the reg property for the physical id of an spe. On newer device tree layouts the reg property contains the "correct" value in the reg attribute. So there has been intoduced the "physical-id" on newer devicetree layouts. The id is stored by spu_manage into the spu struct as spe_id. cbe_thermal has been changed to use the spu->spe_id. There's no need for the thermal code has to check devicetree attributes for itself. Signed-off-by: Christian Krafft Signed-off-by: Arnd Bergmann --- diffstat: cbe_thermal.c | 6 +----- spu_manage.c | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) ====== 34342.diff ====== Subject: cell: support pinhole-reset on IBM cell blades From: Arnd Bergmann The Cell Broadband Engine has a method of injecting a system-reset-exception from an external source into the operating system, which should trigger the regular behaviour of entering xmon or kdump. Unfortunately, the exception handler cannot distinguish it from other interrupt causes by the SRR1 register, which gets used for this on Power 6 and others. IBM Blade servers that want to support triggering the system reset exception using a pinhole button in the front panel therefore use an extra register to determine the reset cause. Signed-off-by: Arnd Bergmann --- diffstat: cbe_regs.h | 8 ++++++-- pervasive.c | 20 ++++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) ====== 35766.diff ====== Subject: Axonram module modification for latest firmware API changes From: Maxim Shchetynin Firmware would not deliver two interrupt numbers in device-tree any more but only one, for correctable ECC, because uncorrectable ECC from now handles firmware itself. Changes in the axonram module are necessary because in the old version, if it is not allowed to fetch the second interrupt number from device-tree, it interpretes this as an error case and exits. Signed-off-by: Maximilian Signed-off-by: Arnd Bergmann --- --- diffstat: axonram.c | 43 ++++++++++-------------------------------- 1 file changed, 11 insertions(+), 32 deletions(-) ====== 37801.diff ====== Subject: axonram: do not delete gendisk's queue in error path From: Maxim Shchetynin On exit do not delete gendisk's queue because this is already done by del_gendisk(). Doing it twice may cause memory damage. Signed-off-by: Maximilian Signed-off-by: Arnd Bergmann --- diffstat: axonram.c | 3 --- 1 file changed, 3 deletions(-) ====== sysfs-fix-warning-3.diff ====== Subject: powerpc: sysfs fix compiler warning From: Christian Krafft This patch fixes the following compiler warning: arch/powerpc/kernel/sysfs.c:385: warning: ignoring return value of `sysfs_create_group', Signed-off-by: Christian Krafft Signed-off-by: Arnd Bergmann --- diffstat: sysfs.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) ====== spidernet-irq.diff ====== Subject: spidernet enable poll() before registering interrupts From: Arnd Bergmann We must not call netif_poll_enable after enabling interrupts, because an interrupt might come in and set the __LINK_STATE_RX_SCHED bit before we get to clear that bit again. If that happens, the next call to the ->poll() function will oops. Signed-off-by: Arnd Bergmann --- diffstat: spider_net.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) ====== 36920.diff ====== Subject: spusched: fix null pointer dereference in find_victim From: Christoph Hellwig find_victim can dereference a NULL pointer when iterating over the list of victim spus because list_mutex only guarantees spu->ct to be stable, but of course not to be non-NULL. Also fix find_victim to not call spu_unbind_context without list_mutex because that violates the above guarantee. Signed-off-by: Christoph Hellwig Signed-off-by: Arnd Bergmann --- diffstat: sched.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) ====== 33438.diff ====== Subject: spufs: not calling spu_run_init on spu_reacquire_runnable From: Andre Detsch This patch fixes a major bug which was happening when a SPU thread advances its execution right after being restored to a SPU. A potentially outdated NPC value was being (re)written to the SPU. So, spu_run_init, in this case, was either not doing anything relevant, or breaking the execution of the SPU thread. This fixes a common problem of losing a mailbox write when it was done to a saved context. Signed-off-by: Andre Detsch Acked-by: Jeremy Kerr Signed-off-by: Arnd Bergmann --- diffstat: run.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) ====== 37426.diff ====== Subject: spufs: fix race condition on gang->aff_ref_spu From: Andre Detsch Affinity reference point location (gang->aff_ref_spu) is reset when the whole gang is descheduled. However, the last member of a gang can be descheduled while we are trying to schedule another member of the gang. This was leading to a race condition, and the code was using gang->aff_ref_spu in an unsafe manner. By holding the gang->aff_mutex a little bit longer, and increment gang->aff_sched_count (which controls when gang->aff_ref_spu should be reset) a little bit earlier, the problem is fixed. Signed-off-by: Andre Detsch Signed-off-by: Arnd Bergmann --- diffstat: sched.c | 49 ++++++++++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 17 deletions(-) ====== 37589.diff ====== Subject: cell: Fix another user-visible SPU coredump bug From: Michael Ellerman The SPU coredump code has an array of "spufs_coredump_reader"s, each of which has either a read or a get callback, as well as the size of the data it will generate. Those with read callbacks can generate an arbitrary amount of data, however the get callbacks all return a u64, 8 bytes, and this is enforced by do_coredump_read(). There seems to be a bit of confusion however, and some of the get callbacks supposedly return quantities other than 8 bytes. It looks as though there might have been some ascii vs binary mixup, eg. "0x11112222\n" == 11, and "0x1111222233334444\n" == 19. Although this bug doesn't lead to unloadable coredumps, it does make the contents of the SPU notes incomprehensible to user space (without hacks) - so I think we should fix it asap. Signed-off-by: Michael Ellerman Acked-by: Jeremy Kerr Signed-off-by: Arnd Bergmann --- Paulus, please apply for 23, Jeremy has already acked this. Apologies this is late in the cycle, I've only just had time to look into it. --- arch/powerpc/platforms/cell/spufs/file.c | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) --- --- diffstat: file.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) ====== 37778.diff ====== Subject: spufs: Remove ctx_info and ctx_info_list From: Michael Ellerman Remove the ctx_info struct entirely, and also the ctx_info_list. This fixes a race where two processes can clobber each other's ctx_info structs. Instead of using the list, we just repeat the search through the file descriptor table. Signed-off-by: Michael Ellerman Signed-off-by: Arnd Bergmann --- --- diffstat: coredump.c | 133 +++++++++++++++++------------------------ 1 file changed, 56 insertions(+), 77 deletions(-) ====== 36663.diff ====== Subject: SLUB: Do not fail on broken memory configurations From: Christoph Lameter Print a big fat warning and do what is necessary to continue if a node is marked as up but allocations from the node do not succeed. Signed-off-by: Christoph Lameter Signed-off-by: Arnd Bergmann --- diffstat: slub.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) ====== 37991.diff ====== Subject: cell: Safer of_has_vicinity routine From: Andre Detsch This patch changes the way we check for the existence of vicinity property in spe device nodes. The new implementation does not depend on having an initialized cbe_spu_info[0].spus, and checks for presence of vicinity in all nodes, not only in the first one. Basically a copy & paste from Arnd's suggestion sent to cbe-oss-dev. Signed-off-by: Andre Detsch Signed-off-by: Arnd Bergmann --- diffstat: spu_manage.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) ====== 36439.diff ====== Subject: perfmon2: make pm_interval register read/write From: Kevin Corry The pm_interval register in the Cell PMU is read/write, but was implemented in the kernel as write-only. Previously, the written value was saved in a "shadow" copy so calls to cbe_read_pm() could return the value. Perfmon2 needs to be able to read the current values of pm_interval, so change cbe_read_pm() to read the actual register instead of the "shadow" copy. There is currently no code in the kernel that tries to read the pm_interval register with cbe_read_pm() (expecting to receive the "shadow" value), so this should not break any existing code. Signed-off-by: Kevin Corry Signed-off-by: Carl Love Signed-off-by: Arnd Bergmann --- diffstat: pmu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)