24 Mar, 2019

1 commit

  • commit 28713169d879b67be2ef2f84dcf54905de238294 upstream.

    This patch fixes a build failure when using GCC 8.1:

    /usr/bin/ld: block/partitions/ldm.o: in function `ldm_parse_tocblock':
    block/partitions/ldm.c:153: undefined reference to `strcmp'

    This is caused by a new optimization which effectively replaces a
    strncmp() call with a strcmp() call. This affects a number of strncmp()
    call sites in the kernel.

    The entire class of optimizations is avoided with -fno-builtin, which
    gets enabled by -ffreestanding. This may avoid possible future build
    failures in case new optimizations appear in future compilers.

    I haven't done any performance measurements with this patch but I did
    count the function calls in a defconfig build. For example, there are now
    23 more sprintf() calls and 39 fewer strcpy() calls. The effect on the
    other libc functions is smaller.

    If this harms performance we can tackle that regression by optimizing
    the call sites, ideally using semantic patches. That way, clang and ICC
    builds might benfit too.

    Cc: stable@vger.kernel.org
    Reference: https://marc.info/?l=linux-m68k&m=154514816222244&w=2
    Signed-off-by: Finn Thain
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Greg Kroah-Hartman

    Finn Thain
     

13 Jan, 2019

1 commit

  • [ Upstream commit bed1369f51901b17108a4bb4f7210aab183bea42 ]

    When running the kernel in Fast RAM on Atari:

    Ignoring memory chunk at 0x0:0xe00000 before the first chunk
    ...
    Unable to handle kernel NULL pointer dereference at virtual address (ptrval)
    Oops: 00000000
    Modules linked in:
    PC: [] free_all_bootmem+0x12c/0x186
    SR: 2714 SP: (ptrval) a2: 005e3314
    d0: 00000000 d1: 0000000a d2: 00000e00 d3: 00000000
    d4: 005e1fc0 d5: 0000001a a0: 01000000 a1: 00000000
    Process swapper (pid: 0, task=(ptrval))
    Frame format=7 eff addr=00000736 ssw=0505 faddr=00000736
    wb 1 stat/addr/data: 0000 00000000 00000000
    wb 2 stat/addr/data: 0000 00000000 00000000
    wb 3 stat/addr/data: 0000 00000736 00000000
    push data: 00000000 00000000 00000000 00000000
    Stack from 005e1f84:
    00000000 0000000a 027d3260 006b5006 00000000 00000000 00000000 00000000
    0004f062 0003a220 0069e272 005e1ff8 0000054c 00000000 00e00000 00000000
    00000001 00693cd8 027d3260 0004f062 0003a220 00691be6 00000000 00000000
    00000000 00000000 00000000 00000000 006b5006 00000000 00690872
    Call Trace: [] printk+0x0/0x18
    [] parse_args+0x0/0x2d4
    [] memblock_virt_alloc_try_nid+0x0/0xa4
    [] mem_init+0xa/0x5c
    [] printk+0x0/0x18
    [] parse_args+0x0/0x2d4
    [] start_kernel+0x1ca/0x462
    [] _sinittext+0x872/0x11f8
    Code: 7a1a eaae 2270 6db0 0061 ef14 2f01 2f03 0736 2203 e589 d681 e78b d6a9 0732 2f03 2f40 0034 4eb9 0069 b8d0 260e 4fef
    Disabling lock debugging due to kernel taint
    Kernel panic - not syncing: Attempted to kill the idle task!

    As the kernel must run in the memory chunk with the lowest address,
    ST-RAM is ignored, and removed from the m68k_memory[] array.
    However, it is not removed from memblock, causing a crash later.

    More investigation shows that there are 3 places where memory chunks are
    ignored, all after the calls to memblock_add() in m68k_parse_bootinfo(),
    and thus causing crashes:
    1. On classic m68k CPUs with a MMU, paging_init() ignores all memory
    chunks below the first chunk, cfr. above,
    2. On Amigas equipped with a Zorro III bus, config_amiga() ignores all
    Zorro II memory,
    3. If CONFIG_SINGLE_MEMORY_CHUNK=y, m68k_parse_bootinfo() ignores all
    but the first memory chunk.

    Fix this by moving the calls to memblock_add() from
    m68k_parse_bootinfo() to paging_init(), after all ignored memory chunks
    have been removed from m68k_memory[].

    Reported-by: Andreas Schwab
    Fixes: 1008a11590b966b4 ("m68k: switch to MEMBLOCK + NO_BOOTMEM")
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Sasha Levin

    Geert Uytterhoeven
     

29 Dec, 2018

1 commit

  • [ Upstream commit a8874e7e8a8896f2b6c641f4b8e2473eafd35204 ]

    Change the currently empty defines for __PAGETABLE_PMD_FOLDED,
    __PAGETABLE_PUD_FOLDED and __PAGETABLE_P4D_FOLDED to return 1.
    This makes it possible to use __is_defined() to test if the
    preprocessor define exists.

    Acked-by: Kirill A. Shutemov
    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Sasha Levin

    Martin Schwidefsky
     

14 Nov, 2018

1 commit

  • commit 578bdaabd015b9b164842c3e8ace9802f38e7ecc upstream.

    These are unused, undesired, and have never actually been used by
    anybody. The original authors of this code have changed their mind about
    its inclusion. While originally proposed for disk encryption on low-end
    devices, the idea was discarded [1] in favor of something else before
    that could really get going. Therefore, this patch removes Speck.

    [1] https://marc.info/?l=linux-crypto-vger&m=153359499015659

    Signed-off-by: Jason A. Donenfeld
    Acked-by: Eric Biggers
    Cc: stable@vger.kernel.org
    Acked-by: Ard Biesheuvel
    Signed-off-by: Herbert Xu
    Signed-off-by: Greg Kroah-Hartman

    Jason A. Donenfeld
     

03 Sep, 2018

1 commit


31 Aug, 2018

1 commit

  • Now that the 68k Mac port has adopted the via-pmu driver, it must decode
    the PMU response accordingly otherwise the date and time will be wrong.

    Fixes: ebd722275f9cfc67 ("macintosh/via-pmu: Replace via-pmu68k driver with via-pmu driver")
    Signed-off-by: Finn Thain
    Signed-off-by: Geert Uytterhoeven

    Finn Thain
     

24 Aug, 2018

1 commit

  • Commit a0f97e06a43c ("kbuild: enable 'make CFLAGS=...' to add
    additional options to CC") renamed CFLAGS to KBUILD_CFLAGS.

    Commit 222d394d30e7 ("kbuild: enable 'make AFLAGS=...' to add
    additional options to AS") renamed AFLAGS to KBUILD_AFLAGS.

    Commit 06c5040cdb13 ("kbuild: enable 'make CPPFLAGS=...' to add
    additional options to CPP") renamed CPPFLAGS to KBUILD_CPPFLAGS.

    For some reason, LDFLAGS was not renamed.

    Using a well-known variable like LDFLAGS may result in accidental
    override of the variable.

    Kbuild generally uses KBUILD_ prefixed variables for the internally
    appended options, so here is one more conversion to sanitize the
    naming convention.

    I did not touch Makefiles under tools/ since the tools build system
    is a different world.

    Signed-off-by: Masahiro Yamada
    Acked-by: Kirill A. Shutemov
    Reviewed-by: Palmer Dabbelt

    Masahiro Yamada
     

20 Aug, 2018

1 commit


18 Aug, 2018

3 commits

  • Merge updates from Andrew Morton:

    - a few misc things

    - a few Y2038 fixes

    - ntfs fixes

    - arch/sh tweaks

    - ocfs2 updates

    - most of MM

    * emailed patches from Andrew Morton : (111 commits)
    mm/hmm.c: remove unused variables align_start and align_end
    fs/userfaultfd.c: remove redundant pointer uwq
    mm, vmacache: hash addresses based on pmd
    mm/list_lru: introduce list_lru_shrink_walk_irq()
    mm/list_lru.c: pass struct list_lru_node* as an argument to __list_lru_walk_one()
    mm/list_lru.c: move locking from __list_lru_walk_one() to its caller
    mm/list_lru.c: use list_lru_walk_one() in list_lru_walk_node()
    mm, swap: make CONFIG_THP_SWAP depend on CONFIG_SWAP
    mm/sparse: delete old sparse_init and enable new one
    mm/sparse: add new sparse_init_nid() and sparse_init()
    mm/sparse: move buffer init/fini to the common place
    mm/sparse: use the new sparse buffer functions in non-vmemmap
    mm/sparse: abstract sparse buffer allocations
    mm/hugetlb.c: don't zero 1GiB bootmem pages
    mm, page_alloc: double zone's batchsize
    mm/oom_kill.c: document oom_lock
    mm/hugetlb: remove gigantic page support for HIGHMEM
    mm, oom: remove sleep from under oom_lock
    kernel/dma: remove unsupported gfp_mask parameter from dma_alloc_from_contiguous()
    mm/cma: remove unsupported gfp_mask parameter from cma_alloc()
    ...

    Linus Torvalds
     
  • Use new return type vm_fault_t for fault handler. For now, this is just
    documenting that the function returns a VM_FAULT value rather than an
    errno. Once all instances are converted, vm_fault_t will become a
    distinct type.

    Ref-> commit 1c8f422059ae ("mm: change return type to vm_fault_t")

    In this patch all the caller of handle_mm_fault() are changed to return
    vm_fault_t type.

    Link: http://lkml.kernel.org/r/20180617084810.GA6730@jordon-HP-15-Notebook-PC
    Signed-off-by: Souptick Joarder
    Cc: Matthew Wilcox
    Cc: Richard Henderson
    Cc: Tony Luck
    Cc: Matt Turner
    Cc: Vineet Gupta
    Cc: Russell King
    Cc: Catalin Marinas
    Cc: Will Deacon
    Cc: Richard Kuo
    Cc: Geert Uytterhoeven
    Cc: Michal Simek
    Cc: James Hogan
    Cc: Ley Foon Tan
    Cc: Jonas Bonn
    Cc: James E.J. Bottomley
    Cc: Benjamin Herrenschmidt
    Cc: Palmer Dabbelt
    Cc: Yoshinori Sato
    Cc: David S. Miller
    Cc: Richard Weinberger
    Cc: Guan Xuetao
    Cc: Thomas Gleixner
    Cc: "H. Peter Anvin"
    Cc: "Levin, Alexander (Sasha Levin)"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Souptick Joarder
     
  • Pull powerpc updates from Michael Ellerman:
    "Notable changes:

    - A fix for a bug in our page table fragment allocator, where a page
    table page could be freed and reallocated for something else while
    still in use, leading to memory corruption etc. The fix reuses
    pt_mm in struct page (x86 only) for a powerpc only refcount.

    - Fixes to our pkey support. Several are user-visible changes, but
    bring us in to line with x86 behaviour and/or fix outright bugs.
    Thanks to Florian Weimer for reporting many of these.

    - A series to improve the hvc driver & related OPAL console code,
    which have been seen to cause hardlockups at times. The hvc driver
    changes in particular have been in linux-next for ~month.

    - Increase our MAX_PHYSMEM_BITS to 128TB when SPARSEMEM_VMEMMAP=y.

    - Remove Power8 DD1 and Power9 DD1 support, neither chip should be in
    use anywhere other than as a paper weight.

    - An optimised memcmp implementation using Power7-or-later VMX
    instructions

    - Support for barrier_nospec on some NXP CPUs.

    - Support for flushing the count cache on context switch on some IBM
    CPUs (controlled by firmware), as a Spectre v2 mitigation.

    - A series to enhance the information we print on unhandled signals
    to bring it into line with other arches, including showing the
    offending VMA and dumping the instructions around the fault.

    Thanks to: Aaro Koskinen, Akshay Adiga, Alastair D'Silva, Alexey
    Kardashevskiy, Alexey Spirkov, Alistair Popple, Andrew Donnellan,
    Aneesh Kumar K.V, Anju T Sudhakar, Arnd Bergmann, Bartosz Golaszewski,
    Benjamin Herrenschmidt, Bharat Bhushan, Bjoern Noetel, Boqun Feng,
    Breno Leitao, Bryant G. Ly, Camelia Groza, Christophe Leroy, Christoph
    Hellwig, Cyril Bur, Dan Carpenter, Daniel Klamt, Darren Stevens, Dave
    Young, David Gibson, Diana Craciun, Finn Thain, Florian Weimer,
    Frederic Barrat, Gautham R. Shenoy, Geert Uytterhoeven, Geoff Levand,
    Guenter Roeck, Gustavo Romero, Haren Myneni, Hari Bathini, Joel
    Stanley, Jonathan Neuschäfer, Kees Cook, Madhavan Srinivasan, Mahesh
    Salgaonkar, Markus Elfring, Mathieu Malaterre, Mauro S. M. Rodrigues,
    Michael Hanselmann, Michael Neuling, Michael Schmitz, Mukesh Ojha,
    Murilo Opsfelder Araujo, Nicholas Piggin, Parth Y Shah, Paul
    Mackerras, Paul Menzel, Ram Pai, Randy Dunlap, Rashmica Gupta, Reza
    Arbab, Rodrigo R. Galvao, Russell Currey, Sam Bobroff, Scott Wood,
    Shilpasri G Bhat, Simon Guo, Souptick Joarder, Stan Johnson, Thiago
    Jung Bauermann, Tyrel Datwyler, Vaibhav Jain, Vasant Hegde, Venkat
    Rao, zhong jiang"

    * tag 'powerpc-4.19-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (234 commits)
    powerpc/mm/book3s/radix: Add mapping statistics
    powerpc/uaccess: Enable get_user(u64, *p) on 32-bit
    powerpc/mm/hash: Remove unnecessary do { } while(0) loop
    powerpc/64s: move machine check SLB flushing to mm/slb.c
    powerpc/powernv/idle: Fix build error
    powerpc/mm/tlbflush: update the mmu_gather page size while iterating address range
    powerpc/mm: remove warning about ‘type’ being set
    powerpc/32: Include setup.h header file to fix warnings
    powerpc: Move `path` variable inside DEBUG_PROM
    powerpc/powermac: Make some functions static
    powerpc/powermac: Remove variable x that's never read
    cxl: remove a dead branch
    powerpc/powermac: Add missing include of header pmac.h
    powerpc/kexec: Use common error handling code in setup_new_fdt()
    powerpc/xmon: Add address lookup for percpu symbols
    powerpc/mm: remove huge_pte_offset_and_shift() prototype
    powerpc/lib: Use patch_site to patch copy_32 functions once cache is enabled
    powerpc/pseries: Fix endianness while restoring of r3 in MCE handler.
    powerpc/fadump: merge adjacent memory ranges to reduce PT_LOAD segements
    powerpc/fadump: handle crash memory ranges array index overflow
    ...

    Linus Torvalds
     

16 Aug, 2018

1 commit

  • Pull Kconfig consolidation from Masahiro Yamada:
    "Consolidation of Kconfig files by Christoph Hellwig.

    Move the source statements of arch-independent Kconfig files instead
    of duplicating the includes in every arch/$(SRCARCH)/Kconfig"

    * tag 'kconfig-v4.19-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
    kconfig: add a Memory Management options" menu
    kconfig: move the "Executable file formats" menu to fs/Kconfig.binfmt
    kconfig: use a menu in arch/Kconfig to reduce clutter
    kconfig: include kernel/Kconfig.preempt from init/Kconfig
    Kconfig: consolidate the "Kernel hacking" menu
    kconfig: include common Kconfig files from top-level Kconfig
    kconfig: remove duplicate SWAP symbol defintions
    um: create a proper drivers Kconfig
    um: cleanup Kconfig files
    um: stop abusing KBUILD_KCONFIG

    Linus Torvalds
     

14 Aug, 2018

1 commit

  • Pull locking/atomics update from Thomas Gleixner:
    "The locking, atomics and memory model brains delivered:

    - A larger update to the atomics code which reworks the ordering
    barriers, consolidates the atomic primitives, provides the new
    atomic64_fetch_add_unless() primitive and cleans up the include
    hell.

    - Simplify cmpxchg() instrumentation and add instrumentation for
    xchg() and cmpxchg_double().

    - Updates to the memory model and documentation"

    * 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (48 commits)
    locking/atomics: Rework ordering barriers
    locking/atomics: Instrument cmpxchg_double*()
    locking/atomics: Instrument xchg()
    locking/atomics: Simplify cmpxchg() instrumentation
    locking/atomics/x86: Reduce arch_cmpxchg64*() instrumentation
    tools/memory-model: Rename litmus tests to comply to norm7
    tools/memory-model/Documentation: Fix typo, smb->smp
    sched/Documentation: Update wake_up() & co. memory-barrier guarantees
    locking/spinlock, sched/core: Clarify requirements for smp_mb__after_spinlock()
    sched/core: Use smp_mb() in wake_woken_function()
    tools/memory-model: Add informal LKMM documentation to MAINTAINERS
    locking/atomics/Documentation: Describe atomic_set() as a write operation
    tools/memory-model: Make scripts executable
    tools/memory-model: Remove ACCESS_ONCE() from model
    tools/memory-model: Remove ACCESS_ONCE() from recipes
    locking/memory-barriers.txt/kokr: Update Korean translation to fix broken DMA vs. MMIO ordering example
    MAINTAINERS: Add Daniel Lustig as an LKMM reviewer
    tools/memory-model: Fix ISA2+pooncelock+pooncelock+pombonce name
    tools/memory-model: Add litmus test for full multicopy atomicity
    locking/refcount: Always allow checked forms
    ...

    Linus Torvalds
     

02 Aug, 2018

3 commits

  • Almost all architectures include it. Add a ARCH_NO_PREEMPT symbol to
    disable preempt support for alpha, hexagon, non-coldfire m68k and
    user mode Linux.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Masahiro Yamada

    Christoph Hellwig
     
  • Move the source of lib/Kconfig.debug and arch/$(ARCH)/Kconfig.debug to
    the top-level Kconfig. For two architectures that means moving their
    arch-specific symbols in that menu into a new arch Kconfig.debug file,
    and for a few more creating a dummy file so that we can include it
    unconditionally.

    Also move the actual 'Kernel hacking' menu to lib/Kconfig.debug, where
    it belongs.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Masahiro Yamada

    Christoph Hellwig
     
  • Instead of duplicating the source statements in every architecture just
    do it once in the toplevel Kconfig file.

    Note that with this the inclusion of arch/$(SRCARCH/Kconfig moves out of
    the top-level Kconfig into arch/Kconfig so that don't violate ordering
    constraits while keeping a sensible menu structure.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Masahiro Yamada

    Christoph Hellwig
     

31 Jul, 2018

2 commits


30 Jul, 2018

2 commits

  • If DEBUG_DMA is defined:

    include/asm/dma.h: In function ‘set_dma_mode’:
    include/asm/dma.h:393: error: ‘dmabp’ undeclared (first use in this function)
    include/asm/dma.h:393: error: (Each undeclared identifier is reported only once
    include/asm/dma.h:393: error: for each function it appears in.)
    include/asm/dma.h: In function ‘set_dma_addr’:
    include/asm/dma.h:424: error: ‘dmawp’ undeclared (first use in this function)

    Reported-by: kbuild test robot
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Greg Ungerer

    Geert Uytterhoeven
     
  • Coldfire still provides its own variant of the clk API rather than using
    the generic COMMON_CLK API. This generally works, but it causes some
    link errors with drivers using the clk_round_rate(), clk_set_rate(),
    clk_set_parent(), or clk_get_parent() functions when a platform lacks
    those interfaces.

    This adds empty stub implementations for each of them, and I don't even
    try to do something useful here but instead just print a WARN() message
    to make it obvious what is going on if they ever end up being called.

    The drivers that call these won't be used on these platforms (otherwise
    we'd get a link error today), so the added code is harmless bloat and
    will warn about accidental use.

    Based on commit bd7fefe1f06ca6cc ("ARM: w90x900: normalize clk API").

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Greg Ungerer

    Geert Uytterhoeven
     

29 Jul, 2018

9 commits

  • Signed-off-by: Geert Uytterhoeven

    Geert Uytterhoeven
     
  • In m68k the physical memory is described by [memory_start, memory_end] for
    !MMU variant and by m68k_memory array of memory ranges for the MMU version.
    This information is directly use to register the physical memory with
    memblock.

    The reserve_bootmem() calls are replaced with memblock_reserve() and the
    bootmap bitmap allocation is simply dropped.

    Since the MMU variant creates early mappings only for the small part of the
    memory we force bottom-up allocations in memblock.

    Signed-off-by: Mike Rapoport
    Acked-by: Greg Ungerer
    Signed-off-by: Geert Uytterhoeven

    Mike Rapoport
     
  • Add explicit casting to unsigned long to the __va() parameter

    Signed-off-by: Mike Rapoport
    Acked-by: Greg Ungerer
    Signed-off-by: Geert Uytterhoeven

    Mike Rapoport
     
  • The generic bitops declare __ffs as

    static inline unsigned long __ffs(unsigned long word);

    Convert the m68k version to match the generic declaration.

    Signed-off-by: Mike Rapoport
    Acked-by: Greg Ungerer
    Signed-off-by: Geert Uytterhoeven

    Mike Rapoport
     
  • The dummy functions defined in can be provided by
    .

    As nommu already uses , move its inclusion to
    , and add/adjust include guards where appropriate.

    This gets rid of lots of "statement with no effect" and "unused
    variable" warnings when compile-testing.

    Signed-off-by: Geert Uytterhoeven
    Acked-by: Greg Ungerer

    Geert Uytterhoeven
     
  • The mem*io define guards are applicable to all users of .
    Hence move them, and drop the #ifdef.

    Signed-off-by: Geert Uytterhoeven
    Acked-by: Greg Ungerer

    Geert Uytterhoeven
     
  • - Add missing define guard for ioremap_wt(),
    - Move ARCH_HAS_IOREMAP_WT from to , as it
    is applicable to Coldfire with MMU, too,
    - Fix typo s/ioremap_fillcache/ioremap_fullcache/,
    - Add define guard for iounmap() for consistency with other
    architectures.

    Fixes: 9746882f547d2f00 ("m68k: group io mapping definitions and functions")
    Signed-off-by: Geert Uytterhoeven
    Acked-by: Greg Ungerer

    Geert Uytterhoeven
     
  • Commit 397ac99c6cef ("m68k: remove dead timer code") removed set_rtc_mmss()
    because it was unused in 2012. However, this was itself the only user of the
    mach_set_clock_mmss() callback and the many implementations of that callback,
    which are equally unused.

    This removes all of those as well.

    Signed-off-by: Arnd Bergmann
    Acked-by: Greg Ungerer
    Signed-off-by: Geert Uytterhoeven

    Arnd Bergmann
     
  • The real-time clock on m68k (and powerpc) mac systems uses an unsigned
    32-bit value starting in 1904, which overflows in 2040, about two years
    later than everyone else, but this gets wrapped around in the Linux
    code in 2038 already because of the deprecated usage of time_t and/or
    long in the conversion.

    Getting rid of the deprecated interfaces makes it work until 2040 as
    documented, and it could be easily extended by reinterpreting
    the resulting time64_t as a positive number. For the moment, I'm
    adding a WARN_ON() that triggers if we encounter a time before 1970
    or after 2040 (the two are indistinguishable).

    This brings it in line with the corresponding code that we have on
    powerpc macintosh.

    Signed-off-by: Arnd Bergmann
    [fthain: Adopt __u32 for the union in via_read_time(), consistent with
    changes to via_write_time()]
    [fthain: Use lower_32_bits() in via_write_time(), consistent with changes
    to pmu_write_time() and cuda_write_time()]
    [fthain: Have via_read_time() return a time64_t, consistent with changes
    to pmu_read_time() and cuda_read_time()]
    [fthain: Drop the pointless wraparound conditional in via_read_time()]
    Signed-off-by: Finn Thain
    Reviewed-by: Arnd Bergmann
    [geert: Drop WARN_ON(), as it is reported to trigger on powermac]
    Signed-off-by: Geert Uytterhoeven

    Arnd Bergmann
     

23 Jul, 2018

2 commits


17 Jul, 2018

1 commit


02 Jul, 2018

1 commit

  • Booting a ColdFire m68k core with MMU enabled causes a "bad page state"
    oops since commit 1d40a5ea01d5 ("mm: mark pages in use for page tables"):

    BUG: Bad page state in process sh pfn:01ce2
    page:004fefc8 count:0 mapcount:-1024 mapping:00000000 index:0x0
    flags: 0x0()
    raw: 00000000 00000000 00000000 fffffbff 00000000 00000100 00000200 00000000
    raw: 039c4000
    page dumped because: nonzero mapcount
    Modules linked in:
    CPU: 0 PID: 22 Comm: sh Not tainted 4.17.0-07461-g1d40a5ea01d5 #13

    Fix by calling pgtable_page_dtor() in our __pte_free_tlb() code path,
    so that the PG_table flag is cleared before we free the pte page.

    Note that I had to change the type of pte_free() to be static from
    extern. Otherwise you get a lot of warnings like this:

    ./arch/m68k/include/asm/mcf_pgalloc.h:80:2: warning: ‘pgtable_page_dtor’ is static but used in inline function ‘pte_free’ which is not static
    pgtable_page_dtor(page);
    ^

    And making it static is consistent with our use of this in the other
    m68k pgalloc definitions of pte_free().

    Signed-off-by: Greg Ungerer
    CC: Matthew Wilcox
    Reviewed-by: Geert Uytterhoeven

    Greg Ungerer
     

21 Jun, 2018

5 commits

  • Many of the inc/dec ops are mandatory, but for most architectures inc/dec are
    simply trivial wrappers around their corresponding add/sub ops.

    Let's make all the inc/dec ops optional, so that we can get rid of these
    boilerplate wrappers.

    The instrumented atomics are updated accordingly.

    There should be no functional change as a result of this patch.

    Signed-off-by: Mark Rutland
    Reviewed-by: Will Deacon
    Acked-by: Peter Zijlstra (Intel)
    Acked-by: Palmer Dabbelt
    Cc: Boqun Feng
    Cc: Linus Torvalds
    Cc: Thomas Gleixner
    Link: https://lore.kernel.org/lkml/20180621121321.4761-17-mark.rutland@arm.com
    Signed-off-by: Ingo Molnar

    Mark Rutland
     
  • Some of the atomics return the result of a test applied after the atomic
    operation, and almost all architectures implement these as trivial
    wrappers around the underlying atomic. Specifically:

    * _inc_and_test(v) is (_inc_return(v) == 0)
    * _dec_and_test(v) is (_dec_return(v) == 0)
    * _sub_and_test(i, v) is (_sub_return(i, v) == 0)
    * _add_negative(i, v) is (_add_return(i, v) < 0)

    Rather than have these definitions duplicated in all architectures, with
    minor inconsistencies in formatting and documentation, let's make these
    operations optional, with default fallbacks as above. Implementations
    must now provide a preprocessor symbol.

    The instrumented atomics are updated accordingly.

    Both x86 and m68k have custom implementations, which are left as-is,
    given preprocessor symbols to avoid being overridden.

    There should be no functional change as a result of this patch.

    Signed-off-by: Mark Rutland
    Reviewed-by: Will Deacon
    Acked-by: Geert Uytterhoeven
    Acked-by: Peter Zijlstra (Intel)
    Acked-by: Palmer Dabbelt
    Cc: Boqun Feng
    Cc: Linus Torvalds
    Cc: Thomas Gleixner
    Link: https://lore.kernel.org/lkml/20180621121321.4761-16-mark.rutland@arm.com
    Signed-off-by: Ingo Molnar

    Mark Rutland
     
  • Several architectures these have a near-identical implementation based
    on atomic_read() and atomic_cmpxchg() which we can instead define in
    , so let's do so, using something close to the existing
    x86 implementation with try_cmpxchg().

    Where an architecture provides its own atomic_fetch_add_unless(), it
    must define a preprocessor symbol for it. The instrumented atomics are
    updated accordingly.

    Note that arch/arc's existing atomic_fetch_add_unless() had redundant
    barriers, as these are already present in its atomic_cmpxchg()
    implementation.

    There should be no functional change as a result of this patch.

    Signed-off-by: Mark Rutland
    Reviewed-by: Geert Uytterhoeven
    Reviewed-by: Will Deacon
    Acked-by: Geert Uytterhoeven
    Acked-by: Peter Zijlstra (Intel)
    Acked-by: Palmer Dabbelt
    Cc: Boqun Feng
    Cc: Linus Torvalds
    Cc: Thomas Gleixner
    Cc: Vineet Gupta
    Link: https://lore.kernel.org/lkml/20180621121321.4761-7-mark.rutland@arm.com
    Signed-off-by: Ingo Molnar

    Mark Rutland
     
  • While __atomic_add_unless() was originally intended as a building-block
    for atomic_add_unless(), it's now used in a number of places around the
    kernel. It's the only common atomic operation named __atomic*(), rather
    than atomic_*(), and for consistency it would be better named
    atomic_fetch_add_unless().

    This lack of consistency is slightly confusing, and gets in the way of
    scripting atomics. Given that, let's clean things up and promote it to
    an official part of the atomics API, in the form of
    atomic_fetch_add_unless().

    This patch converts definitions and invocations over to the new name,
    including the instrumented version, using the following script:

    ----
    git grep -w __atomic_add_unless | while read line; do
    sed -i '{s/\/atomic_fetch_add_unless/}' "${line%%:*}";
    done
    git grep -w __arch_atomic_add_unless | while read line; do
    sed -i '{s/\/arch_atomic_fetch_add_unless/}' "${line%%:*}";
    done
    ----

    Note that we do not have atomic{64,_long}_fetch_add_unless(), which will
    be introduced by later patches.

    There should be no functional change as a result of this patch.

    Signed-off-by: Mark Rutland
    Reviewed-by: Will Deacon
    Acked-by: Geert Uytterhoeven
    Acked-by: Peter Zijlstra (Intel)
    Acked-by: Palmer Dabbelt
    Cc: Boqun Feng
    Cc: Linus Torvalds
    Cc: Thomas Gleixner
    Link: https://lore.kernel.org/lkml/20180621121321.4761-2-mark.rutland@arm.com
    Signed-off-by: Ingo Molnar

    Mark Rutland
     
  • is shortly going to be built on top of the
    atomic_long_*() API, which introduces a nasty circular dependency for
    m68k where pulls in via:

    linux/atomic.h
    asm/atomic.h
    linux/irqflags.h
    asm/irqflags.h
    linux/preempt.h
    asm/preempt.h
    asm-generic/preempt.h
    linux/thread_info.h
    asm/thread_info.h
    asm/page.h
    asm-generic/getorder.h
    linux/log2.h
    linux/bitops.h

    Since m68k isn't SMP and doesn't support ACQUIRE/RELEASE barriers, we
    can just define the lock bitops in terms of the atomic bitops in the
    header.

    Signed-off-by: Will Deacon
    Acked-by: Geert Uytterhoeven
    Acked-by: Peter Zijlstra (Intel)
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: yamada.masahiro@socionext.com
    Link: https://lore.kernel.org/lkml/1529412794-17720-3-git-send-email-will.deacon@arm.com
    Signed-off-by: Ingo Molnar

    Will Deacon
     

06 Jun, 2018

1 commit

  • Pull m68knommu updates from Greg Ungerer:
    "These changes all relate to converting the IO access functions for the
    ColdFire (and all other non-MMU m68k) platforms to use asm-generic IO
    instead.

    This makes the IO support the same on all ColdFire (regardless of MMU
    enabled or not) and means we can now support PCI in non-MMU mode.

    As a bonus these changes remove more code than they add"

    * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu:
    m68k: fix ColdFire PCI config reads and writes
    m68k: introduce iomem() macro for __iomem conversions
    m68k: allow ColdFire PCI bus on MMU and non-MMU configuration
    m68k: fix ioremapping for internal ColdFire peripherals
    m68k: fix read/write multi-byte IO for PCI on ColdFire
    m68k: don't redefine access functions if we have PCI
    m68k: remove old ColdFire IO access support code
    m68k: use io_no.h for MMU and non-MMU enabled ColdFire
    m68k: setup PCI support code in io_no.h
    m68k: group io mapping definitions and functions
    m68k: rework raw access macros for the non-MMU case
    m68k: use asm-generic/io.h for non-MMU io access functions
    m68k: put definition guards around virt_to_phys and phys_to_virt
    m68k: move *_relaxed macros into io_no.h and io_mm.h

    Linus Torvalds
     

05 Jun, 2018

1 commit

  • Pull timers and timekeeping updates from Thomas Gleixner:

    - Core infrastucture work for Y2038 to address the COMPAT interfaces:

    + Add a new Y2038 safe __kernel_timespec and use it in the core
    code

    + Introduce config switches which allow to control the various
    compat mechanisms

    + Use the new config switch in the posix timer code to control the
    32bit compat syscall implementation.

    - Prevent bogus selection of CPU local clocksources which causes an
    endless reselection loop

    - Remove the extra kthread in the clocksource code which has no value
    and just adds another level of indirection

    - The usual bunch of trivial updates, cleanups and fixlets all over the
    place

    - More SPDX conversions

    * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (24 commits)
    clocksource/drivers/mxs_timer: Switch to SPDX identifier
    clocksource/drivers/timer-imx-tpm: Switch to SPDX identifier
    clocksource/drivers/timer-imx-gpt: Switch to SPDX identifier
    clocksource/drivers/timer-imx-gpt: Remove outdated file path
    clocksource/drivers/arc_timer: Add comments about locking while read GFRC
    clocksource/drivers/mips-gic-timer: Add pr_fmt and reword pr_* messages
    clocksource/drivers/sprd: Fix Kconfig dependency
    clocksource: Move inline keyword to the beginning of function declarations
    timer_list: Remove unused function pointer typedef
    timers: Adjust a kernel-doc comment
    tick: Prefer a lower rating device only if it's CPU local device
    clocksource: Remove kthread
    time: Change nanosleep to safe __kernel_* types
    time: Change types to new y2038 safe __kernel_* types
    time: Fix get_timespec64() for y2038 safe compat interfaces
    time: Add new y2038 safe __kernel_timespec
    posix-timers: Make compat syscalls depend on CONFIG_COMPAT_32BIT_TIME
    time: Introduce CONFIG_COMPAT_32BIT_TIME
    time: Introduce CONFIG_64BIT_TIME in architectures
    compat: Enable compat_get/put_timespec64 always
    ...

    Linus Torvalds