]> git.karo-electronics.de Git - karo-tx-linux.git/log
karo-tx-linux.git
13 years agoMerge remote-tracking branch '52xx-and-virtex/powerpc/next'
Stephen Rothwell [Wed, 21 Sep 2011 00:59:42 +0000 (10:59 +1000)]
Merge remote-tracking branch '52xx-and-virtex/powerpc/next'

13 years agoMerge remote-tracking branch 'powerpc/next'
Stephen Rothwell [Wed, 21 Sep 2011 00:53:27 +0000 (10:53 +1000)]
Merge remote-tracking branch 'powerpc/next'

13 years agoMerge remote-tracking branch 'mips/mips-for-linux-next'
Stephen Rothwell [Wed, 21 Sep 2011 00:52:06 +0000 (10:52 +1000)]
Merge remote-tracking branch 'mips/mips-for-linux-next'

13 years agoMerge remote-tracking branch 'm68knommu/for-next'
Stephen Rothwell [Wed, 21 Sep 2011 00:50:48 +0000 (10:50 +1000)]
Merge remote-tracking branch 'm68knommu/for-next'

13 years agoMerge remote-tracking branch 'm68k/for-next'
Stephen Rothwell [Wed, 21 Sep 2011 00:49:37 +0000 (10:49 +1000)]
Merge remote-tracking branch 'm68k/for-next'

13 years agoMerge remote-tracking branch 'ia64/test'
Stephen Rothwell [Wed, 21 Sep 2011 00:48:24 +0000 (10:48 +1000)]
Merge remote-tracking branch 'ia64/test'

13 years agoMerge branch 'quilt/hexagon'
Stephen Rothwell [Wed, 21 Sep 2011 00:47:06 +0000 (10:47 +1000)]
Merge branch 'quilt/hexagon'

13 years agoMerge remote-tracking branch 'cris/for-next'
Stephen Rothwell [Wed, 21 Sep 2011 00:45:49 +0000 (10:45 +1000)]
Merge remote-tracking branch 'cris/for-next'

13 years agoMerge remote-tracking branch 'blackfin/for-linus'
Stephen Rothwell [Wed, 21 Sep 2011 00:44:34 +0000 (10:44 +1000)]
Merge remote-tracking branch 'blackfin/for-linus'

13 years agoMerge remote-tracking branch 'ux500-core/ux500-core'
Stephen Rothwell [Wed, 21 Sep 2011 00:44:32 +0000 (10:44 +1000)]
Merge remote-tracking branch 'ux500-core/ux500-core'

13 years agoMerge remote-tracking branch 's5p/for-next'
Stephen Rothwell [Wed, 21 Sep 2011 00:41:16 +0000 (10:41 +1000)]
Merge remote-tracking branch 's5p/for-next'

13 years agoMerge remote-tracking branch 'i.MX/for-next'
Stephen Rothwell [Wed, 21 Sep 2011 00:39:57 +0000 (10:39 +1000)]
Merge remote-tracking branch 'i.MX/for-next'

Conflicts:
arch/arm/mach-imx/Makefile

13 years agoMerge remote-tracking branch 'at91/at91-next'
Stephen Rothwell [Wed, 21 Sep 2011 00:39:49 +0000 (10:39 +1000)]
Merge remote-tracking branch 'at91/at91-next'

13 years agoMerge remote-tracking branch 'arm-soc/for-next'
Stephen Rothwell [Wed, 21 Sep 2011 00:38:36 +0000 (10:38 +1000)]
Merge remote-tracking branch 'arm-soc/for-next'

Conflicts:
Documentation/devicetree/bindings/arm/l2cc.txt
arch/arm/boot/dts/tegra-harmony.dts
arch/arm/boot/dts/tegra-seaboard.dts
arch/arm/mach-at91/board-usb-a9260.c
arch/arm/mach-msm/board-msm8x60.c
arch/arm/mach-mxs/include/mach/gpio.h
arch/arm/mach-u300/Makefile.boot
arch/arm/mm/cache-l2x0.c
arch/arm/plat-mxc/include/mach/gpio.h

13 years agoMerge remote-tracking branch 'arm-lpae/for-next'
Stephen Rothwell [Wed, 21 Sep 2011 00:34:39 +0000 (10:34 +1000)]
Merge remote-tracking branch 'arm-lpae/for-next'

Conflicts:
arch/arm/include/asm/page.h
arch/arm/include/asm/pgalloc.h
arch/arm/include/asm/pgtable-hwdef.h
arch/arm/include/asm/pgtable.h
arch/arm/include/asm/tlb.h
arch/arm/kernel/head.S
arch/arm/kernel/sleep.S
arch/arm/mm/dma-mapping.c
arch/arm/mm/mmu.c

13 years agoMerge remote-tracking branch 'arm/for-next'
Stephen Rothwell [Wed, 21 Sep 2011 00:33:25 +0000 (10:33 +1000)]
Merge remote-tracking branch 'arm/for-next'

Conflicts:
arch/arm/mach-integrator/integrator_ap.c

13 years agoMerge remote-tracking branch 'spi-current/spi/merge'
Stephen Rothwell [Wed, 21 Sep 2011 00:28:50 +0000 (10:28 +1000)]
Merge remote-tracking branch 'spi-current/spi/merge'

13 years agoMerge remote-tracking branch 'pci-current/for-linus'
Stephen Rothwell [Wed, 21 Sep 2011 00:28:37 +0000 (10:28 +1000)]
Merge remote-tracking branch 'pci-current/for-linus'

13 years agoMerge remote-tracking branch 'net-current/master'
Stephen Rothwell [Wed, 21 Sep 2011 00:28:36 +0000 (10:28 +1000)]
Merge remote-tracking branch 'net-current/master'

13 years agoMerge remote-tracking branch 'arm-current/master'
Stephen Rothwell [Wed, 21 Sep 2011 00:28:33 +0000 (10:28 +1000)]
Merge remote-tracking branch 'arm-current/master'

13 years agoMerge branch 'devel-stable' into for-next
Russell King [Tue, 20 Sep 2011 22:45:31 +0000 (23:45 +0100)]
Merge branch 'devel-stable' into for-next

Conflicts:
arch/arm/mach-msm/board-msm7x30.c
arch/arm/mm/dma-mapping.c

13 years agoMerge branches 'amba', 'fixes', 'gpio', 'io' (early part), 'misc', 'p2v', 'pgt' and...
Russell King [Tue, 20 Sep 2011 22:45:08 +0000 (23:45 +0100)]
Merge branches 'amba', 'fixes', 'gpio', 'io' (early part), 'misc', 'p2v', 'pgt' and 'pm' into for-next

13 years agoARM: fix vmlinux.lds.S discarding sections
Russell King [Tue, 20 Sep 2011 22:35:15 +0000 (23:35 +0100)]
ARM: fix vmlinux.lds.S discarding sections

We are seeing linker errors caused by sections being discarded, despite
the linker script trying to keep them.  The result is (eg):

`.exit.text' referenced in section `.alt.smp.init' of drivers/built-in.o: defined in discarded section `.exit.text' of drivers/built-in.o
`.exit.text' referenced in section `.alt.smp.init' of net/built-in.o: defined in discarded section `.exit.text' of net/built-in.o

This is the relevent part of the linker script (reformatted to make it
clearer):
| SECTIONS
| {
| /*
| * unwind exit sections must be discarded before the rest of the
| * unwind sections get included.
| */
| /DISCARD/ : {
| *(.ARM.exidx.exit.text)
| *(.ARM.extab.exit.text)
| }
| ...
| .exit.text : {
| *(.exit.text)
| *(.memexit.text)
| }
| ...
| /DISCARD/ : {
| *(.exit.text)
| *(.memexit.text)
| *(.exit.data)
| *(.memexit.data)
| *(.memexit.rodata)
| *(.exitcall.exit)
| *(.discard)
| *(.discard.*)
| }
| }

Now, this is what the linker manual says about discarded output sections:

|    The special output section name `/DISCARD/' may be used to discard
| input sections.  Any input sections which are assigned to an output
| section named `/DISCARD/' are not included in the output file.

No questions, no exceptions. It doesn't say "unless they are listed
before the /DISCARD/ section." Now, this is what asn-generic/vmlinux.lds.S
says:
| /*
|  * Default discarded sections.
|  *
|  * Some archs want to discard exit text/data at runtime rather than
|  * link time due to cross-section references such as alt instructions,
|  * bug table, eh_frame, etc. DISCARDS must be the last of output
|  * section definitions so that such archs put those in earlier section
|  * definitions.
|  */

And guess what - the list _always_ includes .exit.text etc.

Now, what's actually happening is that the linker is reading the script,
and it finds the first /DISCARD/ output section at the beginning of the
script. It continues reading the script, and finds the 'DISCARD' macro
at the end, which having been postprocessed results in another
/DISCARD/ output section. As the linker already contains the earlier
/DISCARD/ output section, it adds it to that existing section, so it
effectively is placed at the start. This can be seen by using the -M
option to ld:

| Linker script and memory map
|
|                 0xc037c080                jiffies = jiffies_64
|
| /DISCARD/
|  *(.ARM.exidx.exit.text)
|  *(.ARM.extab.exit.text)
|  *(.exit.text)
|  *(.memexit.text)
|  *(.exit.data)
|  *(.memexit.data)
|  *(.memexit.rodata)
|  *(.exitcall.exit)
|  *(.discard)
|  *(.discard.*)
|
|                 0xc0008000                . = 0xc0008000
|
| .head.text      0xc0008000      0x1d0
|                 0xc0008000                _text = .
|  *(.head.text)
|  .head.text     0xc0008000      0x1d0 arch/arm/kernel/head.o
|                 0xc0008000                stext
|
| .text           0xc0008200   0x2d78d0
|                 0xc0008200                _stext = .
|                 0xc0008200                __exception_text_start = .
|  *(.exception.text)
|  .exception.text
| ...

As you can see, all the discarded sections are grouped together - and
as a result of it being the first output section, they all appear before
any other section.

The result is that not only is the unwind information discarded (as
intended), but also the .exit.text, despite us wanting to have the
.exit.text preserved.

We can't move the unwind information elsewhere, because it'll then be
included even when we do actually discard the .exit.text (and similar)
sections.

So, work around this by avoiding the generic DISCARDS macro, and instead
conditionalize the sections to be discarded ourselves.  This avoids the
ambiguity in how the linker assigns input sections to output sections,
making our script less dependent on undocumented linker behaviour.

Reported-by: Rob Herring <robherring2@gmail.com>
Tested-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
13 years agoARM: pm: add L2 cache cleaning for suspend
Russell King [Thu, 1 Sep 2011 10:57:59 +0000 (11:57 +0100)]
ARM: pm: add L2 cache cleaning for suspend

We need to ensure that state is pushed out from the L2 cache when
suspending so that the resume paths can access their data before the
MMU and caches have been re-initialized.  Add the necessary calls to
__cpu_suspend_save().

Tested-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Tested-by: Shawn Guo <shawn.guo@linaro.org>
Tested-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
13 years agoARM: pm: convert some assembly to C
Russell King [Thu, 1 Sep 2011 10:52:33 +0000 (11:52 +0100)]
ARM: pm: convert some assembly to C

Convert some of the sleep.S guts to C code, which makes it easier to
use our macros and to add L2 cache handling.  We provide a helper
function, __cpu_suspend_save(), which deals with saving the common
state, setting up for resume, and flushing caches.

The remainder left as assembly code is the saving of the CPU general
purpose registers, and allocating space on the stack to save the CPU
specific registers and resume state.

Tested-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Tested-by: Shawn Guo <shawn.guo@linaro.org>
Tested-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
13 years agoARM: pm: get rid of cpu_resume_turn_mmu_on
Russell King [Wed, 31 Aug 2011 22:26:18 +0000 (23:26 +0100)]
ARM: pm: get rid of cpu_resume_turn_mmu_on

We don't require cpu_resume_turn_mmu_on as we can combine the ldr
instruction with the following code provided we ensure that
cpu_resume_mmu is aligned for older CPUs.  Note that we also align
to a 32-byte boundary to ensure that the code can't cross a section
boundary.

Tested-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Tested-by: Shawn Guo <shawn.guo@linaro.org>
Tested-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
13 years agoARM: pm: no need to save/restore context ID register
Russell King [Sun, 28 Aug 2011 09:30:34 +0000 (10:30 +0100)]
ARM: pm: no need to save/restore context ID register

There is no need to save and restore the context ID register on ARMv6
and ARMv7 with a temporary page table as we write the context ID
register when we switch back to the real page tables for the thread.

Moreover, the temporary page tables do not contain any non-global
mappings, so the context ID value should not be used.  To be safe,
initialize the register to a reserved context ID value.

Tested-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Tested-by: Shawn Guo <shawn.guo@linaro.org>
Tested-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
13 years agoARM: pm: only use preallocated page table during resume
Russell King [Sat, 27 Aug 2011 21:39:09 +0000 (22:39 +0100)]
ARM: pm: only use preallocated page table during resume

Only use the preallocated page table during the resume, not while
suspending.  This avoids the overhead of having to switch unnecessarily
to the resume page table in the suspend path.

Tested-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Tested-by: Shawn Guo <shawn.guo@linaro.org>
Tested-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
13 years agoARM: pm: preallocate a page table for suspend/resume
Russell King [Fri, 26 Aug 2011 19:28:52 +0000 (20:28 +0100)]
ARM: pm: preallocate a page table for suspend/resume

Preallocate a page table and setup an identity mapping for the MMU
enable code.  This means we don't have to "borrow" a page table to
do this, avoiding complexities with L2 cache coherency.

Tested-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Tested-by: Shawn Guo <shawn.guo@linaro.org>
Tested-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
13 years agoARM: pm: force non-zero return value from __cpu_suspend when aborting
Russell King [Sat, 27 Aug 2011 10:17:36 +0000 (11:17 +0100)]
ARM: pm: force non-zero return value from __cpu_suspend when aborting

Ensure that the return value from __cpu_suspend is non-zero when
aborting.  Zero indicates a successful suspend occurred.

Tested-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Tested-by: Shawn Guo <shawn.guo@linaro.org>
Tested-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
13 years agoMerge branch 'fixes' of git://git.linaro.org/people/arnd/arm-soc
Linus Torvalds [Tue, 20 Sep 2011 21:23:16 +0000 (14:23 -0700)]
Merge branch 'fixes' of git://git.linaro.org/people/arnd/arm-soc

* 'fixes' of git://git.linaro.org/people/arnd/arm-soc:
  mach-integrator: fix VGA base regression
  arm/dt: Tegra: Update SDHCI nodes to match bindings
  ARM: EXYNOS4: fix incorrect pad configuration for keypad row lines
  ARM: SAMSUNG: fix to prevent declaring duplicated
  ARM: SAMSUNG: fix watchdog reset issue with clk_get()
  ARM: S3C64XX: Remove un-used code backlight code on SMDK6410
  ARM: EXYNOS4: restart clocksource while system resumes
  ARM: EXYNOS4: Fix routing timer interrupt to offline CPU
  ARM: EXYNOS4: Fix return type of local_timer_setup()
  ARM: EXYNOS4: Fix wrong pll type for vpll
  ARM: Dove: fix second SPI initialization call

13 years agoMerge branch 'for-linus' of git://github.com/chrismason/linux
Linus Torvalds [Tue, 20 Sep 2011 21:22:55 +0000 (14:22 -0700)]
Merge branch 'for-linus' of git://github.com/chrismason/linux

* 'for-linus' of git://github.com/chrismason/linux:
  Btrfs: reserve sufficient space for ioctl clone

13 years agostaging: zcache: fix cleancache crash
Seth Jennings [Tue, 20 Sep 2011 20:09:56 +0000 (13:09 -0700)]
staging: zcache: fix cleancache crash

After commit c5f5c4db3938 ("staging: zcache: fix crash on high memory
swap") cleancache crashes on the first successful get.  This was caused
by a remaining virt_to_page() call in zcache_pampd_get_data_and_free()
that only gets run in the cleancache path.

The patch converts the virt_to_page() to struct page casting like was
done for other instances in c5f5c4db3938.

Signed-off-by: Seth Jennings <sjenning@linux.vnet.ibm.com>
Tested-By: Valdis Kletnieks <valdis.kletnieks@vt.edu>
Acked-by: Dan Magenheimer <dan.magenheimer@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
13 years agomach-integrator: fix VGA base regression
Linus Walleij [Sun, 4 Sep 2011 21:40:08 +0000 (23:40 +0200)]
mach-integrator: fix VGA base regression

The changes introduced in commit
cc22b4c18540e5e8bf55c7d124044f9317527d3c
"ARM: set vga memory base at run-time"

Makes the Integrator/AP freeze completely. I appears that
this is due to the VGA base address being assigned at PCI
init time, while this base is needed earlier than that.
Moving the initialization of the base address to the
.map_io function solves this problem.

Cc: Rob Herring <rob.herring@calxeda.com>
Cc: Nicolas Pitre <nicolas.pitre@linaro.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Linus Walleij <linus.walleij@stericsson.com>
Acked-by: Rob Herring <rob.herring@calxeda.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
13 years agoarm/dt: Tegra: Update SDHCI nodes to match bindings
Stephen Warren [Tue, 20 Sep 2011 16:46:25 +0000 (10:46 -0600)]
arm/dt: Tegra: Update SDHCI nodes to match bindings

The bindings were recently updated to have separate properties for each
type of GPIO. Update the Device Tree source to match that.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Olof Johansson <olof@lixom.net>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
13 years agoMerge branch 'next/cleanup' into for-next
Arnd Bergmann [Tue, 20 Sep 2011 20:44:55 +0000 (22:44 +0200)]
Merge branch 'next/cleanup' into for-next

13 years agoMerge branch 'stericsson/cleanup' into next/cleanup
Arnd Bergmann [Tue, 20 Sep 2011 20:44:35 +0000 (22:44 +0200)]
Merge branch 'stericsson/cleanup' into next/cleanup

13 years agoMerge branch 'next/board' of git+ssh://git.linaro.org/home/arndbergmann/public_git...
Arnd Bergmann [Tue, 20 Sep 2011 20:25:35 +0000 (22:25 +0200)]
Merge branch 'next/board' of git+ssh://git.linaro.org/home/arndbergmann/public_git/arm-soc into for-next

13 years agoMerge branch 'samsung/board' into next/board
Arnd Bergmann [Tue, 20 Sep 2011 20:24:58 +0000 (22:24 +0200)]
Merge branch 'samsung/board' into next/board

13 years agoMerge branch 'next/cleanup' of git+ssh://git.linaro.org/home/arndbergmann/public_git...
Arnd Bergmann [Tue, 20 Sep 2011 20:18:30 +0000 (22:18 +0200)]
Merge branch 'next/cleanup' of git+ssh://git.linaro.org/home/arndbergmann/public_git/arm-soc into for-next

Conflicts:
arch/arm/mach-exynos4/mach-smdkc210.c

13 years agoMerge branch 'samsung/cleanup' into next/cleanup
Arnd Bergmann [Tue, 20 Sep 2011 20:15:55 +0000 (22:15 +0200)]
Merge branch 'samsung/cleanup' into next/cleanup

13 years agoMerge branch 'next/devel' of git+ssh://git.linaro.org/home/arndbergmann/public_git...
Arnd Bergmann [Tue, 20 Sep 2011 20:14:48 +0000 (22:14 +0200)]
Merge branch 'next/devel' of git+ssh://git.linaro.org/home/arndbergmann/public_git/arm-soc into for-next

13 years agoMerge branch 'davinci/devel' into next/devel
Arnd Bergmann [Tue, 20 Sep 2011 20:12:33 +0000 (22:12 +0200)]
Merge branch 'davinci/devel' into next/devel

13 years agoMerge branch 'next/voltage' into for-next
Arnd Bergmann [Tue, 20 Sep 2011 20:03:38 +0000 (22:03 +0200)]
Merge branch 'next/voltage' into for-next

13 years agoMerge branch 'next/cleanup' of git+ssh://git.linaro.org/home/arndbergmann/public_git...
Arnd Bergmann [Tue, 20 Sep 2011 20:00:09 +0000 (22:00 +0200)]
Merge branch 'next/cleanup' of git+ssh://git.linaro.org/home/arndbergmann/public_git/arm-soc into for-next

13 years agoMerge branch 'fixes' of git+ssh://git.linaro.org/home/arndbergmann/public_git/arm...
Arnd Bergmann [Tue, 20 Sep 2011 19:59:57 +0000 (21:59 +0200)]
Merge branch 'fixes' of git+ssh://git.linaro.org/home/arndbergmann/public_git/arm-soc into for-next

Conflicts:
arch/arm/include/asm/hardware/cache-l2x0.h

13 years agonet: pxa168: Fix build errors by including interrupt.h
Tanmay Upadhyay [Mon, 5 Sep 2011 19:32:04 +0000 (19:32 +0000)]
net: pxa168: Fix build errors by including interrupt.h

Commit a6b7a407865aab9f849dd99a71072b7cd1175116 removed
linux/interrupt.h from netdevice.h. This fixes below build failure

drivers/net/pxa168_eth.c: In function 'pxa168_eth_collect_events':
drivers/net/pxa168_eth.c:866: error: 'IRQ_NONE' undeclared (first use in this function)
drivers/net/pxa168_eth.c:866: error: (Each undeclared identifier is reported only once
drivers/net/pxa168_eth.c:866: error: for each function it appears in.)
drivers/net/pxa168_eth.c: At top level:
drivers/net/pxa168_eth.c:913: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'pxa168_eth_int_handler'
drivers/net/pxa168_eth.c: In function 'pxa168_eth_open':
drivers/net/pxa168_eth.c:1133: error: implicit declaration of function 'request_irq'
drivers/net/pxa168_eth.c:1133: error: 'pxa168_eth_int_handler' undeclared (first use in this function)
drivers/net/pxa168_eth.c:1134: error: 'IRQF_DISABLED' undeclared (first use in this function)
drivers/net/pxa168_eth.c:1160: error: implicit declaration of function 'free_irq'

Signed-off-by: Tanmay Upadhyay <tanmay.upadhyay@einfochips.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
13 years agoMerge branch 'omap/cleanup' into next/cleanup
Arnd Bergmann [Tue, 20 Sep 2011 19:45:56 +0000 (21:45 +0200)]
Merge branch 'omap/cleanup' into next/cleanup

13 years agonetconsole: switch init_netconsole() to late_initcall
Lin Ming [Tue, 20 Sep 2011 19:45:07 +0000 (15:45 -0400)]
netconsole: switch init_netconsole() to late_initcall

Commit 88491d8(drivers/net: Kconfig & Makefile cleanup) causes a
regression that netconsole does not work if netconsole and network
device driver are build into kernel, because netconsole is linked
before network device driver.

Andrew Morton suggested to fix this with initcall ordering.
Fixes it by switching init_netconsole() to late_initcall.

Signed-off-by: Lin Ming <ming.m.lin@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
13 years agogianfar: Fix overflow check and return value for gfar_get_cls_all()
Ben Hutchings [Tue, 6 Sep 2011 12:44:25 +0000 (12:44 +0000)]
gianfar: Fix overflow check and return value for gfar_get_cls_all()

This function may currently fill one entry beyond the end of the
array it is given.  It also doesn't return an error code in case
it does detect overflow.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
13 years agoarm/dt: Tegra: Add support-8bit to SDHCI nodes
Stephen Warren [Tue, 20 Sep 2011 16:46:26 +0000 (10:46 -0600)]
arm/dt: Tegra: Add support-8bit to SDHCI nodes

For Seaboard's internal eMMC, this makes the difference between a
5.5MB/s and 10.2MB/s transfer rate. On Harmony, there wasn't any
measurable difference on my cheap/slow ~2MB/s card.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
13 years agoarm/dt: Tegra: Update SDHCI nodes to match bindings
Stephen Warren [Tue, 20 Sep 2011 16:46:25 +0000 (10:46 -0600)]
arm/dt: Tegra: Update SDHCI nodes to match bindings

The bindings were recently updated to have separate properties for each
type of GPIO. Update the Device Tree source to match that.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Olof Johansson <olof@lixom.net>
13 years agoppp_generic: fix multilink fragment MTU calculation (again)
Henry Wong [Sun, 18 Sep 2011 13:41:49 +0000 (13:41 +0000)]
ppp_generic: fix multilink fragment MTU calculation (again)

When using MLPPP, the maximum size of a fragment is incorrectly
calculated with an offset of -2.
This patch reverses the changes in the patch found here:
http://marc.info/?l=linux-netdev&m=123541324010539&w=2

The value of hdrlen includes the size of both the 2-byte PPP protocol
field and the 2- or 4-byte multilink header (2+4=6 for long sequence
numbers, 2+2=4 for short sequence numbers). Section 2 of RFC1661 says
that the MRU that is negotiated (i.e., the MTU of the sending system)
includes only the PPP payload but not the protocol field, thus the
correct MTU should be the link's MTU minus the multilink header (mtu -
(hdrlen-2)).

The incorrect calculation causes Linux to fragment packets to a size two
bytes smaller than the allowed MTU. While not technically illegal, this
behaviour confounds MRU-tuning to avoid PPP-layer fragmentation.

Signed-off-by: Henry Wong <henry@stuffedcow.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
13 years agoGRETH: avoid overwrite IP-stack's IP-frags checksum
Daniel Hellstrom [Fri, 9 Sep 2011 05:17:54 +0000 (05:17 +0000)]
GRETH: avoid overwrite IP-stack's IP-frags checksum

The GRETH GBIT core does not do checksum offloading for IP
segmentation. This patch adds a check in the xmit function to
determine if the stack has calculated the checksum for us.

Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
13 years agoGRETH: RX/TX bytes were never increased
Daniel Hellstrom [Thu, 8 Sep 2011 03:14:35 +0000 (03:14 +0000)]
GRETH: RX/TX bytes were never increased

Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
13 years agoipv6: fix a possible double free
Roy Li [Tue, 20 Sep 2011 19:10:16 +0000 (15:10 -0400)]
ipv6: fix a possible double free

When calling snmp6_alloc_dev fails, the snmp6 relevant memory
are freed by snmp6_alloc_dev. Calling in6_dev_finish_destroy
will free these memory twice.

Double free will lead that undefined behavior occurs.

Signed-off-by: Roy Li <rongqing.li@windriver.com>
Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
13 years agoMerge branch 'btrfs-3.0' into for-linus
Chris Mason [Tue, 20 Sep 2011 18:49:29 +0000 (14:49 -0400)]
Merge branch 'btrfs-3.0' into for-linus

13 years agoBtrfs: reserve sufficient space for ioctl clone
Sage Weil [Tue, 20 Sep 2011 18:48:51 +0000 (14:48 -0400)]
Btrfs: reserve sufficient space for ioctl clone

Fix a crash/BUG_ON in the clone ioctl due to insufficient reservation. We
need to reserve space for:

 - adjusting the old extent (possibly splitting it)
 - adding the new extent
 - updating the inode

Signed-off-by: Sage Weil <sage@newdream.net>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
13 years agoMerge branch 'davem.r8169.fixes' of git://violet.fr.zoreil.com/romieu/linux
David S. Miller [Tue, 20 Sep 2011 18:42:45 +0000 (14:42 -0400)]
Merge branch 'davem.r8169.fixes' of git://violet.fr.zoreil.com/romieu/linux

13 years agoMerge git://git.samba.org/sfrench/cifs-2.6
Linus Torvalds [Tue, 20 Sep 2011 17:28:52 +0000 (10:28 -0700)]
Merge git://git.samba.org/sfrench/cifs-2.6

* git://git.samba.org/sfrench/cifs-2.6:
  cifs: Fix broken sec=ntlmv2/i sec option (try #2)
  Fix the conflict between rwpidforward and rw mount options
  CIFS: Fix ERR_PTR dereference in cifs_get_root
  cifs: fix possible memory corruption in CIFSFindNext

13 years agoMerge git://www.linux-watchdog.org/linux-watchdog
Linus Torvalds [Tue, 20 Sep 2011 17:24:46 +0000 (10:24 -0700)]
Merge git://www.linux-watchdog.org/linux-watchdog

* git://www.linux-watchdog.org/linux-watchdog:
  watchdog: Initconst section fixes for watchdog
  watchdog: lantiq: fix watchdogs timeout handling
  watchdog: hpwdt: prevent multiple "NMI occurred" messages
  watchdog: WatchDog Timer Driver Core - use passed watchdog_device

13 years agoMerge branch 'for-linus' of git://github.com/tiwai/sound
Linus Torvalds [Tue, 20 Sep 2011 17:21:52 +0000 (10:21 -0700)]
Merge branch 'for-linus' of git://github.com/tiwai/sound

* 'for-linus' of git://github.com/tiwai/sound:
  ALSA: HDA: Add support for IDT 92HD93
  ALSA: hda/realtek - Fix auto-mute with HP+LO configuration

13 years agoMerge branch 'master' of ssh://infradead/~/public_git/wireless into for-davem
John W. Linville [Tue, 20 Sep 2011 13:19:14 +0000 (09:19 -0400)]
Merge branch 'master' of ssh://infradead/~/public_git/wireless into for-davem

13 years agowatchdog: Initconst section fixes for watchdog
Andi Kleen [Thu, 15 Sep 2011 20:09:51 +0000 (13:09 -0700)]
watchdog: Initconst section fixes for watchdog

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
13 years agowatchdog: lantiq: fix watchdogs timeout handling
John Crispin [Wed, 24 Aug 2011 08:31:39 +0000 (10:31 +0200)]
watchdog: lantiq: fix watchdogs timeout handling

The enable function was using the global timeout variable for local operations.
This resulted in the value of the global variable being corrupted, thus
breaking the code.

Signed-off-by: John Crispin <blogic@openwrt.org>
Signed-off-by: Thomas Langer <thomas.langer@lantiq.com>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Cc: linux-watchdog@vger.kernel.org
Cc: linux-mips@linux-mips.org
13 years agowatchdog: hpwdt: prevent multiple "NMI occurred" messages
Naga Chumbalkar [Tue, 9 Aug 2011 22:27:26 +0000 (22:27 +0000)]
watchdog: hpwdt: prevent multiple "NMI occurred" messages

On platforms with no iCRU support don't print two, (possibly conflicting),
"NMI occurred" messages when the firmware is unable to source the NMI.

Please note that one of the enhancements to the v1.3.0 hpwdt driver is to panic and allow
KDUMP to succeed even on NMIs that are unknown to the platform firmware.

Signed-off-by: Naga Chumbalkar <nagananda.chumbalkar@hp.com>
Reviewed-by: Thomas Mingarelli <thomas.mingarelli@hp.com>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
13 years agowatchdog: WatchDog Timer Driver Core - use passed watchdog_device
H Hartley Sweeten [Wed, 3 Aug 2011 22:38:20 +0000 (15:38 -0700)]
watchdog: WatchDog Timer Driver Core - use passed watchdog_device

Use the passed watchdog_device instead of the static global variable when
testing and setting the status in watchdog_ping, watchdog_start, and
watchdog_stop.  Note that the callers of these functions are actually
passing the static global variable.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
13 years agoALSA: HDA: Add support for IDT 92HD93
David Henningsson [Tue, 20 Sep 2011 07:02:22 +0000 (09:02 +0200)]
ALSA: HDA: Add support for IDT 92HD93

Cc: stable@kernel.org
BugLink: http://bugs.launchpad.net/bugs/854468
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
13 years agoperf events, powerpc: Add POWER7 stalled-cycles-frontend/backend events
Anshuman Khandual [Thu, 8 Sep 2011 21:12:06 +0000 (21:12 +0000)]
perf events, powerpc: Add POWER7 stalled-cycles-frontend/backend events

perf events, powerpc: Add POWER7 stalled-cycles-frontend/backend events

Extent the POWER7 PMU driver with definitions for generic front-end and back-end
stall events.

As explained in Ingo's original comment(8f62242246351b5a4bc0c1f00c0c7003edea128a
), the exact definitions of the stall events are very much processor specific as

different things mean different in their respective instruction pipeline. These
two Power7 raw events are the closest approximation to the concept detailed in
Ingo's comment.

[PERF_COUNT_HW_STALLED_CYCLES_FRONTEND] = 0x100f8, /* GCT_NOSLOT_CYC */
It means cycles when the Global Completion Table has no slots from this thread

[PERF_COUNT_HW_STALLED_CYCLES_BACKEND] = 0x4000a,  /* CMPLU_STALL */
It means no groups completed and GCT not empty for this thread

Signed-off-by: Anshuman Khandual <khandual@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc/powernv: Handle PCI-X/PCIe reset delay
Benjamin Herrenschmidt [Mon, 19 Sep 2011 17:45:07 +0000 (17:45 +0000)]
powerpc/powernv: Handle PCI-X/PCIe reset delay

The firmware doesn't wait after lifting the PCI reset. However it does
timestamp it in the device tree. We use that to ensure we wait long
enough (3s is our current arbitrary setting) from that timestamp to
actually probing the bus.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc/powernv: Implement MSI support for p5ioc2 PCIe
Benjamin Herrenschmidt [Mon, 19 Sep 2011 17:45:06 +0000 (17:45 +0000)]
powerpc/powernv: Implement MSI support for p5ioc2 PCIe

This implements support for MSIs on p5ioc2 PHBs. We only support
MSIs on the PCIe PHBs, not the PCI-X ones as the later hasn't been
properly verified in HW.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc/powernv: Add support for p5ioc2 PCI-X and PCIe
Benjamin Herrenschmidt [Mon, 19 Sep 2011 17:45:05 +0000 (17:45 +0000)]
powerpc/powernv: Add support for p5ioc2 PCI-X and PCIe

This adds support for PCI-X and PCIe on the p5ioc2 IO hub using
OPAL. This includes allocating & setting up TCE tables and config
space access routines.

This also supports fallbacks via RTAS when OPAL is absent, using
legacy TCE format pre-allocated via the device-tree (BML style)

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc/powernv: Machine check and other system interrupts
Benjamin Herrenschmidt [Mon, 19 Sep 2011 17:45:04 +0000 (17:45 +0000)]
powerpc/powernv: Machine check and other system interrupts

OPAL can handle various interrupt for us such as Machine Checks (it
performs all sorts of recovery tasks and passes back control to us with
informations about the error), Hardware Management Interrupts and Softpatch
interrupts.

This wires up the mechanisms and prints out specific informations returned
by HAL when a machine check occurs.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc/powernv: Register and handle OPAL interrupts
Benjamin Herrenschmidt [Mon, 19 Sep 2011 17:45:03 +0000 (17:45 +0000)]
powerpc/powernv: Register and handle OPAL interrupts

We do the minimum which is to "pass" interrupts to HAL, which
makes the console smoother and will allow us to implement
interrupt based completion and console.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc/powernv: Add OPAL ICS backend
Benjamin Herrenschmidt [Mon, 19 Sep 2011 17:45:02 +0000 (17:45 +0000)]
powerpc/powernv: Add OPAL ICS backend

OPAL handles HW access to the various ICS or equivalent chips
for us (with the exception of p5ioc2 based HEA which uses a

different backend) similarily to what RTAS does on pSeries.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc/powernv: Add RTC and NVRAM support plus RTAS fallbacks
Benjamin Herrenschmidt [Mon, 19 Sep 2011 17:45:01 +0000 (17:45 +0000)]
powerpc/powernv: Add RTC and NVRAM support plus RTAS fallbacks

Implements OPAL RTC and NVRAM support and wire all that up to
the powernv platform.

We use RTAS for RTC as a fallback if available. Using RTAS for nvram
is not supported yet, pending some rework/cleanup and generalization
of the pSeries & CHRP code. We also use RTAS fallbacks for power off
and reboot

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc/powernv: Hookup reboot and poweroff functions
Benjamin Herrenschmidt [Mon, 19 Sep 2011 18:28:03 +0000 (18:28 +0000)]
powerpc/powernv: Hookup reboot and poweroff functions

This calls the respective HAL functions, and spin on hal_poll_event()
to ensure the HAL has a chance to communicate with the FSP to trigger
the reboot or shutdown operation

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc/powernv: Support for OPAL console
Benjamin Herrenschmidt [Mon, 19 Sep 2011 17:44:59 +0000 (17:44 +0000)]
powerpc/powernv: Support for OPAL console

This adds a udbg and an hvc console backend for supporting a console
using the OPAL console interfaces.

On OPAL v1 we have hvc0 mapped to whatever console the system was
configured for (network or hvsi serial port) via the service
processor.

On OPAL v2 we have hvcN mapped to the Nth console provided by OPAL
which generally corresponds to:

hvc0 : network console (raw protocol)
hvc1 : serial port S1 (hvsi)
hvc2 : serial port S2 (hvsi)

Note: At this point, early debug console only works with OPAL v1
and shouldn't be enabled in a normal kernel.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc/powernv: Add support for instanciating OPAL v2 from Open Firmware
Benjamin Herrenschmidt [Mon, 19 Sep 2011 18:28:01 +0000 (18:28 +0000)]
powerpc/powernv: Add support for instanciating OPAL v2 from Open Firmware

OPAL v2 is instantiated in a way similar to RTAS using Open Firmware
client interface calls, and the resulting address and entry point are
put in the device-tree

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc/powernv: Basic support for OPAL
Benjamin Herrenschmidt [Mon, 19 Sep 2011 17:44:57 +0000 (17:44 +0000)]
powerpc/powernv: Basic support for OPAL

Add definition of OPAL interfaces along with  the wrappers to call
into OPAL runtime and the early device-tree parsing hook to locate
the OPAL runtime firmware.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc/powernv: Get kernel command line accross OPAL takeover
Benjamin Herrenschmidt [Mon, 19 Sep 2011 17:44:56 +0000 (17:44 +0000)]
powerpc/powernv: Get kernel command line accross OPAL takeover

We stash it in boot_command_line which isn't in BSS and so won't
be overwritten. We then use that as a default cmd_line before
we walk the device-tree.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc/powernv: Add OPAL takeover from PowerVM
Benjamin Herrenschmidt [Mon, 19 Sep 2011 18:27:58 +0000 (18:27 +0000)]
powerpc/powernv: Add OPAL takeover from PowerVM

On machines supporting the OPAL firmware version 1, the system
is initially booted under pHyp. We then use a special hypercall
to verify if OPAL is available and if it is, we then trigger
a "takeover" which disables pHyp and loads the OPAL runtime
firmware, giving control to the kernel in hypervisor mode.

This patch add the necessary code to detect that the OPAL takeover
capability is present when running under PowerVM (aka pHyp) and
perform said takeover to get hypervisor control of the processor.

To perform the takeover, we must first use RTAS (within Open
Firmware runtime environment) to start all processors & threads,
in order to give control to OPAL on all of them. We then call
the takeover hypercall on everybody, OPAL will re-enter the kernel
main entry point passing it a flat device-tree.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc/powernv: Add CPU hotplug support
Benjamin Herrenschmidt [Mon, 19 Sep 2011 17:44:54 +0000 (17:44 +0000)]
powerpc/powernv: Add CPU hotplug support

Unplugged CPU go into NAP mode in a loop until woken up

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agoof: Change logic to overwrite cmd_line with CONFIG_CMDLINE
Benjamin Herrenschmidt [Mon, 19 Sep 2011 18:50:15 +0000 (18:50 +0000)]
of: Change logic to overwrite cmd_line with CONFIG_CMDLINE

We used to overwrite with CONFIG_CMDLINE if we found a chosen
node but failed to get bootargs out of it or they were empty,
unless CONFIG_CMDLINE_FORCE is set.

Instead change that to overwrite if "data" is non empty after
the bootargs check. It allows arch code to have other mechanisms
to retrieve the command line prior to parsing the device-tree.

Note: CONFIG_CMDLINE_FORCE case should ideally be handled elsewhere
as it won't work as it-is if the device-tree has no /chosen node

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
CC: devicetree-discuss@lists-ozlabs.org
CC: Grant Likely <grant.likely@secretlab.ca>
Acked-by: Grant Likely <grant.likely@secretlab.ca>
13 years agopowerpc: Add skeleton PowerNV platform
Benjamin Herrenschmidt [Mon, 19 Sep 2011 17:44:52 +0000 (17:44 +0000)]
powerpc: Add skeleton PowerNV platform

This adds a skeletton for the new Power "Non Virtualized"
platform which will be used by machines supporting running
without an hypervisor, for example in order to run KVM.

These machines will be using a new firmware called OPAL
for which the support will be provided by later patches.

The PowerNV platform is intended to be also usable under
the BML environment used internally for early CPU bringup
which is why the code also supports using RTAS instead of
OPAL in various places.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc/powernv: Don't clobber r9 in relative_toc()
Benjamin Herrenschmidt [Mon, 19 Sep 2011 17:44:51 +0000 (17:44 +0000)]
powerpc/powernv: Don't clobber r9 in relative_toc()

With OPAL, r8 and r9 will be used to pass the OPAL base and entry
for debugging purposes (those informations are also in the
device-tree). We don't want to clobber those registers that
early.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc/pci: Call pcie_bus_configure_settings()
Benjamin Herrenschmidt [Mon, 19 Sep 2011 17:44:50 +0000 (17:44 +0000)]
powerpc/pci: Call pcie_bus_configure_settings()

This new function is used to properly setup the PCI Express Max Payload Size
(and in some circumstances Max Read Request Size).

Some systems will not operate properly if these aren't set correctly and
the firmware doesn't always do it.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc/smp: More generic support for "soft hotplug"
Benjamin Herrenschmidt [Mon, 19 Sep 2011 17:44:49 +0000 (17:44 +0000)]
powerpc/smp: More generic support for "soft hotplug"

This adds more generic support for doing CPU hotplug with a simple
idle loop and no actual reset of the processors. The generic
smp_generic_kick_cpu() does the hotplug bringup trick if the PACA
shows that the CPU has already been started at boot and we provide
an accessor for the CPU state.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc/udbg: Fix Kconfig entry for avoiding 44x early debug with KVM
Benjamin Herrenschmidt [Mon, 19 Sep 2011 17:44:48 +0000 (17:44 +0000)]
powerpc/udbg: Fix Kconfig entry for avoiding 44x early debug with KVM

It was preventing the global early debug selection whenever KVM was enabled
instead of only preventing the 440 specific one.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agohvcs: Ensure page aligned partner info buffer
Brian King [Tue, 13 Sep 2011 11:22:51 +0000 (11:22 +0000)]
hvcs: Ensure page aligned partner info buffer

The Power platform requires the partner info buffer to be page aligned
otherwise it will fail the partner info hcall with H_PARAMETER. Switch
from using kmalloc to allocate this buffer to __get_free_page to ensure
page alignment.

Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc: Fix deadlock in icswx code
Anton Blanchard [Wed, 14 Sep 2011 09:43:15 +0000 (09:43 +0000)]
powerpc: Fix deadlock in icswx code

The icswx code introduced an A-B B-A deadlock:

     CPU0                    CPU1
     ----                    ----
lock(&anon_vma->mutex);
                             lock(&mm->mmap_sem);
                             lock(&anon_vma->mutex);
lock(&mm->mmap_sem);

Instead of using the mmap_sem to keep mm_users constant, take the
page table spinlock.

Signed-off-by: Anton Blanchard <anton@samba.org>
Cc: <stable@kernel.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc: Fix oops when echoing bad values to /sys/devices/system/memory/probe
Anton Blanchard [Wed, 10 Aug 2011 20:44:24 +0000 (20:44 +0000)]
powerpc: Fix oops when echoing bad values to /sys/devices/system/memory/probe

If we echo an address the hypervisor doesn't like to
/sys/devices/system/memory/probe we oops the box:

# echo 0x10000000000 > /sys/devices/system/memory/probe

kernel BUG at arch/powerpc/mm/hash_utils_64.c:541!

The backtrace is:

create_section_mapping
arch_add_memory
add_memory
memory_probe_store
sysdev_class_store
sysfs_write_file
vfs_write
SyS_write

In create_section_mapping we BUG if htab_bolt_mapping returned
an error. A better approach is to return an error which will
propagate back to userspace.

Rerunning the test with this patch applied:

# echo 0x10000000000 > /sys/devices/system/memory/probe
-bash: echo: write error: Invalid argument

Signed-off-by: Anton Blanchard <anton@samba.org>
Cc: stable@kernel.org
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc: Coding style cleanups
Anton Blanchard [Wed, 10 Aug 2011 20:44:23 +0000 (20:44 +0000)]
powerpc: Coding style cleanups

While converting code to use for_each_node_by_type I noticed a
number of coding style issues.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc: Use for_each_node_by_type instead of open coding it
Anton Blanchard [Wed, 10 Aug 2011 20:44:22 +0000 (20:44 +0000)]
powerpc: Use for_each_node_by_type instead of open coding it

Use for_each_node_by_type instead of open coding it.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc/numa: Remove double of_node_put in hot_add_node_scn_to_nid
Anton Blanchard [Wed, 10 Aug 2011 20:44:21 +0000 (20:44 +0000)]
powerpc/numa: Remove double of_node_put in hot_add_node_scn_to_nid

During memory hotplug testing, I got the following warning:

ERROR: Bad of_node_put() on /memory@0

of_node_release
kref_put
of_node_put
of_find_node_by_type
hot_add_node_scn_to_nid
hot_add_scn_to_nid
memory_add_physaddr_to_nid
...

of_find_node_by_type() loop does the of_node_put for us so we only
need the handle the case where we terminate the loop early.

As suggested by Stephen Rothwell we can do the of_node_put
unconditionally outside of the loop since of_node_put handles a
NULL argument fine.

Signed-off-by: Anton Blanchard <anton@samba.org>
Cc: stable@kernel.org
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc/numa: Remove duplicate RECLAIM_DISTANCE definition
Anton Blanchard [Sun, 24 Jul 2011 16:33:16 +0000 (16:33 +0000)]
powerpc/numa: Remove duplicate RECLAIM_DISTANCE definition

We have two identical definitions of RECLAIM_DISTANCE, looks like
the patch got applied twice. Remove one.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc/numa: Disable NEWIDLE balancing at node level
Anton Blanchard [Sun, 24 Jul 2011 16:33:15 +0000 (16:33 +0000)]
powerpc/numa: Disable NEWIDLE balancing at node level

On big POWER7 boxes we see large amounts of CPU time in system
processes like workqueue and watchdog kernel threads.

We currently rebalance the entire machine each time a task goes
idle and this is very expensive on large machines. Disable newidle
balancing at the node level and rely on the scheduler tick to
rebalance across nodes.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc/numa: Increase SD_NODES_PER_DOMAIN to 32.
Anton Blanchard [Sun, 24 Jul 2011 16:33:14 +0000 (16:33 +0000)]
powerpc/numa: Increase SD_NODES_PER_DOMAIN to 32.

The largest POWER7 boxes have 32 nodes. SD_NODES_PER_DOMAIN groups
nodes into chunks of 16 and adds a global balancing domain
(SD_ALLNODES) above it.

If we bump SD_NODES_PER_DOMAIN to 32, then we avoid this extra
level of balancing on our largest boxes.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agosched: Allow SD_NODES_PER_DOMAIN to be overridden
Anton Blanchard [Sun, 24 Jul 2011 16:33:13 +0000 (16:33 +0000)]
sched: Allow SD_NODES_PER_DOMAIN to be overridden

We want to override the default value of SD_NODES_PER_DOMAIN on ppc64,
so move it into linux/topology.h.

Signed-off-by: Anton Blanchard <anton@samba.org>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
13 years agopowerpc/numa: Enable SD_WAKE_AFFINE in node definition
Anton Blanchard [Sun, 24 Jul 2011 16:33:12 +0000 (16:33 +0000)]
powerpc/numa: Enable SD_WAKE_AFFINE in node definition

When chasing a performance issue on ppc64, I noticed tasks
communicating via a pipe would often end up on different nodes.

It turns out SD_WAKE_AFFINE is not set in our node defition. Commit
9fcd18c9e63e (sched: re-tune balancing) enabled SD_WAKE_AFFINE
in the node definition for x86 and we need a similar change for
ppc64.

I used lmbench lat_ctx and perf bench pipe to verify this fix. Each
benchmark was run 10 times and the average taken.

lmbench lat_ctx:

before:  66565 ops/sec
after:  204700 ops/sec

3.1x faster

perf bench pipe:

before: 5.6570 usecs
after:  1.3470 usecs

4.2x faster

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>