20 Jan, 2021

3 commits

  • commit 7cd1af107a92eb63b93a96dc07406dcbc5269436 upstream.

    We should call irq trace only if interrupt is going to be enabled during
    excecption handling. Otherwise, it results in following warning during
    boot with lock debugging enabled.

    [ 0.000000] ------------[ cut here ]------------
    [ 0.000000] DEBUG_LOCKS_WARN_ON(early_boot_irqs_disabled)
    [ 0.000000] WARNING: CPU: 0 PID: 0 at kernel/locking/lockdep.c:4085 lockdep_hardirqs_on_prepare+0x22a/0x22e
    [ 0.000000] Modules linked in:
    [ 0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 5.10.0-00022-ge20097fb37e2-dirty #548
    [ 0.000000] epc: c005d5d4 ra : c005d5d4 sp : c1c01e80
    [ 0.000000] gp : c1d456e0 tp : c1c0a980 t0 : 00000000
    [ 0.000000] t1 : ffffffff t2 : 00000000 s0 : c1c01ea0
    [ 0.000000] s1 : c100f360 a0 : 0000002d a1 : c00666ee
    [ 0.000000] a2 : 00000000 a3 : 00000000 a4 : 00000000
    [ 0.000000] a5 : 00000000 a6 : c1c6b390 a7 : 3ffff00e
    [ 0.000000] s2 : c2384fe8 s3 : 00000000 s4 : 00000001
    [ 0.000000] s5 : c1c0a980 s6 : c1d48000 s7 : c1613b4c
    [ 0.000000] s8 : 00000fff s9 : 80000200 s10: c1613b40
    [ 0.000000] s11: 00000000 t3 : 00000000 t4 : 00000000
    [ 0.000000] t5 : 00000001 t6 : 00000000

    Fixes: 3c4697982982 ("riscv:Enable LOCKDEP_SUPPORT & fixup TRACE_IRQFLAGS_SUPPORT")

    Signed-off-by: Atish Patra
    Signed-off-by: Palmer Dabbelt
    Signed-off-by: Greg Kroah-Hartman

    Atish Patra
     
  • commit 0aa2ec8a475fb505fd98d93bbcf4e03beeeebcb6 upstream.

    The patch fix commit: ad5d112 ("riscv: use vDSO common flow to
    reduce the latency of the time-related functions").

    The GENERIC_TIME_VSYSCALL should be CONFIG_GENERIC_TIME_VSYSCALL
    or vgettimeofday won't work.

    Signed-off-by: Guo Ren
    Reviewed-by: Pekka Enberg
    Fixes: ad5d1122b82f ("riscv: use vDSO common flow to reduce the latency of the time-related functions")
    Cc: stable@vger.kernel.org
    Signed-off-by: Palmer Dabbelt
    Signed-off-by: Greg Kroah-Hartman

    Guo Ren
     
  • commit cf7b2ae4d70432fa94ebba3fbaab825481ae7189 upstream.

    Properly return -ENOSYS for syscall -1 instead of leaving the return value
    uninitialized. This fixes the strace teststuite.

    Fixes: 5340627e3fe0 ("riscv: add support for SECCOMP and SECCOMP_FILTER")
    Cc: stable@vger.kernel.org
    Signed-off-by: Andreas Schwab
    Reviewed-by: Tycho Andersen
    Signed-off-by: Palmer Dabbelt
    Signed-off-by: Greg Kroah-Hartman

    Andreas Schwab
     

30 Nov, 2020

1 commit


26 Nov, 2020

2 commits

  • The jump_label_init() should be called from setup_arch() very
    early for proper functioning of jump label support.

    Fixes: ebc00dde8a97 ("riscv: Add jump-label implementation")
    Signed-off-by: Anup Patel
    Signed-off-by: Palmer Dabbelt

    Anup Patel
     
  • Commit a96843372331 ("kbuild: explicitly specify the build id style")
    explicitly set the build ID style to SHA1. Commit c2c81bb2f691 ("RISC-V:
    Fix the VDSO symbol generaton for binutils-2.35+") undid this change,
    likely unintentionally.

    Restore it so that the build ID style stays consistent across the tree
    regardless of linker.

    Fixes: c2c81bb2f691 ("RISC-V: Fix the VDSO symbol generaton for binutils-2.35+")
    Signed-off-by: Nathan Chancellor
    Reviewed-by: Nick Desaulniers
    Reviewed-by: Bill Wendling
    Signed-off-by: Palmer Dabbelt

    Nathan Chancellor
     

24 Nov, 2020

1 commit

  • We call arch_cpu_idle() with RCU disabled, but then use
    local_irq_{en,dis}able(), which invokes tracing, which relies on RCU.

    Switch all arch_cpu_idle() implementations to use
    raw_local_irq_{en,dis}able() and carefully manage the
    lockdep,rcu,tracing state like we do in entry.

    (XXX: we really should change arch_cpu_idle() to not return with
    interrupts enabled)

    Reported-by: Sven Schnelle
    Signed-off-by: Peter Zijlstra (Intel)
    Reviewed-by: Mark Rutland
    Tested-by: Mark Rutland
    Link: https://lkml.kernel.org/r/20201120114925.594122626@infradead.org

    Peter Zijlstra
     

16 Nov, 2020

1 commit

  • Pull perf fixes from Thomas Gleixner:
    "A set of fixes for perf:

    - A set of commits which reduce the stack usage of various perf
    event handling functions which allocated large data structs on
    stack causing stack overflows in the worst case

    - Use the proper mechanism for detecting soft interrupts in the
    recursion protection

    - Make the resursion protection simpler and more robust

    - Simplify the scheduling of event groups to make the code more
    robust and prepare for fixing the issues vs. scheduling of
    exclusive event groups

    - Prevent event multiplexing and rotation for exclusive event groups

    - Correct the perf event attribute exclusive semantics to take
    pinned events, e.g. the PMU watchdog, into account

    - Make the anythread filtering conditional for Intel's generic PMU
    counters as it is not longer guaranteed to be supported on newer
    CPUs. Check the corresponding CPUID leaf to make sure

    - Fixup a duplicate initialization in an array which was probably
    caused by the usual 'copy & paste - forgot to edit' mishap"

    * tag 'perf-urgent-2020-11-15' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf/x86/intel/uncore: Fix Add BW copypasta
    perf/x86/intel: Make anythread filter support conditional
    perf: Tweak perf_event_attr::exclusive semantics
    perf: Fix event multiplexing for exclusive groups
    perf: Simplify group_sched_in()
    perf: Simplify group_sched_out()
    perf/x86: Make dummy_iregs static
    perf/arch: Remove perf_sample_data::regs_user_copy
    perf: Optimize get_recursion_context()
    perf: Fix get_recursion_context()
    perf/x86: Reduce stack usage for x86_pmu::drain_pebs()
    perf: Reduce stack usage of perf_output_begin()

    Linus Torvalds
     

10 Nov, 2020

1 commit

  • struct perf_sample_data lives on-stack, we should be careful about it's
    size. Furthermore, the pt_regs copy in there is only because x86_64 is a
    trainwreck, solve it differently.

    Reported-by: Thomas Gleixner
    Signed-off-by: Peter Zijlstra (Intel)
    Tested-by: Steven Rostedt
    Link: https://lkml.kernel.org/r/20201030151955.258178461@infradead.org

    Peter Zijlstra
     

06 Nov, 2020

2 commits

  • We were relying on GNU ld's ability to re-link executable files in order
    to extract our VDSO symbols. This behavior was deemed a bug as of
    binutils-2.35 (specifically the binutils-gdb commit a87e1817a4 ("Have
    the linker fail if any attempt to link in an executable is made."), but
    as that has been backported to at least Debian's binutils-2.34 in may
    manifest in other places.

    The previous version of this was a bit of a mess: we were linking a
    static executable version of the VDSO, containing only a subset of the
    input symbols, which we then linked into the kernel. This worked, but
    certainly wasn't a supported path through the toolchain. Instead this
    new version parses the textual output of nm to produce a symbol table.
    Both rely on near-zero addresses being linkable, but as we rely on weak
    undefined symbols being linkable elsewhere I don't view this as a major
    issue.

    Fixes: e2c0cdfba7f6 ("RISC-V: User-facing API")
    Signed-off-by: Palmer Dabbelt

    Palmer Dabbelt
     
  • M-Mode Linux is loaded at the start of RAM, not 2MB later. Perhaps this
    should be calculated based on PAGE_OFFSET somehow? Even better would be to
    deprecate text_offset and instead introduce something absolute.

    Signed-off-by: Sean Anderson
    Signed-off-by: Palmer Dabbelt

    Sean Anderson
     

05 Nov, 2020

1 commit


26 Oct, 2020

1 commit

  • Use a more generic form for __section that requires quotes to avoid
    complications with clang and gcc differences.

    Remove the quote operator # from compiler_attributes.h __section macro.

    Convert all unquoted __section(foo) uses to quoted __section("foo").
    Also convert __attribute__((section("foo"))) uses to __section("foo")
    even if the __attribute__ has multiple list entry forms.

    Conversion done using the script at:

    https://lore.kernel.org/lkml/75393e5ddc272dc7403de74d645e6c6e0f4e70eb.camel@perches.com/2-convert_section.pl

    Signed-off-by: Joe Perches
    Reviewed-by: Nick Desaulniers
    Reviewed-by: Miguel Ojeda
    Signed-off-by: Linus Torvalds

    Joe Perches
     

25 Oct, 2020

1 commit

  • Pull more RISC-V updates from Palmer Dabbelt:
    "Just a single patch set: the remainder of Christoph's work to remove
    set_fs, including the RISC-V portion"

    * tag 'riscv-for-linus-5.10-mw1' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux:
    riscv: remove address space overrides using set_fs()
    riscv: implement __get_kernel_nofault and __put_user_nofault
    riscv: refactor __get_user and __put_user
    riscv: use memcpy based uaccess for nommu again
    asm-generic: make the set_fs implementation optional
    asm-generic: add nommu implementations of __{get,put}_kernel_nofault
    asm-generic: improve the nommu {get,put}_user handling
    uaccess: provide a generic TASK_SIZE_MAX definition

    Linus Torvalds
     

24 Oct, 2020

1 commit

  • 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
     

23 Oct, 2020

1 commit

  • Pull Kbuild updates from Masahiro Yamada:

    - Support 'make compile_commands.json' to generate the compilation
    database more easily, avoiding stale entries

    - Support 'make clang-analyzer' and 'make clang-tidy' for static checks
    using clang-tidy

    - Preprocess scripts/modules.lds.S to allow CONFIG options in the
    module linker script

    - Drop cc-option tests from compiler flags supported by our minimal
    GCC/Clang versions

    - Use always 12-digits commit hash for CONFIG_LOCALVERSION_AUTO=y

    - Use sha1 build id for both BFD linker and LLD

    - Improve deb-pkg for reproducible builds and rootless builds

    - Remove stale, useless scripts/namespace.pl

    - Turn -Wreturn-type warning into error

    - Fix build error of deb-pkg when CONFIG_MODULES=n

    - Replace 'hostname' command with more portable 'uname -n'

    - Various Makefile cleanups

    * tag 'kbuild-v5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (34 commits)
    kbuild: Use uname for LINUX_COMPILE_HOST detection
    kbuild: Only add -fno-var-tracking-assignments for old GCC versions
    kbuild: remove leftover comment for filechk utility
    treewide: remove DISABLE_LTO
    kbuild: deb-pkg: clean up package name variables
    kbuild: deb-pkg: do not build linux-headers package if CONFIG_MODULES=n
    kbuild: enforce -Werror=return-type
    scripts: remove namespace.pl
    builddeb: Add support for all required debian/rules targets
    builddeb: Enable rootless builds
    builddeb: Pass -n to gzip for reproducible packages
    kbuild: split the build log of kallsyms
    kbuild: explicitly specify the build id style
    scripts/setlocalversion: make git describe output more reliable
    kbuild: remove cc-option test of -Werror=date-time
    kbuild: remove cc-option test of -fno-stack-check
    kbuild: remove cc-option test of -fno-strict-overflow
    kbuild: move CFLAGS_{KASAN,UBSAN,KCSAN} exports to relevant Makefiles
    kbuild: remove redundant CONFIG_KASAN check from scripts/Makefile.kasan
    kbuild: do not create built-in objects for external module builds
    ...

    Linus Torvalds
     

20 Oct, 2020

1 commit

  • Pull RISC-V updates from Palmer Dabbelt:
    "A handful of cleanups and new features:

    - A handful of cleanups for our page fault handling

    - Improvements to how we fill out cacheinfo

    - Support for EFI-based systems"

    * tag 'riscv-for-linus-5.10-mw0' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux: (22 commits)
    RISC-V: Add page table dump support for uefi
    RISC-V: Add EFI runtime services
    RISC-V: Add EFI stub support.
    RISC-V: Add PE/COFF header for EFI stub
    RISC-V: Implement late mapping page table allocation functions
    RISC-V: Add early ioremap support
    RISC-V: Move DT mapping outof fixmap
    RISC-V: Fix duplicate included thread_info.h
    riscv/mm/fault: Set FAULT_FLAG_INSTRUCTION flag in do_page_fault()
    riscv/mm/fault: Fix inline placement in vmalloc_fault() declaration
    riscv: Add cache information in AUX vector
    riscv: Define AT_VECTOR_SIZE_ARCH for ARCH_DLINFO
    riscv: Set more data to cacheinfo
    riscv/mm/fault: Move access error check to function
    riscv/mm/fault: Move FAULT_FLAG_WRITE handling in do_page_fault()
    riscv/mm/fault: Simplify mm_fault_error()
    riscv/mm/fault: Move fault error handling to mm_fault_error()
    riscv/mm/fault: Simplify fault error handling
    riscv/mm/fault: Move vmalloc fault handling to vmalloc_fault()
    riscv/mm/fault: Move bad area handling to bad_area()
    ...

    Linus Torvalds
     

18 Oct, 2020

1 commit


13 Oct, 2020

1 commit

  • 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
     

09 Oct, 2020

1 commit


07 Oct, 2020

1 commit

  • 6184358da000 ("riscv: Fixup static_obj() fail") attempted to elide a lockdep
    failure by rearranging our kernel image to place all initdata within [_stext,
    _end], thus triggering lockdep to treat these as static objects. These objects
    are released and eventually reallocated, causing check_kernel_text_object() to
    trigger a BUG().

    This backs out the change to make [_stext, _end] all-encompassing, instead just
    moving initdata. This results in initdata being outside of [__init_begin,
    __init_end], which means initdata can't be freed.

    Link: https://lore.kernel.org/linux-riscv/1593266228-61125-1-git-send-email-guoren@kernel.org/T/#t
    Signed-off-by: Guo Ren
    Reported-by: Aurelien Jarno
    Tested-by: Aurelien Jarno
    [Palmer: Clean up commit text]
    Signed-off-by: Palmer Dabbelt

    Guo Ren
     

05 Oct, 2020

1 commit


03 Oct, 2020

4 commits

  • This patch adds EFI runtime service support for RISC-V.

    Signed-off-by: Atish Patra
    [ardb: - Remove the page check]
    Signed-off-by: Ard Biesheuvel
    Acked-by: Ard Biesheuvel
    Signed-off-by: Palmer Dabbelt

    Atish Patra
     
  • Linux kernel Image can appear as an EFI application With appropriate
    PE/COFF header fields in the beginning of the Image header. An EFI
    application loader can directly load a Linux kernel Image and an EFI
    stub residing in kernel can boot Linux kernel directly.

    Add the necessary PE/COFF header.

    Signed-off-by: Atish Patra
    Link: https://lore.kernel.org/r/20200421033336.9663-3-atish.patra@wdc.com
    [ardb: - use C prefix for c.li to ensure the expected opcode is emitted
    - align all image sections according to PE/COFF section alignment ]
    Signed-off-by: Ard Biesheuvel
    Reviewed-by: Anup Patel
    Signed-off-by: Palmer Dabbelt

    Atish Patra
     
  • UEFI uses early IO or memory mappings for runtime services before
    normal ioremap() is usable. Add the necessary fixmap bindings and
    pmd mappings for generic ioremap support to work.

    Signed-off-by: Atish Patra
    Reviewed-by: Anup Patel
    Reviewed-by: Palmer Dabbelt
    Signed-off-by: Palmer Dabbelt

    Atish Patra
     
  • Currently, RISC-V reserves 1MB of fixmap memory for device tree. However,
    it maps only single PMD (2MB) space for fixmap which leaves only < 1MB space
    left for other kernel features such as early ioremap which requires fixmap
    as well. The fixmap size can be increased by another 2MB but it brings
    additional complexity and changes the virtual memory layout as well.
    If we require some additional feature requiring fixmap again, it has to be
    moved again.

    Technically, DT doesn't need a fixmap as the memory occupied by the DT is
    only used during boot. That's why, We map device tree in early page table
    using two consecutive PGD mappings at lower addresses (< PAGE_OFFSET).
    This frees lot of space in fixmap and also makes maximum supported
    device tree size supported as PGDIR_SIZE. Thus, init memory section can be used
    for the same purpose as well. This simplifies fixmap implementation.

    Signed-off-by: Anup Patel
    Signed-off-by: Atish Patra
    Reviewed-by: Palmer Dabbelt
    Signed-off-by: Palmer Dabbelt

    Anup Patel
     

24 Sep, 2020

1 commit

  • There was a request to preprocess the module linker script like we
    do for the vmlinux one. (https://lkml.org/lkml/2020/8/21/512)

    The difference between vmlinux.lds and module.lds is that the latter
    is needed for external module builds, thus must be cleaned up by
    'make mrproper' instead of 'make clean'. Also, it must be created
    by 'make modules_prepare'.

    You cannot put it in arch/$(SRCARCH)/kernel/, which is cleaned up by
    'make clean'. I moved arch/$(SRCARCH)/kernel/module.lds to
    arch/$(SRCARCH)/include/asm/module.lds.h, which is included from
    scripts/module.lds.S.

    scripts/module.lds is fine because 'make clean' keeps all the
    build artifacts under scripts/.

    You can add arch-specific sections in .

    Signed-off-by: Masahiro Yamada
    Tested-by: Jessica Yu
    Acked-by: Will Deacon
    Acked-by: Geert Uytterhoeven
    Acked-by: Palmer Dabbelt
    Reviewed-by: Kees Cook
    Acked-by: Jessica Yu

    Masahiro Yamada
     

21 Sep, 2020

1 commit

  • Pull RISC-V fixes from Palmer Dabbelt:

    - A fix for a lockdep issue to avoid an asserting triggering during
    early boot. There shouldn't be any incorrect behavior as the system
    isn't concurrent at the time.

    - The addition of a missing fence when installing early fixmap
    mappings.

    - A corretion to the K210 device tree's interrupt map.

    - A fix for M-mode timer handling on the K210.

    * tag 'riscv-for-linus-5.9-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux:
    RISC-V: Resurrect the MMIO timer implementation for M-mode systems
    riscv: Fix Kendryte K210 device tree
    riscv: Add sfence.vma after early page table changes
    RISC-V: Take text_mutex in ftrace_init_nop()

    Linus Torvalds
     

16 Sep, 2020

3 commits

  • asm/thread_info.h is included more than once, Remove the one that isn't
    necessary.

    Signed-off-by: Tian Tao
    Signed-off-by: Palmer Dabbelt

    Tian Tao
     
  • There are no standard CSR registers to provide cache information, the
    way for RISC-V is to get this information from DT. Currently, AT_L1I_X,
    AT_L1D_X and AT_L2_X are present in glibc header, and sysconf syscall
    could use them to get information of cache through AUX vector.

    The result of 'getconf -a' as follows:
    LEVEL1_ICACHE_SIZE 32768
    LEVEL1_ICACHE_ASSOC 8
    LEVEL1_ICACHE_LINESIZE 64
    LEVEL1_DCACHE_SIZE 32768
    LEVEL1_DCACHE_ASSOC 8
    LEVEL1_DCACHE_LINESIZE 64
    LEVEL2_CACHE_SIZE 2097152
    LEVEL2_CACHE_ASSOC 32
    LEVEL2_CACHE_LINESIZE 64

    Signed-off-by: Zong Li
    Reviewed-by: Palmer Dabbelt
    Reviewed-by: Pekka Enberg
    Signed-off-by: Palmer Dabbelt

    Zong Li
     
  • Set cacheinfo.{size,sets,line_size} for each cache node, then we can
    get these information from userland through auxiliary vector.

    Signed-off-by: Zong Li
    Reviewed-by: Pekka Enberg
    Signed-off-by: Palmer Dabbelt

    Zong Li
     

12 Sep, 2020

1 commit

  • Without this we get lockdep failures. They're spurious failures as SMP isn't
    up when ftrace_init_nop() is called. As far as I can tell the easiest fix is
    to just take the lock, which also seems like the safest fix.

    Signed-off-by: Palmer Dabbelt
    Acked-by: Guo Ren
    Signed-off-by: Palmer Dabbelt

    Palmer Dabbelt
     

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
     

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
     

21 Aug, 2020

2 commits

  • Right now the RISC-V timer driver is convoluted to support:
    1. Linux RISC-V S-mode (with MMU) where it will use TIME CSR for
    clocksource and SBI timer calls for clockevent device.
    2. Linux RISC-V M-mode (without MMU) where it will use CLINT MMIO
    counter register for clocksource and CLINT MMIO compare register
    for clockevent device.

    We now have a separate CLINT timer driver which also provide CLINT
    based IPI operations so let's remove CLINT MMIO related code from
    arch/riscv directory and RISC-V timer driver.

    Signed-off-by: Anup Patel
    Tested-by: Emil Renner Berhing
    Acked-by: Daniel Lezcano
    Reviewed-by: Atish Patra
    Reviewed-by: Palmer Dabbelt
    Signed-off-by: Palmer Dabbelt

    Anup Patel
     
  • We add mechanism to set custom IPI operations so that CLINT driver
    from drivers directory can provide custom IPI operations.

    Signed-off-by: Anup Patel
    Tested-by: Emil Renner Berhing
    Reviewed-by: Atish Patra
    Reviewed-by: Palmer Dabbelt
    Signed-off-by: Palmer Dabbelt

    Anup Patel
     

15 Aug, 2020

1 commit

  • Exception vector is missing on nommu platform and that is an issue.
    This patch is tested in Sipeed Maix Bit Dev Board.

    Fixes: 79b1feba5455 ("RISC-V: Setup exception vector early")
    Suggested-by: Anup Patel
    Suggested-by: Atish Patra
    Signed-off-by: Qiu Wenbo
    Reviewed-by: Atish Patra
    Reviewed-by: Anup Patel
    Signed-off-by: Palmer Dabbelt

    Qiu Wenbo
     

08 Aug, 2020

2 commits

  • Pull RISC-V updates from Palmer Dabbelt:
    "We have a lot of new kernel features for this merge window:

    - ARCH_SUPPORTS_ATOMIC_RMW, to allow OSQ locks to be enabled

    - The ability to enable NO_HZ_FULL

    - Support for enabling kcov, kmemleak, stack protector, and VM
    debugging

    - JUMP_LABEL support

    There are also a handful of cleanups"

    * tag 'riscv-for-linus-5.9-mw0' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux: (24 commits)
    riscv: disable stack-protector for vDSO
    RISC-V: Fix build warning for smpboot.c
    riscv: fix build warning of mm/pageattr
    riscv: Fix build warning for mm/init
    RISC-V: Setup exception vector early
    riscv: Select ARCH_HAS_DEBUG_VM_PGTABLE
    riscv: Use generic pgprot_* macros from
    mm: pgtable: Make generic pgprot_* macros available for no-MMU
    riscv: Cleanup unnecessary define in asm-offset.c
    riscv: Add jump-label implementation
    riscv: Support R_RISCV_ADD64 and R_RISCV_SUB64 relocs
    Replace HTTP links with HTTPS ones: RISC-V
    riscv: Add STACKPROTECTOR supported
    riscv: Fix typo in asm/hwcap.h uapi header
    riscv: Add kmemleak support
    riscv: Allow building with kcov coverage
    riscv: Enable context tracking
    riscv: Support irq_work via self IPIs
    riscv: Enable LOCKDEP_SUPPORT & fixup TRACE_IRQFLAGS_SUPPORT
    riscv: Fixup lockdep_assert_held with wrong param cpu_running
    ...

    Linus Torvalds
     
  • 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

  • Currently, building the vDSO with clang leads assembler errors like the
    following:

    /tmp/vgettimeofday-1ae0d2.s: Assembler messages:
    /tmp/vgettimeofday-1ae0d2.s:28: Error: bad expression
    /tmp/vgettimeofday-1ae0d2.s:28: Error: illegal operands `auipc a2,%got_pcrel_hi(__stack_chk_guard)'

    Disable the stack-protector for vDSO to fix these.

    Link: https://github.com/ClangBuiltLinux/linux/issues/1112
    Signed-off-by: Tobias Klauser
    Signed-off-by: Palmer Dabbelt

    Tobias Klauser