18 Nov, 2020

2 commits

  • This is a non-functional change, if anything a better fall-back
    handling.

    Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • To start stack unwinding (SP, PC and BLINK) are needed. When the
    explicit execution context (pt_regs etc) is not available, unwinder
    assumes the task is sleeping (in __switch_to()) and fetches SP and BLINK
    from kernel mode stack.

    But this assumption is not true, specially in a SMP system, when top
    runs on 1 core, there may be active running processes on all cores.

    So when unwinding non courrent tasks, ensure they are NOT running.

    And while at it, handle the self unwinding case explicitly.

    This came out of investigation of a customer reported hang with
    rcutorture+top

    Link: https://github.com/foss-for-synopsys-dwc-arc-processors/linux/issues/31
    Signed-off-by: Vineet Gupta

    Vineet Gupta
     

03 Nov, 2020

2 commits

  • ARC HSDK platform stopped booting on released v5.10-rc1, getting stuck
    in startup of non master SMP cores.

    This was bisected to upstream commit 7fef431be9c9ac25
    "(mm/page_alloc: place pages to tail in __free_pages_core())"
    That commit itself is harmless, it just exposed a subtle assumption in
    our platform code (hence CC'ing linux-mm just as FYI in case some other
    arches / platforms trip on it).

    The upstream commit is semantically disruptive as it reverses the order
    of page allocations (actually it can be good test for hardware
    verification to exercise different memory patterns altogether).
    For ARC HSDK platform that meant a remapped memory region (pertaining to
    unused Closely Coupled Memory) started getting used early for dynamice
    allocations, while not effectively remapped on all the cores, triggering
    memory error exception on those cores.

    The fix is to move the CCM remapping from early platform code to to early core
    boot code. And while it is undesirable to riddle common boot code with
    platform quirks, there is no other way to do this since the faltering code
    involves setting up stack itself so even function calls are not allowed at
    that point.

    If anyone is interested, all the gory details can be found at Link below.

    Link: https://github.com/foss-for-synopsys-dwc-arc-processors/linux/issues/32
    Cc: David Hildenbrand
    Cc: linux-mm@kvack.org
    Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • Currently stack unwinder is a while(1) loop which relies on the dwarf
    unwinder to signal termination, which in turn relies on dwarf info to do
    so. This in theory could cause an infinite loop if the dwarf info was
    somehow messed up or the register contents were etc.

    This fix thus detects the excessive looping and breaks the loop.

    | Mem: 26184K used, 1009136K free, 0K shrd, 0K buff, 14416K cached
    | CPU: 0.0% usr 72.8% sys 0.0% nic 27.1% idle 0.0% io 0.0% irq 0.0% sirq
    | Load average: 4.33 2.60 1.11 2/74 139
    | PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND
    | 133 2 root SWN 0 0.0 3 22.9 [rcu_torture_rea]
    | 132 2 root SWN 0 0.0 0 22.0 [rcu_torture_rea]
    | 131 2 root SWN 0 0.0 3 21.5 [rcu_torture_rea]
    | 126 2 root RW 0 0.0 2 5.4 [rcu_torture_wri]
    | 129 2 root SWN 0 0.0 0 0.2 [rcu_torture_fak]
    | 137 2 root SW 0 0.0 0 0.2 [rcu_torture_cbf]
    | 127 2 root SWN 0 0.0 0 0.1 [rcu_torture_fak]
    | 138 115 root R 1464 0.1 2 0.1 top
    | 130 2 root SWN 0 0.0 0 0.1 [rcu_torture_fak]
    | 128 2 root SWN 0 0.0 0 0.1 [rcu_torture_fak]
    | 115 1 root S 1472 0.1 1 0.0 -/bin/sh
    | 104 1 root S 1464 0.1 0 0.0 inetd
    | 1 0 root S 1456 0.1 2 0.0 init
    | 78 1 root S 1456 0.1 0 0.0 syslogd -O /var/log/messages
    | 134 2 root SW 0 0.0 2 0.0 [rcu_torture_sta]
    | 10 2 root IW 0 0.0 1 0.0 [rcu_preempt]
    | 88 2 root IW 0 0.0 1 0.0 [kworker/1:1-eve]
    | 66 2 root IW 0 0.0 2 0.0 [kworker/2:2-eve]
    | 39 2 root IW 0 0.0 2 0.0 [kworker/2:1-eve]
    | unwinder looping too long, aborting !

    Cc:
    Signed-off-by: Vineet Gupta

    Vineet Gupta
     

24 Oct, 2020

2 commits

  • Pull arch task_work cleanups from Jens Axboe:
    "Two cleanups that don't fit other categories:

    - Finally get the task_work_add() cleanup done properly, so we don't
    have random 0/1/false/true/TWA_SIGNAL confusing use cases. Updates
    all callers, and also fixes up the documentation for
    task_work_add().

    - While working on some TIF related changes for 5.11, this
    TIF_NOTIFY_RESUME cleanup fell out of that. Remove some arch
    duplication for how that is handled"

    * tag 'arch-cleanup-2020-10-22' of git://git.kernel.dk/linux-block:
    task_work: cleanup notification modes
    tracehook: clear TIF_NOTIFY_RESUME in tracehook_notify_resume()

    Linus Torvalds
     
  • Pull ARC fix from Vineet Gupta:
    "I found a snafu in perf driver which made it into 5.9-rc4 and the fix
    should go in now than wait"

    * tag 'arc-5.10-rc1-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc:
    ARC: perf: redo the pct irq missing in device-tree handling

    Linus Torvalds
     

23 Oct, 2020

1 commit

  • commit feb92d7d3813456c11dce21 "(ARC: perf: don't bail setup if pct irq
    missing in device-tree)" introduced a silly brown-paper bag bug:
    The assignment and comparison in an if statement were not bracketed
    correctly leaving the order of evaluation undefined.

    |
    | if (has_interrupts && (irq = platform_get_irq(pdev, 0) >= 0)) {
    | ^^^ ^^^^

    And given such a chance, the compiler will bite you hard, fully entitled
    to generating this piece of beauty:

    |
    | # if (has_interrupts && (irq = platform_get_irq(pdev, 0) >= 0)) {
    |
    | bl.d @platform_get_irq = 0 true/false
    | brlt.d r0, 0, @.L114
    |
    | st_s r2,[sp] irq irq
    |
    | bl.d @__request_percpu_irq
    Signed-off-by: Vineet Gupta

    Vineet Gupta
     

21 Oct, 2020

1 commit

  • Pull ARC updates from Vineet Gupta:
    "The bulk of ARC pull request is removal of EZChip NPS platform which
    was suffering from constant bitrot. In recent years EZChip has gone
    though multiple successive acquisitions and I guess things and people
    move on. I would like to take this opportunity to recognize and thank
    all those good folks (Gilad, Noam, Ofer...) for contributing major
    bits to ARC port (SMP, Big Endian).

    Summary:

    - drop support for EZChip NPS platform

    - misc other fixes"

    * tag 'arc-5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc:
    arc: include/asm: fix typos of "themselves"
    ARC: SMP: fix typo and use "come up" instead of "comeup"
    ARC: [dts] fix the errors detected by dtbs_check
    arc: plat-hsdk: fix kconfig dependency warning when !RESET_CONTROLLER
    ARC: [plat-eznps]: Drop support for EZChip NPS platform

    Linus Torvalds
     

18 Oct, 2020

1 commit


13 Oct, 2020

2 commits

  • Pull perf/kprobes updates from Ingo Molnar:
    "This prepares to unify the kretprobe trampoline handler and make
    kretprobe lockless (those patches are still work in progress)"

    * tag 'perf-kprobes-2020-10-12' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    kprobes: Fix to check probe enabled before disarm_kprobe_ftrace()
    kprobes: Make local functions static
    kprobes: Free kretprobe_instance with RCU callback
    kprobes: Remove NMI context check
    sparc: kprobes: Use generic kretprobe trampoline handler
    sh: kprobes: Use generic kretprobe trampoline handler
    s390: kprobes: Use generic kretprobe trampoline handler
    powerpc: kprobes: Use generic kretprobe trampoline handler
    parisc: kprobes: Use generic kretprobe trampoline handler
    mips: kprobes: Use generic kretprobe trampoline handler
    ia64: kprobes: Use generic kretprobe trampoline handler
    csky: kprobes: Use generic kretprobe trampoline handler
    arc: kprobes: Use generic kretprobe trampoline handler
    arm64: kprobes: Use generic kretprobe trampoline handler
    arm: kprobes: Use generic kretprobe trampoline handler
    x86/kprobes: Use generic kretprobe trampoline handler
    kprobes: Add generic kretprobe trampoline handler

    Linus Torvalds
     
  • Pull orphan section checking from Ingo Molnar:
    "Orphan link sections were a long-standing source of obscure bugs,
    because the heuristics that various linkers & compilers use to handle
    them (include these bits into the output image vs discarding them
    silently) are both highly idiosyncratic and also version dependent.

    Instead of this historically problematic mess, this tree by Kees Cook
    (et al) adds build time asserts and build time warnings if there's any
    orphan section in the kernel or if a section is not sized as expected.

    And because we relied on so many silent assumptions in this area, fix
    a metric ton of dependencies and some outright bugs related to this,
    before we can finally enable the checks on the x86, ARM and ARM64
    platforms"

    * tag 'core-build-2020-10-12' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (36 commits)
    x86/boot/compressed: Warn on orphan section placement
    x86/build: Warn on orphan section placement
    arm/boot: Warn on orphan section placement
    arm/build: Warn on orphan section placement
    arm64/build: Warn on orphan section placement
    x86/boot/compressed: Add missing debugging sections to output
    x86/boot/compressed: Remove, discard, or assert for unwanted sections
    x86/boot/compressed: Reorganize zero-size section asserts
    x86/build: Add asserts for unwanted sections
    x86/build: Enforce an empty .got.plt section
    x86/asm: Avoid generating unused kprobe sections
    arm/boot: Handle all sections explicitly
    arm/build: Assert for unwanted sections
    arm/build: Add missing sections
    arm/build: Explicitly keep .ARM.attributes sections
    arm/build: Refactor linker script headers
    arm64/build: Assert for unwanted sections
    arm64/build: Add missing DWARF sections
    arm64/build: Use common DISCARDS in linker script
    arm64/build: Remove .eh_frame* sections due to unwind tables
    ...

    Linus Torvalds
     

06 Oct, 2020

2 commits


08 Sep, 2020

1 commit


06 Sep, 2020

1 commit

  • Pull ARC fixes from Vineet Gupta:

    - HSDK-4xd Dev system: perf driver updates for sampling interrupt

    - HSDK* Dev System: Ethernet broken [Evgeniy Didin]

    - HIGHMEM broken (2 memory banks) [Mike Rapoport]

    - show_regs() rewrite once and for all

    - Other minor fixes

    * tag 'arc-5.9-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc:
    ARC: [plat-hsdk]: Switch ethernet phy-mode to rgmii-id
    arc: fix memory initialization for systems with two memory banks
    irqchip/eznps: Fix build error for !ARC700 builds
    ARC: show_regs: fix r12 printing and simplify
    ARC: HSDK: wireup perf irq
    ARC: perf: don't bail setup if pct irq missing in device-tree
    ARC: pgalloc.h: delete a duplicated word + other fixes

    Linus Torvalds
     

01 Sep, 2020

1 commit

  • The .comment section doesn't belong in STABS_DEBUG. Split it out into a
    new macro named ELF_DETAILS. This will gain other non-debug sections
    that need to be accounted for when linking with --orphan-handling=warn.

    Signed-off-by: Kees Cook
    Signed-off-by: Ingo Molnar
    Cc: linux-arch@vger.kernel.org
    Link: https://lore.kernel.org/r/20200821194310.3089815-5-keescook@chromium.org

    Kees Cook
     

28 Aug, 2020

1 commit

  • when working on ARC64, spotted an issue in ARCv2 reg file printing.
    print_reg_file() assumes contiguous reg-file whereas in ARCv2 they are
    not: r12 comes before r0-r11 due to hardware auto-save. Apparently this
    issue has been present since v2 port submission.

    To avoid bolting hacks for this discontinuity while looping through
    pt_regs, just ditching the loop and print pt_regs directly.

    Signed-off-by: Vineet Gupta

    Vineet Gupta
     

24 Aug, 2020

1 commit

  • Replace the existing /* fall through */ comments and its variants with
    the new pseudo-keyword macro fallthrough[1]. Also, remove unnecessary
    fall-through markings when it is the case.

    [1] https://www.kernel.org/doc/html/v5.7/process/deprecated.html?highlight=fallthrough#implicit-switch-case-fall-through

    Signed-off-by: Gustavo A. R. Silva

    Gustavo A. R. Silva
     

17 Aug, 2020

1 commit

  • Current code inadventely bails if hardware supports sampling/overflow
    interrupts, but the irq is missing from device tree.

    |
    | # perf stat -e cycles,instructions,major-faults,minor-faults ../hackbench
    | Running with 10 groups 400 process
    | Time: 0.921
    |
    | Performance counter stats for '../hackbench':
    |
    | cycles
    | instructions
    | 0 major-faults
    | 8679 minor-faults

    This need not be as we can still do simple counting based perf stat.
    This unborks perf on HSDK-4xD

    Cc:
    Signed-off-by: Vineet Gupta

    Vineet Gupta
     

13 Aug, 2020

1 commit

  • After the cleanup of page fault accounting, gup does not need to pass
    task_struct around any more. Remove that parameter in the whole gup
    stack.

    Signed-off-by: Peter Xu
    Signed-off-by: Andrew Morton
    Reviewed-by: John Hubbard
    Link: http://lkml.kernel.org/r/20200707225021.200906-26-peterx@redhat.com
    Signed-off-by: Linus Torvalds

    Peter Xu
     

10 Aug, 2020

1 commit

  • Pull regset conversion fix from Al Viro:
    "Fix a regression from an unnoticed bisect hazard in the regset series.

    A bunch of old (aout, originally) primitives used by coredumps became
    dead code after fdpic conversion to regsets. Removal of that dead code
    had been the first commit in the followups to regset series;
    unfortunately, it happened to hide the bisect hazard on sh (extern for
    fpregs_get() had not been updated in the main series when it should
    have been; followup simply made fpregs_get() static). And without that
    followup commit this bisect hazard became breakage in the mainline"

    Tested-by: John Paul Adrian Glaubitz

    * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    kill unused dump_fpu() instances

    Linus Torvalds
     

08 Aug, 2020

1 commit

  • Pull ptrace regset updates from Al Viro:
    "Internal regset API changes:

    - regularize copy_regset_{to,from}_user() callers

    - switch to saner calling conventions for ->get()

    - kill user_regset_copyout()

    The ->put() side of things will have to wait for the next cycle,
    unfortunately.

    The balance is about -1KLoC and replacements for ->get() instances are
    a lot saner"

    * 'work.regset' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (41 commits)
    regset: kill user_regset_copyout{,_zero}()
    regset(): kill ->get_size()
    regset: kill ->get()
    csky: switch to ->regset_get()
    xtensa: switch to ->regset_get()
    parisc: switch to ->regset_get()
    nds32: switch to ->regset_get()
    nios2: switch to ->regset_get()
    hexagon: switch to ->regset_get()
    h8300: switch to ->regset_get()
    openrisc: switch to ->regset_get()
    riscv: switch to ->regset_get()
    c6x: switch to ->regset_get()
    ia64: switch to ->regset_get()
    arc: switch to ->regset_get()
    arm: switch to ->regset_get()
    sh: convert to ->regset_get()
    arm64: switch to ->regset_get()
    mips: switch to ->regset_get()
    sparc: switch to ->regset_get()
    ...

    Linus Torvalds
     

05 Aug, 2020

1 commit

  • Pull fork cleanups from Christian Brauner:
    "This is cleanup series from when we reworked a chunk of the process
    creation paths in the kernel and switched to struct
    {kernel_}clone_args.

    High-level this does two main things:

    - Remove the double export of both do_fork() and _do_fork() where
    do_fork() used the incosistent legacy clone calling convention.

    Now we only export _do_fork() which is based on struct
    kernel_clone_args.

    - Remove the copy_thread_tls()/copy_thread() split making the
    architecture specific HAVE_COYP_THREAD_TLS config option obsolete.

    This switches all remaining architectures to select
    HAVE_COPY_THREAD_TLS and thus to the copy_thread_tls() calling
    convention. The current split makes the process creation codepaths
    more convoluted than they need to be. Each architecture has their own
    copy_thread() function unless it selects HAVE_COPY_THREAD_TLS then it
    has a copy_thread_tls() function.

    The split is not needed anymore nowadays, all architectures support
    CLONE_SETTLS but quite a few of them never bothered to select
    HAVE_COPY_THREAD_TLS and instead simply continued to use copy_thread()
    and use the old calling convention. Removing this split cleans up the
    process creation codepaths and paves the way for implementing clone3()
    on such architectures since it requires the copy_thread_tls() calling
    convention.

    After having made each architectures support copy_thread_tls() this
    series simply renames that function back to copy_thread(). It also
    switches all architectures that call do_fork() directly over to
    _do_fork() and the struct kernel_clone_args calling convention. This
    is a corollary of switching the architectures that did not yet support
    it over to copy_thread_tls() since do_fork() is conditional on not
    supporting copy_thread_tls() (Mostly because it lacks a separate
    argument for tls which is trivial to fix but there's no need for this
    function to exist.).

    The do_fork() removal is in itself already useful as it allows to to
    remove the export of both do_fork() and _do_fork() we currently have
    in favor of only _do_fork(). This has already been discussed back when
    we added clone3(). The legacy clone() calling convention is - as is
    probably well-known - somewhat odd:

    #
    # ABI hall of shame
    #
    config CLONE_BACKWARDS
    config CLONE_BACKWARDS2
    config CLONE_BACKWARDS3

    that is aggravated by the fact that some architectures such as sparc
    follow the CLONE_BACKWARDSx calling convention but don't really select
    the corresponding config option since they call do_fork() directly.

    So do_fork() enforces a somewhat arbitrary calling convention in the
    first place that doesn't really help the individual architectures that
    deviate from it. They can thus simply be switched to _do_fork()
    enforcing a single calling convention. (I really hope that any new
    architectures will __not__ try to implement their own calling
    conventions...)

    Most architectures already have made a similar switch (m68k comes to
    mind).

    Overall this removes more code than it adds even with a good portion
    of added comments. It simplifies a chunk of arch specific assembly
    either by moving the code into C or by simply rewriting the assembly.

    Architectures that have been touched in non-trivial ways have all been
    actually boot and stress tested: sparc and ia64 have been tested with
    Debian 9 images. They are the two architectures which have been
    touched the most. All non-trivial changes to architectures have seen
    acks from the relevant maintainers. nios2 with a custom built
    buildroot image. h8300 I couldn't get something bootable to test on
    but the changes have been fairly automatic and I'm sure we'll hear
    people yell if I broke something there.

    All other architectures that have been touched in trivial ways have
    been compile tested for each single patch of the series via git rebase
    -x "make ..." v5.8-rc2. arm{64} and x86{_64} have been boot tested
    even though they have just been trivially touched (removal of the
    HAVE_COPY_THREAD_TLS macro from their Kconfig) because well they are
    basically "core architectures" and since it is trivial to get your
    hands on a useable image"

    * tag 'fork-v5.9' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux:
    arch: rename copy_thread_tls() back to copy_thread()
    arch: remove HAVE_COPY_THREAD_TLS
    unicore: switch to copy_thread_tls()
    sh: switch to copy_thread_tls()
    nds32: switch to copy_thread_tls()
    microblaze: switch to copy_thread_tls()
    hexagon: switch to copy_thread_tls()
    c6x: switch to copy_thread_tls()
    alpha: switch to copy_thread_tls()
    fork: remove do_fork()
    h8300: select HAVE_COPY_THREAD_TLS, switch to kernel_clone_args
    nios2: enable HAVE_COPY_THREAD_TLS, switch to kernel_clone_args
    ia64: enable HAVE_COPY_THREAD_TLS, switch to kernel_clone_args
    sparc: unconditionally enable HAVE_COPY_THREAD_TLS
    sparc: share process creation helpers between sparc and sparc64
    sparc64: enable HAVE_COPY_THREAD_TLS
    fork: fold legacy_clone_args_valid() into _do_fork()

    Linus Torvalds
     

28 Jul, 2020

2 commits

  • dump_fpu() is used only on the architectures that support elf
    and have neither CORE_DUMP_USE_REGSET nor ELF_CORE_COPY_FPREGS
    defined.

    Currently that's csky, m68k, microblaze, nds32 and unicore32. The rest
    of the instances are dead code.

    NB: THIS MUST GO AFTER ELF_FDPIC CONVERSION

    Signed-off-by: Al Viro

    Al Viro
     
  • NB: it used to do short store; fix is needed earlier in the series.

    Signed-off-by: Al Viro

    Al Viro
     

05 Jul, 2020

1 commit

  • Now that HAVE_COPY_THREAD_TLS has been removed, rename copy_thread_tls()
    back simply copy_thread(). It's a simpler name, and doesn't imply that only
    tls is copied here. This finishes an outstanding chunk of internal process
    creation work since we've added clone3().

    Cc: linux-arch@vger.kernel.org
    Acked-by: Thomas Bogendoerfer A
    Acked-by: Stafford Horne
    Acked-by: Greentime Hu
    Acked-by: Geert Uytterhoeven A
    Reviewed-by: Kees Cook
    Signed-off-by: Christian Brauner

    Christian Brauner
     

19 Jun, 2020

1 commit


17 Jun, 2020

2 commits

  • Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • Trap handler for syscall tracing reads EFA (Exception Fault Address),
    in case strace wants PC of trap instruction (EFA is not part of pt_regs
    as of current code).

    However this EFA read is racy as it happens after dropping to pure
    kernel mode (re-enabling interrupts). A taken interrupt could
    context-switch, trigger a different task's trap, clobbering EFA for this
    execution context.

    Fix this by reading EFA early, before re-enabling interrupts. A slight
    side benefit is de-duplication of FAKE_RET_FROM_EXCPN in trap handler.
    The trap handler is common to both ARCompact and ARCv2 builds too.

    This just came out of code rework/review and no real problem was reported
    but is clearly a potential problem specially for strace.

    Cc:
    Signed-off-by: Vineet Gupta

    Vineet Gupta
     

10 Jun, 2020

3 commits

  • This change converts the existing mmap_sem rwsem calls to use the new mmap
    locking API instead.

    The change is generated using coccinelle with the following rule:

    // spatch --sp-file mmap_lock_api.cocci --in-place --include-headers --dir .

    @@
    expression mm;
    @@
    (
    -init_rwsem
    +mmap_init_lock
    |
    -down_write
    +mmap_write_lock
    |
    -down_write_killable
    +mmap_write_lock_killable
    |
    -down_write_trylock
    +mmap_write_trylock
    |
    -up_write
    +mmap_write_unlock
    |
    -downgrade_write
    +mmap_write_downgrade
    |
    -down_read
    +mmap_read_lock
    |
    -down_read_killable
    +mmap_read_lock_killable
    |
    -down_read_trylock
    +mmap_read_trylock
    |
    -up_read
    +mmap_read_unlock
    )
    -(&mm->mmap_sem)
    +(mm)

    Signed-off-by: Michel Lespinasse
    Signed-off-by: Andrew Morton
    Reviewed-by: Daniel Jordan
    Reviewed-by: Laurent Dufour
    Reviewed-by: Vlastimil Babka
    Cc: Davidlohr Bueso
    Cc: David Rientjes
    Cc: Hugh Dickins
    Cc: Jason Gunthorpe
    Cc: Jerome Glisse
    Cc: John Hubbard
    Cc: Liam Howlett
    Cc: Matthew Wilcox
    Cc: Peter Zijlstra
    Cc: Ying Han
    Link: http://lkml.kernel.org/r/20200520052908.204642-5-walken@google.com
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     
  • Now the last users of show_stack() got converted to use an explicit log
    level, show_stack_loglvl() can drop it's redundant suffix and become once
    again well known show_stack().

    Signed-off-by: Dmitry Safonov
    Signed-off-by: Andrew Morton
    Link: http://lkml.kernel.org/r/20200418201944.482088-51-dima@arista.com
    Signed-off-by: Linus Torvalds

    Dmitry Safonov
     
  • Currently, the log-level of show_stack() depends on a platform
    realization. It creates situations where the headers are printed with
    lower log level or higher than the stacktrace (depending on a platform or
    user).

    Furthermore, it forces the logic decision from user to an architecture
    side. In result, some users as sysrq/kdb/etc are doing tricks with
    temporary rising console_loglevel while printing their messages. And in
    result it not only may print unwanted messages from other CPUs, but also
    omit printing at all in the unlucky case where the printk() was deferred.

    Introducing log-level parameter and KERN_UNSUPPRESSED [1] seems an easier
    approach than introducing more printk buffers. Also, it will consolidate
    printings with headers.

    Introduce show_stack_loglvl(), that eventually will substitute
    show_stack().

    As a good side-effect header "Stack Trace:" is now printed with the same
    log level as the rest of backtrace.

    [1]: https://lore.kernel.org/lkml/20190528002412.1625-1-dima@arista.com/T/#u

    Signed-off-by: Dmitry Safonov
    Signed-off-by: Andrew Morton
    Cc: Vineet Gupta
    Link: http://lkml.kernel.org/r/20200418201944.482088-4-dima@arista.com
    Signed-off-by: Linus Torvalds

    Dmitry Safonov
     

15 May, 2020

1 commit


13 Apr, 2020

3 commits


04 Apr, 2020

1 commit

  • Pull ARC updates from Vineet Gupta:

    - Support for DSP enabled userspace (save/restore regs)

    - Misc other platform fixes

    * tag 'arc-5.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc:
    ARC: allow userspace DSP applications to use AGU extensions
    ARC: add support for DSP-enabled userspace applications
    ARC: handle DSP presence in HW
    ARC: add helpers to sanitize config options
    ARC: [plat-axs10x]: PGU: remove unused encoder-slave property

    Linus Torvalds
     

25 Mar, 2020

1 commit


17 Mar, 2020

2 commits

  • To be able to run DSP-enabled userspace applications with AGU
    (address generation unit) extensions we additionally need to
    save and restore following registers at context switch:
    * AGU_AP*
    * AGU_OS*
    * AGU_MOD*

    Reviewed-by: Vineet Gupta
    Signed-off-by: Eugeniy Paltsev
    Signed-off-by: Vineet Gupta

    Eugeniy Paltsev
     
  • To be able to run DSP-enabled userspace applications we need to
    save and restore following DSP-related registers:
    At IRQ/exception entry/exit:
    * DSP_CTRL (save it and reset to value suitable for kernel)
    * ACC0_LO, ACC0_HI (we already save them as r58, r59 pair)
    At context switch:
    * ACC0_GLO, ACC0_GHI
    * DSP_BFLY0, DSP_FFT_CTRL

    Reviewed-by: Vineet Gupta
    Signed-off-by: Eugeniy Paltsev
    Signed-off-by: Vineet Gupta

    Eugeniy Paltsev