25 Sep, 2013

1 commit

  • The ASID is represented as an unsigned int in mm_context_t and we
    currently use the mmid assembler macro to access this element of the
    struct. This should be accessed with a register of 32-bit width. If
    the incorrect register width is used the ASID will be returned in
    bits[32:63] of the register when running under big-endian.

    Fix a use of the mmid macro in tlb.S to use a 32-bit access.

    Signed-off-by: Will Deacon
    Signed-off-by: Matthew Leach
    Signed-off-by: Catalin Marinas

    Matthew Leach
     

20 Sep, 2013

1 commit


13 Sep, 2013

2 commits

  • 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
     
  • Kernel faults are expected to handle OOM conditions gracefully (gup,
    uaccess etc.), so they should never invoke the OOM killer. Reserve this
    for faults triggered in user context when it is the only option.

    Most architectures already do this, fix up the remaining few.

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

    Johannes Weiner
     

12 Sep, 2013

1 commit

  • Currently hugepage migration works well only for pmd-based hugepages
    (mainly due to lack of testing,) so we had better not enable migration of
    other levels of hugepages until we are ready for it.

    Some users of hugepage migration (mbind, move_pages, and migrate_pages) do
    page table walk and check pud/pmd_huge() there, so they are safe. But the
    other users (softoffline and memory hotremove) don't do this, so without
    this patch they can try to migrate unexpected types of hugepages.

    To prevent this, we introduce hugepage_migration_support() as an
    architecture dependent check of whether hugepage are implemented on a pmd
    basis or not. And on some architecture multiple sizes of hugepages are
    available, so hugepage_migration_support() also checks hugepage size.

    Signed-off-by: Naoya Horiguchi
    Cc: Andi Kleen
    Cc: Hillf Danton
    Cc: Wanpeng Li
    Cc: Mel Gorman
    Cc: Hugh Dickins
    Cc: KOSAKI Motohiro
    Cc: Michal Hocko
    Cc: Rik van Riel
    Cc: "Aneesh Kumar K.V"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Naoya Horiguchi
     

11 Sep, 2013

1 commit

  • Pull device tree core updates from Grant Likely:
    "Generally minor changes. A bunch of bug fixes, particularly for
    initialization and some refactoring. Most notable change if feeding
    the entire flattened tree into the random pool at boot. May not be
    significant, but shouldn't hurt either"

    Tim Bird questions whether the boot time cost of the random feeding may
    be noticeable. And "add_device_randomness()" is definitely not some
    speed deamon of a function.

    * tag 'devicetree-for-linus' of git://git.secretlab.ca/git/linux:
    of/platform: add error reporting to of_amba_device_create()
    irq/of: Fix comment typo for irq_of_parse_and_map
    of: Feed entire flattened device tree into the random pool
    of/fdt: Clean up casting in unflattening path
    of/fdt: Remove duplicate memory clearing on FDT unflattening
    gpio: implement gpio-ranges binding document fix
    of: call __of_parse_phandle_with_args from of_parse_phandle
    of: introduce of_parse_phandle_with_fixed_args
    of: move of_parse_phandle()
    of: move documentation of of_parse_phandle_with_args
    of: Fix missing memory initialization on FDT unflattening
    of: consolidate definition of early_init_dt_alloc_memory_arch()
    of: Make of_get_phy_mode() return int i.s.o. const int
    include: dt-binding: input: create a DT header defining key codes.
    of/platform: Staticize of_platform_device_create_pdata()
    of: Specify initrd location using 64-bit
    dt: Typo fix
    OF: make of_property_for_each_{u32|string}() use parameters if OF is not enabled

    Linus Torvalds
     

03 Sep, 2013

1 commit

  • TCR.TBI0 can be used to cause hardware address translation to ignore the
    top byte of userspace virtual addresses. Whilst not especially useful in
    standard C programs, this can be used by JITs to `tag' pointers with
    various pieces of metadata.

    This patch enables this bit for AArch64 Linux, and adds a new file to
    Documentation/arm64/ which describes some potential caveats when using
    tagged virtual addresses.

    Signed-off-by: Will Deacon
    Signed-off-by: Catalin Marinas

    Will Deacon
     

02 Sep, 2013

1 commit


28 Aug, 2013

1 commit

  • The map_mem() function limits the current memblock limit to PGDIR_SIZE
    (the initial swapper_pg_dir mapping) to avoid create_mapping()
    allocating memory from unmapped areas. However, if the first block is
    within PGDIR_SIZE and not ending on a PMD_SIZE boundary, when 4K page
    configuration is enabled, create_mapping() will try to allocate a pte
    page. Such page may be returned by memblock_alloc() from the end of such
    bank (or any subsequent bank within PGDIR_SIZE) which is not mapped yet.

    The patch limits the current memblock limit to the aligned end of the
    first bank and gradually increases it as more memory is mapped. It also
    ensures that the start of the first bank is aligned to PMD_SIZE to avoid
    pte page allocation for this mapping.

    Signed-off-by: Catalin Marinas
    Reported-by: "Leizhen (ThunderTown, Euler)"
    Tested-by: "Leizhen (ThunderTown, Euler)"

    Catalin Marinas
     

24 Jul, 2013

1 commit

  • On some PAE architectures, the entire range of physical memory could reside
    outside the 32-bit limit. These systems need the ability to specify the
    initrd location using 64-bit numbers.

    This patch globally modifies the early_init_dt_setup_initrd_arch() function to
    use 64-bit numbers instead of the current unsigned long.

    There has been quite a bit of debate about whether to use u64 or phys_addr_t.
    It was concluded to stick to u64 to be consistent with rest of the device
    tree code. As summarized by Geert, "The address to load the initrd is decided
    by the bootloader/user and set at that point later in time. The dtb should not
    be tied to the kernel you are booting"

    More details on the discussion can be found here:
    https://lkml.org/lkml/2013/6/20/690
    https://lkml.org/lkml/2012/9/13/544

    Signed-off-by: Santosh Shilimkar
    Acked-by: Rob Herring
    Acked-by: Vineet Gupta
    Acked-by: Jean-Christophe PLAGNIOL-VILLARD
    Signed-off-by: Grant Likely

    Santosh Shilimkar
     

19 Jul, 2013

1 commit

  • On arm64, cache maintenance faults appear as data aborts with the CM
    bit set in the ESR. The WnR bit, usually used to distinguish between
    faulting loads and stores, always reads as 1 and (slightly confusingly)
    the instructions are treated as reads by the architecture.

    This patch fixes our fault handling code to treat cache maintenance
    faults in the same way as loads.

    Signed-off-by: Will Deacon
    Cc:
    Signed-off-by: Catalin Marinas

    Will Deacon
     

11 Jul, 2013

1 commit

  • Since all architectures have been converted to use vm_unmapped_area(),
    there is no remaining use for the free_area_cache.

    Signed-off-by: Michel Lespinasse
    Acked-by: Rik van Riel
    Cc: "James E.J. Bottomley"
    Cc: "Luck, Tony"
    Cc: Benjamin Herrenschmidt
    Cc: David Howells
    Cc: Helge Deller
    Cc: Ivan Kokshaysky
    Cc: Matt Turner
    Cc: Paul Mackerras
    Cc: Richard Henderson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     

04 Jul, 2013

6 commits

  • Prepare for removing num_physpages and simplify mem_init().

    Signed-off-by: Jiang Liu
    Cc: Michal Simek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jiang Liu
     
  • Prepare for removing num_physpages and simplify mem_init().

    Signed-off-by: Jiang Liu
    Cc: Russell King
    Cc: Catalin Marinas
    Cc: Will Deacon
    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
     
  • Use free_reserved_area() to poison initmem memory pages and kill
    poison_init_mem() on ARM64.

    Signed-off-by: Jiang Liu
    Acked-by: Catalin Marinas
    Cc: Will Deacon
    Cc: "H. Peter Anvin"
    Cc: "Michael S. Tsirkin"
    Cc:
    Cc: Arnd Bergmann
    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: Yasuaki Ishimatsu
    Cc: Yinghai Lu
    Cc: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jiang Liu
     
  • Address more review comments from last round of code review.
    1) Enhance free_reserved_area() to support poisoning freed memory with
    pattern '0'. This could be used to get rid of poison_init_mem()
    on ARM64.
    2) A previous patch has disabled memory poison for initmem on s390
    by mistake, so restore to the original behavior.
    3) Remove redundant PAGE_ALIGN() when calling free_reserved_area().

    Signed-off-by: Jiang Liu
    Cc: Geert Uytterhoeven
    Cc: "H. Peter Anvin"
    Cc: "Michael S. Tsirkin"
    Cc:
    Cc: Arnd Bergmann
    Cc: Catalin Marinas
    Cc: Chris Metcalf
    Cc: David Howells
    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
     

01 Jul, 2013

1 commit

  • …ux into upstream-hugepages

    * 'for-next/hugepages' of git://git.linaro.org/people/stevecapper/linux:
    ARM64: mm: THP support.
    ARM64: mm: Raise MAX_ORDER for 64KB pages and THP.
    ARM64: mm: HugeTLB support.
    ARM64: mm: Move PTE_PROT_NONE bit.
    ARM64: mm: Make PAGE_NONE pages read only and no-execute.
    ARM64: mm: Restore memblock limit when map_mem finished.
    mm: thp: Correct the HPAGE_PMD_ORDER check.
    x86: mm: Remove general hugetlb code from x86.
    mm: hugetlb: Copy general hugetlb code from x86 to mm.
    x86: mm: Remove x86 version of huge_pmd_share.
    mm: hugetlb: Copy huge_pmd_share from x86 to mm.

    Conflicts:
    arch/arm64/Kconfig
    arch/arm64/include/asm/pgtable-hwdef.h
    arch/arm64/include/asm/pgtable.h

    Catalin Marinas
     

14 Jun, 2013

2 commits

  • Add huge page support to ARM64, different huge page sizes are
    supported depending on the size of normal pages:

    PAGE_SIZE is 4KB:
    2MB - (pmds) these can be allocated at any time.
    1024MB - (puds) usually allocated on bootup with the command line
    with something like: hugepagesz=1G hugepages=6

    PAGE_SIZE is 64KB:
    512MB - (pmds) usually allocated on bootup via command line.

    Signed-off-by: Steve Capper
    Acked-by: Catalin Marinas

    Steve Capper
     
  • In paging_init the memblock limit is set to restrict any addresses
    returned by early_alloc to fit within the initial direct kernel
    mapping in swapper_pg_dir. This allows map_mem to allocate puds,
    pmds and ptes from the initial direct kernel mapping.

    The limit stays low after paging_init() though, meaning any
    bootmem allocations will be from a restricted subset of memory.
    Gigabyte huge pages, for instance, are normally allocated from
    bootmem as their order (18) is too large for the default buddy
    allocator (MAX_ORDER = 11).

    This patch restores the memblock limit when map_mem has finished,
    allowing gigabyte huge pages (and other objects) to be allocated
    from all of bootmem.

    Signed-off-by: Steve Capper
    Acked-by: Catalin Marinas

    Steve Capper
     

08 Jun, 2013

3 commits


25 May, 2013

1 commit


14 May, 2013

1 commit

  • The format of the lower 32-bits of the 64-bit operand to 'dc cisw' is
    unchanged from ARMv7 architecture and the upper bits are RES0. This
    implies that the 'way' field of the operand of 'dc cisw' occupies the
    bit-positions [31 .. (32-A)]. Due to the use of 64-bit extended operands
    to 'clz', the existing implementation of __flush_dcache_all is incorrectly
    placing the 'way' field in the bit-positions [63 .. (64-A)].

    Signed-off-by: Sukanto Ghosh
    Tested-by: Anup Patel
    Signed-off-by: Catalin Marinas
    Cc: stable@vger.kernel.org

    Sukanto Ghosh
     

13 May, 2013

1 commit

  • During boot, we take the debug OS lock before interrupts are enabled.
    This is required to prevent clearing of PSTATE.D on the interrupt entry
    path, which could result in spurious debug exceptions before we've got
    round to resetting things like the hardware breakpoints registers to a
    sane state.

    A problem with this approach is that taking the OS lock prevents an
    external JTAG debugger from debugging the system, which is especially
    irritating during boot, where JTAG debugging can be most useful.

    This patch clears mdscr_el1 rather than taking the lock, clearing the
    MDE and KDE bits and preventing self-hosted hardware debug exceptions
    from occurring.

    Tested-by: Mark Rutland
    Signed-off-by: Will Deacon
    Signed-off-by: Catalin Marinas
    Cc: stable@vger.kernel.org

    Will Deacon
     

09 May, 2013

1 commit

  • Pull arm64 update from Catalin Marinas:

    - Since drivers/irqchip/irq-gic.c no longer has dependencies on arm32
    specifics (the 'gic' branch merged), it can be enabled on arm64.

    - Enable arm64 support for poweroff/restart (for code under
    drivers/power/reset/).

    - Fixes (dts file, exception handling, bitops)

    * tag 'arm64-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64:
    arm64: Treat the bitops index argument as an 'int'
    arm64: Ignore the 'write' ESR flag on cache maintenance faults
    arm64: dts: fix #address-cells for foundation-v8
    arm64: vexpress: Add support for poweroff/restart
    arm64: Enable support for the ARM GIC interrupt controller

    Linus Torvalds
     

08 May, 2013

1 commit

  • ESR.WnR bit is always set on data cache maintenance faults even though
    the page is not required to have write permission. If a translation
    fault (page not yet mapped) happens for read-only user address range,
    Linux incorrectly assumes a permission fault. This patch adds the check
    of the ESR.CM bit during the page fault handling to ignore the 'write'
    flag.

    Signed-off-by: Catalin Marinas
    Reported-by: Tim Northover
    Cc: stable@vger.kernel.org

    Catalin Marinas
     

01 May, 2013

1 commit

  • Pull arm64 update from Catalin Marinas:
    "Main features:

    - Versatile Express SoC (model) support - DT files and Kconfig
    entries (there are no arch/arm64/mach-* directories). The bulk of
    the code has already been moved to drivers/ as part of the ARM SoC
    clean-up.

    - Basic multi-cluster support (CPU logical map initialised from the
    DT)

    - Simple earlyprintk support for UART 8250/16550 and FastModel
    console output

    - Optimised kernel library bitops and string functions.

    - Automatic initialisation of the irqchip and clocks via DT"

    * tag 'arm64-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64: (26 commits)
    arm64: Use acquire/release semantics instead of explicit DMB
    arm64: klib: bitops: fix unpredictable stxr usage
    arm64: vexpress: Enable ARMv8 RTSM model (SoC) support
    arm64: vexpress: Add dts files for the ARMv8 RTSM models
    arm64: Survive invalid cpu enable-methods
    arm64: mm: Correct show_pte behaviour
    arm64: Fix compat types affecting struct compat_stat
    arm64: Execute DSB during thread switching for TLB/cache maintenance
    arm64: compiling issue, need add include/asm/vga.h file
    arm64: smp: honour #address-size when parsing CPU reg property
    arm64: Define cmpxchg64 and cmpxchg64_local for outside use
    arm64: Define readq and writeq for driver module using
    arm64: Fix task tracing
    arm64: add explicit symbols to ESR_EL1 decoding
    arm64: Use irqchip_init() for interrupt controller initialisation
    arm64: psci: Use the MPIDR values from cpu_logical_map for cpu ids.
    arm64: klib: Optimised atomic bitops
    arm64: klib: Optimised string functions
    arm64: klib: Optimised memory functions
    arm64: head: match all affinity levels in the pen of the secondaries
    ...

    Linus Torvalds
     

30 Apr, 2013

2 commits

  • The sparse code, when asking the architecture to populate the vmemmap,
    specifies the section range as a starting page and a number of pages.

    This is an awkward interface, because none of the arch-specific code
    actually thinks of the range in terms of 'struct page' units and always
    translates it to bytes first.

    In addition, later patches mix huge page and regular page backing for
    the vmemmap. For this, they need to call vmemmap_populate_basepages()
    on sub-section ranges with PAGE_SIZE and PMD_SIZE in mind. But these
    are not necessarily multiples of the 'struct page' size and so this unit
    is too coarse.

    Just translate the section range into bytes once in the generic sparse
    code, then pass byte ranges down the stack.

    Signed-off-by: Johannes Weiner
    Cc: Ben Hutchings
    Cc: Bernhard Schmidt
    Cc: Johannes Weiner
    Cc: Russell King
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: "H. Peter Anvin"
    Cc: Benjamin Herrenschmidt
    Cc: "Luck, Tony"
    Cc: Heiko Carstens
    Acked-by: David S. Miller
    Tested-by: David S. Miller
    Cc: Wu Fengguang
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Johannes Weiner
     
  • Use common help functions to free reserved pages.

    Signed-off-by: Jiang Liu
    Cc: Russell King
    Cc: Catalin Marinas
    Cc: Will Deacon
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jiang Liu
     

26 Apr, 2013

1 commit

  • show_pte makes use of the *_none_or_clear_bad style functions. If a
    pgd, pud or pmd is identified as being bad, it will then be cleared.

    As show_pte appears to be called from either the user or kernel
    fault handlers this side effect can lead to unpredictable behaviour;
    especially as TLB entries are not invalidated.

    This patch removes the page table sanitisation from show_pte. If a
    bad pgd, pud or pmd is encountered it is left unmodified.

    Signed-off-by: Steve Capper
    Signed-off-by: Catalin Marinas

    Steve Capper
     

26 Mar, 2013

1 commit


24 Feb, 2013

1 commit

  • Introduce a new API vmemmap_free() to free and remove vmemmap
    pagetables. Since pagetable implements are different, each architecture
    has to provide its own version of vmemmap_free(), just like
    vmemmap_populate().

    Note: vmemmap_free() is not implemented for ia64, ppc, s390, and sparc.

    [mhocko@suse.cz: fix implicit declaration of remove_pagetable]
    Signed-off-by: Yasuaki Ishimatsu
    Signed-off-by: Jianguo Wu
    Signed-off-by: Wen Congyang
    Signed-off-by: Tang Chen
    Cc: KOSAKI Motohiro
    Cc: Jiang Liu
    Cc: Kamezawa Hiroyuki
    Cc: Lai Jiangshan
    Cc: Wu Jianguo
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: "H. Peter Anvin"
    Signed-off-by: Michal Hocko
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tang Chen
     

23 Jan, 2013

1 commit

  • This patch adds support for "earlyprintk=" parameter on the kernel
    command line. The format is:

    earlyprintk=[,][,]

    where is the name of the (UART) device, e.g. "pl011", is
    the I/O address. The aren't currently used.

    The mapping of the earlyprintk device is done very early during kernel
    boot and there are restrictions on which functions it can call. A
    special early_io_map() function is added which creates the mapping from
    the pre-defined EARLY_IOBASE to the device I/O address passed via the
    kernel parameter. The pgd entry corresponding to EARLY_IOBASE is
    pre-populated in head.S during kernel boot.

    Only PL011 is currently supported and it is assumed that the interface
    is already initialised by the boot loader before the kernel is started.

    Signed-off-by: Catalin Marinas
    Acked-by: Arnd Bergmann

    Catalin Marinas
     

24 Nov, 2012

1 commit


14 Nov, 2012

2 commits

  • Commit f483a853b0b9 ("arm64: mm: fix booting on systems with no memory
    below 4GB") sets max_dma32 to the minimum of the maximum pfn and
    MAX_DMA32_PFN. This value is later used as the base of the NORMAL zone,
    which is incorrect when MAX_DMA32_PFN is below the minimum pfn (i.e. all
    memory is above 4GB).

    This patch fixes the problem by ensuring that max_dma32 is always set to
    the end of the DMA32 zone.

    Signed-off-by: Will Deacon
    Signed-off-by: Catalin Marinas

    Will Deacon
     
  • For user space faults the kernel reports "unhandled page fault" and it
    gives the ESR value. With this patch the error message looked up in the
    fault info array to give a better description.

    Signed-off-by: Catalin Marinas

    Catalin Marinas
     

09 Nov, 2012

1 commit