13 Sep, 2013

1 commit

  • Unlike global OOM handling, memory cgroup code will invoke the OOM killer
    in any OOM situation because it has no way of telling faults occuring in
    kernel context - which could be handled more gracefully - from
    user-triggered faults.

    Pass a flag that identifies faults originating in user space from the
    architecture-specific fault handlers to generic code so that memcg OOM
    handling can be improved.

    Signed-off-by: Johannes Weiner
    Reviewed-by: Michal Hocko
    Cc: David Rientjes
    Cc: KAMEZAWA Hiroyuki
    Cc: azurIt
    Cc: KOSAKI Motohiro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Johannes Weiner
     

10 Jul, 2013

1 commit

  • A few remaining architectures directly kill the page faulting task in an
    out of memory situation. This is usually not a good idea since that
    task might not even use a significant amount of memory and so may not be
    the optimal victim to resolve the situation.

    Since 2.6.29's 1c0fe6e ("mm: invoke oom-killer from page fault") there
    is a hook that architecture page fault handlers are supposed to call to
    invoke the OOM killer and let it pick the right task to kill. Convert
    the remaining architectures over to this hook.

    To have the previous behavior of simply taking out the faulting task the
    vm.oom_kill_allocating_task sysctl can be set to 1.

    Signed-off-by: Johannes Weiner
    Reviewed-by: Michal Hocko
    Cc: KAMEZAWA Hiroyuki
    Acked-by: David Rientjes
    Acked-by: Vineet Gupta [arch/arc bits]
    Cc: James Hogan
    Cc: David Howells
    Cc: Jonas Bonn
    Cc: Chen Liqin
    Cc: Lennox Wu
    Cc: Chris Metcalf
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Johannes Weiner
     

04 Jul, 2013

3 commits

  • Prepare for removing num_physpages and simplify mem_init().

    Signed-off-by: Jiang Liu
    Cc: David Howells
    Cc: Koichi Yasutake
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jiang Liu
     
  • Concentrate code to modify totalram_pages into the mm core, so the arch
    memory initialized code doesn't need to take care of it. With these
    changes applied, only following functions from mm core modify global
    variable totalram_pages: free_bootmem_late(), free_all_bootmem(),
    free_all_bootmem_node(), adjust_managed_page_count().

    With this patch applied, it will be much more easier for us to keep
    totalram_pages and zone->managed_pages in consistence.

    Signed-off-by: Jiang Liu
    Acked-by: David Howells
    Cc: "H. Peter Anvin"
    Cc: "Michael S. Tsirkin"
    Cc:
    Cc: Arnd Bergmann
    Cc: Catalin Marinas
    Cc: Chris Metcalf
    Cc: Geert Uytterhoeven
    Cc: Ingo Molnar
    Cc: Jeremy Fitzhardinge
    Cc: Jianguo Wu
    Cc: Joonsoo Kim
    Cc: Kamezawa Hiroyuki
    Cc: Konrad Rzeszutek Wilk
    Cc: Marek Szyprowski
    Cc: Mel Gorman
    Cc: Michel Lespinasse
    Cc: Minchan Kim
    Cc: Rik van Riel
    Cc: Rusty Russell
    Cc: Tang Chen
    Cc: Tejun Heo
    Cc: Thomas Gleixner
    Cc: Wen Congyang
    Cc: Will Deacon
    Cc: Yasuaki Ishimatsu
    Cc: Yinghai Lu
    Cc: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jiang Liu
     
  • Change signature of free_reserved_area() according to Russell King's
    suggestion to fix following build warnings:

    arch/arm/mm/init.c: In function 'mem_init':
    arch/arm/mm/init.c:603:2: warning: passing argument 1 of 'free_reserved_area' makes integer from pointer without a cast [enabled by default]
    free_reserved_area(__va(PHYS_PFN_OFFSET), swapper_pg_dir, 0, NULL);
    ^
    In file included from include/linux/mman.h:4:0,
    from arch/arm/mm/init.c:15:
    include/linux/mm.h:1301:22: note: expected 'long unsigned int' but argument is of type 'void *'
    extern unsigned long free_reserved_area(unsigned long start, unsigned long end,

    mm/page_alloc.c: In function 'free_reserved_area':
    >> mm/page_alloc.c:5134:3: warning: passing argument 1 of 'virt_to_phys' makes pointer from integer without a cast [enabled by default]
    In file included from arch/mips/include/asm/page.h:49:0,
    from include/linux/mmzone.h:20,
    from include/linux/gfp.h:4,
    from include/linux/mm.h:8,
    from mm/page_alloc.c:18:
    arch/mips/include/asm/io.h:119:29: note: expected 'const volatile void *' but argument is of type 'long unsigned int'
    mm/page_alloc.c: In function 'free_area_init_nodes':
    mm/page_alloc.c:5030:34: warning: array subscript is below array bounds [-Warray-bounds]

    Also address some minor code review comments.

    Signed-off-by: Jiang Liu
    Reported-by: Arnd Bergmann
    Cc: "H. Peter Anvin"
    Cc: "Michael S. Tsirkin"
    Cc:
    Cc: Catalin Marinas
    Cc: Chris Metcalf
    Cc: David Howells
    Cc: Geert Uytterhoeven
    Cc: Ingo Molnar
    Cc: Jeremy Fitzhardinge
    Cc: Jianguo Wu
    Cc: Joonsoo Kim
    Cc: Kamezawa Hiroyuki
    Cc: Konrad Rzeszutek Wilk
    Cc: Marek Szyprowski
    Cc: Mel Gorman
    Cc: Michel Lespinasse
    Cc: Minchan Kim
    Cc: Rik van Riel
    Cc: Rusty Russell
    Cc: Tang Chen
    Cc: Tejun Heo
    Cc: Thomas Gleixner
    Cc: Wen Congyang
    Cc: Will Deacon
    Cc: Yasuaki Ishimatsu
    Cc: Yinghai Lu
    Cc: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jiang Liu
     

30 Apr, 2013

1 commit


14 Dec, 2012

1 commit

  • Pull trivial branch from Jiri Kosina:
    "Usual stuff -- comment/printk typo fixes, documentation updates, dead
    code elimination."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (39 commits)
    HOWTO: fix double words typo
    x86 mtrr: fix comment typo in mtrr_bp_init
    propagate name change to comments in kernel source
    doc: Update the name of profiling based on sysfs
    treewide: Fix typos in various drivers
    treewide: Fix typos in various Kconfig
    wireless: mwifiex: Fix typo in wireless/mwifiex driver
    messages: i2o: Fix typo in messages/i2o
    scripts/kernel-doc: check that non-void fcts describe their return value
    Kernel-doc: Convention: Use a "Return" section to describe return values
    radeon: Fix typo and copy/paste error in comments
    doc: Remove unnecessary declarations from Documentation/accounting/getdelays.c
    various: Fix spelling of "asynchronous" in comments.
    Fix misspellings of "whether" in comments.
    eisa: Fix spelling of "asynchronous".
    various: Fix spelling of "registered" in comments.
    doc: fix quite a few typos within Documentation
    target: iscsi: fix comment typos in target/iscsi drivers
    treewide: fix typo of "suport" in various comments and Kconfig
    treewide: fix typo of "suppport" in various comments
    ...

    Linus Torvalds
     

12 Dec, 2012

1 commit

  • Commit d065bd810b6deb67d4897a14bfe21f8eb526ba99
    (mm: retry page fault when blocking on disk transfer) and
    commit 37b23e0525d393d48a7d59f870b3bc061a30ccdb
    (x86,mm: make pagefault killable)

    The above commits introduced changes into the x86 pagefault handler
    for making the page fault handler retryable as well as killable.

    These changes reduce the mmap_sem hold time, which is crucial
    during OOM killer invocation.

    Port these changes to mn10300.

    Signed-off-by: Kautuk Consul
    Signed-off-by: David Howells

    Kautuk Consul
     

06 Dec, 2012

1 commit


12 Jul, 2012

1 commit

  • Fix the warnings:

    arch/mn10300/mm/dma-alloc.c: At top level:
    arch/mn10300/mm/dma-alloc.c:63:1: warning: data definition has no type or storage class [enabled by default]
    arch/mn10300/mm/dma-alloc.c:63:1: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL' [-Wimplicit-int]
    arch/mn10300/mm/dma-alloc.c:63:1: warning: parameter names (without types) in function declaration [enabled by default]
    arch/mn10300/mm/dma-alloc.c:75:1: warning: data definition has no type or storage class [enabled by default]
    arch/mn10300/mm/dma-alloc.c:75:1: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL' [-Wimplicit-int]
    arch/mn10300/mm/dma-alloc.c:75:1: warning: parameter names (without types) in function declaration [enabled by default]

    Signed-off-by: Geert Uytterhoeven
    Cc: David Howells
    Cc: Koichi Yasutake
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     

29 Mar, 2012

1 commit


27 Jul, 2011

1 commit

  • This allows us to move duplicated code in
    (atomic_inc_not_zero() for now) to

    Signed-off-by: Arun Sharma
    Reviewed-by: Eric Dumazet
    Cc: Ingo Molnar
    Cc: David Miller
    Cc: Eric Dumazet
    Acked-by: Mike Frysinger
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arun Sharma
     

08 Jun, 2011

1 commit

  • One of the kernel debugger cacheflush variants escaped proper testing. Two of
    the labels are wrong, being derived from the code that was copied to construct
    the variant.

    The first label results in the following assembler message:

    AS arch/mn10300/mm/cache-dbg-flush-by-reg.o
    arch/mn10300/mm/cache-dbg-flush-by-reg.S: Assembler messages:
    arch/mn10300/mm/cache-dbg-flush-by-reg.S:123: Error: symbol `debugger_local_cache_flushinv_no_dcache' is already defined

    And the second label results in the following linker message:

    arch/mn10300/mm/built-in.o:(.text+0x1d39): undefined reference to `mn10300_local_icache_inv_range_reg_end'
    arch/mn10300/mm/built-in.o:(.text+0x1d39): relocation truncated to fit: R_MN10300_PCREL16 against undefined symbol `mn10300_local_icache_inv_range_reg_end'

    To test this file the following configuration pieces must be set:

    CONFIG_AM34=y
    CONFIG_MN10300_CACHE_WBACK=y
    CONFIG_MN10300_DEBUGGER_CACHE_FLUSH_BY_REG=y
    CONFIG_MN10300_CACHE_MANAGE_BY_REG=y
    CONFIG_AM34_HAS_CACHE_SNOOP=n

    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    David Howells
     

25 May, 2011

2 commits

  • Adapt to the new API.

    We plan to remove old cpumask APIs later. Thus this patch converts them
    into the new one.

    Signed-off-by: KOSAKI Motohiro
    Cc: David Howells
    Cc: Koichi Yasutake
    Cc: Hugh Dickins
    Cc: Chris Metcalf
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    KOSAKI Motohiro
     
  • Fold all the mmu_gather rework patches into one for submission

    Signed-off-by: Peter Zijlstra
    Reported-by: Hugh Dickins
    Cc: Benjamin Herrenschmidt
    Cc: David Miller
    Cc: Martin Schwidefsky
    Cc: Russell King
    Cc: Paul Mundt
    Cc: Jeff Dike
    Cc: Richard Weinberger
    Cc: Tony Luck
    Cc: KAMEZAWA Hiroyuki
    Cc: Mel Gorman
    Cc: KOSAKI Motohiro
    Cc: Nick Piggin
    Cc: Namhyung Kim
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Peter Zijlstra
     

19 Mar, 2011

3 commits

  • Create generic kernel debugger hooks in the MN10300 arch and make gdbstub use
    them. This is a preparation for KGDB support.

    Signed-off-by: David Howells

    David Howells
     
  • Create general kernel debugger cache flushing for MN10300 and get rid of the
    old stuff that gdbstub was using.

    Signed-off-by: David Howells

    David Howells
     
  • The icache invalidate functions should disable the icache on AM33 and wait for
    it to quiesce before attempting to invalidate it, and should then wait for it
    to quiesce again before reenabling it, but on AM34 they should invalidate
    directly. The same goes for the dcache invalidation, but this isn't used much.

    Whilst we're at it, this can be wrapped in assembler macros to remove duplicate
    code.

    The AM33 manual states that:

    An operation that invalidates the cache, switches the writing mode, or
    changes the way mode must be performed after disabling the cache,
    checking the busy bit, and confirming that the cache is not in
    operation.

    for the dcache [sec 2.8.3.2.1]. This is not stated so for the icache [sec
    2.8.3.1.1] but the example code there suggests that it is.

    Whilst the AM34 manual states that the cache must be disabled for both the
    icache [sec 1.8.3.2.1] and the dcache [sec 1.8.3.2.1], the Panasonic hardware
    engineers say the manual is wrong and that disabling the caches for
    invalidation is wrong.

    Furthermore, they say that disabling the caches on the AM34 whilst running an
    SMP kernel can lead to incoherency between the various CPU caches and should
    thus be avoided.

    Signed-off-by: David Howells

    David Howells
     

14 Mar, 2011

1 commit


28 Oct, 2010

17 commits


02 Oct, 2010

1 commit

  • flush_icache_range() is given virtual addresses to describe the region. It
    deals with these by attempting to translate them through the current set of
    page tables.

    This is fine for userspace memory and vmalloc()'d areas as they are governed by
    page tables. However, since the regions above 0x80000000 aren't translated
    through the page tables by the MMU, the kernel doesn't bother to set up page
    tables for them (see paging_init()).

    This means flush_icache_range() as it stands cannot be used to flush regions of
    the VM area between 0x80000000 and 0x9fffffff where the kernel resides if the
    data cache is operating in WriteBack mode.

    To fix this, make flush_icache_range() first check for addresses in the upper
    half of VM space and deal with them appropriately, before dealing with any
    range in the page table mapped area.

    Ordinarily, this is not a problem, but it has the capacity to make kprobes and
    kgdb malfunction. It should not affect gdbstub, signal frame setup or module
    loading as gdb has its own flush functions, and the others take place in the
    page table mapped area only.

    Signed-off-by: David Howells
    Acked-by: Akira Takeuchi
    Signed-off-by: Linus Torvalds

    David Howells
     

29 Sep, 2010

1 commit

  • When caching is disabled on the MN10300 arch, the sys_cacheflush()
    function is removed by conditional stuff in the makefiles, but is still
    referred to by the syscall table.

    Provide a null version that just returns 0 when caching is disabled (or
    -EINVAL if the arguments are silly).

    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    David Howells
     

24 Aug, 2010

1 commit

  • dev_name always dereferences its argument, so it should not be called if
    the argument is NULL. The function indeed later tests the argument for
    being NULL.

    The semantic match that finds this problem is as follows:
    (http://coccinelle.lip6.fr/)

    //
    @@
    expression dev,E;
    @@

    *dev_name(dev)
    ... when != dev = E
    (
    *dev == NULL
    |
    *dev != NULL
    )
    //

    Signed-off-by: Julia Lawall
    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    Julia Lawall
     

05 Jun, 2010

1 commit

  • As explained in commit 1c0fe6e3bd ("mm: invoke oom-killer from page
    fault") , we want to call the architecture independent oom killer when
    getting an unexplained OOM from handle_mm_fault, rather than simply
    killing current.

    Signed-off-by: Nick Piggin
    Acked-by: David Rientjes
    Acked-by: David Howells
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nick Piggin