25 Jan, 2021

1 commit


20 Jan, 2021

2 commits

  • 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 0ea02c73775277001c651ad4a0e83781a9acf406 upstream.

    commit b91540d52a08 ("RISC-V: Add EFI runtime services") add
    a duplicated PAGE_KERNEL_EXEC, kill it.

    Signed-off-by: Kefeng Wang
    Reviewed-by: Pekka Enberg
    Reviewed-by: Atish Patra
    Fixes: b91540d52a08 ("RISC-V: Add EFI runtime services")
    Cc: stable@vger.kernel.org
    Signed-off-by: Palmer Dabbelt
    Signed-off-by: Greg Kroah-Hartman

    Kefeng Wang
     

13 Jan, 2021

1 commit

  • [ Upstream commit 87dbc209ea04645fd2351981f09eff5d23f8e2e9 ]

    Make mandatory in include/asm-generic/Kbuild and
    remove all arch/*/include/asm/local64.h arch-specific files since they
    only #include .

    This fixes build errors on arch/c6x/ and arch/nios2/ for
    block/blk-iocost.c.

    Build-tested on 21 of 25 arch-es. (tools problems on the others)

    Yes, we could even rename to
    and change all #includes to use
    instead.

    Link: https://lkml.kernel.org/r/20201227024446.17018-1-rdunlap@infradead.org
    Signed-off-by: Randy Dunlap
    Suggested-by: Christoph Hellwig
    Reviewed-by: Masahiro Yamada
    Cc: Jens Axboe
    Cc: Ley Foon Tan
    Cc: Mark Salter
    Cc: Aurelien Jacquiot
    Cc: Peter Zijlstra
    Cc: Arnd Bergmann
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds
    Signed-off-by: Sasha Levin

    Randy Dunlap
     

22 Dec, 2020

1 commit

  • To enable seccomp constant action bitmaps, we need to have a static
    mapping to the audit architecture and system call table size. Add these
    for riscv.

    Signed-off-by: YiFei Zhu
    Signed-off-by: Kees Cook
    Link: https://lore.kernel.org/r/58ef925d00505cbb77478fa6bd2b48ab2d902460.1605101222.git.yifeifz2@illinois.edu
    (cherry picked from commit 673a11a7e4152b101bad6851c4e4c34c7c6d6dde)
    Signed-off-by: Jeff Vander Stoep
    Bug: 176068146
    Change-Id: Id527ef5da40301bbdca59d92ed24523959f96707

    YiFei Zhu
     

13 Dec, 2020

1 commit


11 Dec, 2020

1 commit

  • The timer driver uses get_cycles64() unconditionally to obtain the current
    time. A recent refactoring lost the common definition for some configs, which
    is now the only one we need.

    Fixes: d5be89a8d118 ("RISC-V: Resurrect the MMIO timer implementation for M-mode systems")
    Reported-by: kernel test robot
    Signed-off-by: Palmer Dabbelt

    Palmer Dabbelt
     

29 Nov, 2020

1 commit

  • Pull RISC-V fixes from Palmer Dabbelt:
    "I've collected a handful of fixes over the past few weeks:

    - A fix to un-break the build-id argument to the vDSO build, which is
    necessary for the LLVM linker.

    - A fix to initialize the jump label subsystem, without which it (and
    all the stuff that uses it) doesn't actually function.

    - A fix to include from , without
    which some drivers won't compile"

    * tag 'riscv-for-linus-5.10-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux:
    RISC-V: fix barrier() use in
    RISC-V: Add missing jump label initialization
    riscv: Explicitly specify the build id style in vDSO Makefile again

    Linus Torvalds
     

26 Nov, 2020

1 commit

  • riscv's uses barrier() so it should include

    Fixes this build error:
    CC [M] drivers/net/ethernet/emulex/benet/be_main.o
    In file included from ./include/vdso/processor.h:10,
    from ./arch/riscv/include/asm/processor.h:11,
    from ./include/linux/prefetch.h:15,
    from drivers/net/ethernet/emulex/benet/be_main.c:14:
    ./arch/riscv/include/asm/vdso/processor.h: In function 'cpu_relax':
    ./arch/riscv/include/asm/vdso/processor.h:14:2: error: implicit declaration of function 'barrier' [-Werror=implicit-function-declaration]
    14 | barrier();

    This happens with a total of 5 networking drivers -- they all use
    .

    rv64 allmodconfig now builds cleanly after this patch.

    Fixes fallout from:
    815f0ddb346c ("include/linux/compiler*.h: make compiler-*.h mutually exclusive")

    Fixes: ad5d1122b82f ("riscv: use vDSO common flow to reduce the latency of the time-related functions")
    Reported-by: Andreas Schwab
    Signed-off-by: Randy Dunlap
    Acked-by: Arvind Sankar
    Signed-off-by: Palmer Dabbelt
    Reviewed-by: Nick Desaulniers
    Signed-off-by: Palmer Dabbelt

    Randy Dunlap
     

16 Nov, 2020

1 commit

  • Stefan Agner reported a bug when using zsram on 32-bit Arm machines
    with RAM above the 4GB address boundary:

    Unable to handle kernel NULL pointer dereference at virtual address 00000000
    pgd = a27bd01c
    [00000000] *pgd=236a0003, *pmd=1ffa64003
    Internal error: Oops: 207 [#1] SMP ARM
    Modules linked in: mdio_bcm_unimac(+) brcmfmac cfg80211 brcmutil raspberrypi_hwmon hci_uart crc32_arm_ce bcm2711_thermal phy_generic genet
    CPU: 0 PID: 123 Comm: mkfs.ext4 Not tainted 5.9.6 #1
    Hardware name: BCM2711
    PC is at zs_map_object+0x94/0x338
    LR is at zram_bvec_rw.constprop.0+0x330/0xa64
    pc : [] lr : [] psr: 60000013
    sp : e376bbe0 ip : 00000000 fp : c1e2921c
    r10: 00000002 r9 : c1dda730 r8 : 00000000
    r7 : e8ff7a00 r6 : 00000000 r5 : 02f9ffa0 r4 : e3710000
    r3 : 000fdffe r2 : c1e0ce80 r1 : ebf979a0 r0 : 00000000
    Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
    Control: 30c5383d Table: 235c2a80 DAC: fffffffd
    Process mkfs.ext4 (pid: 123, stack limit = 0x495a22e6)
    Stack: (0xe376bbe0 to 0xe376c000)

    As it turns out, zsram needs to know the maximum memory size, which
    is defined in MAX_PHYSMEM_BITS when CONFIG_SPARSEMEM is set, or in
    MAX_POSSIBLE_PHYSMEM_BITS on the x86 architecture.

    The same problem will be hit on all 32-bit architectures that have a
    physical address space larger than 4GB and happen to not enable sparsemem
    and include asm/sparsemem.h from asm/pgtable.h.

    After the initial discussion, I suggested just always defining
    MAX_POSSIBLE_PHYSMEM_BITS whenever CONFIG_PHYS_ADDR_T_64BIT is
    set, or provoking a build error otherwise. This addresses all
    configurations that can currently have this runtime bug, but
    leaves all other configurations unchanged.

    I looked up the possible number of bits in source code and
    datasheets, here is what I found:

    - on ARC, CONFIG_ARC_HAS_PAE40 controls whether 32 or 40 bits are used
    - on ARM, CONFIG_LPAE enables 40 bit addressing, without it we never
    support more than 32 bits, even though supersections in theory allow
    up to 40 bits as well.
    - on MIPS, some MIPS32r1 or later chips support 36 bits, and MIPS32r5
    XPA supports up to 60 bits in theory, but 40 bits are more than
    anyone will ever ship
    - On PowerPC, there are three different implementations of 36 bit
    addressing, but 32-bit is used without CONFIG_PTE_64BIT
    - On RISC-V, the normal page table format can support 34 bit
    addressing. There is no highmem support on RISC-V, so anything
    above 2GB is unused, but it might be useful to eventually support
    CONFIG_ZRAM for high pages.

    Fixes: 61989a80fb3a ("staging: zsmalloc: zsmalloc memory allocation library")
    Fixes: 02390b87a945 ("mm/zsmalloc: Prepare to variable MAX_PHYSMEM_BITS")
    Acked-by: Thomas Bogendoerfer
    Reviewed-by: Stefan Agner
    Tested-by: Stefan Agner
    Acked-by: Mike Rapoport
    Link: https://lore.kernel.org/linux-mm/bdfa44bf1c570b05d6c70898e2bbb0acf234ecdf.1604762181.git.stefan@agner.ch/
    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     

06 Nov, 2020

1 commit

  • The copy_from_kernel_nofault() is broken on riscv because the 'dst' and
    'src' are mistakenly reversed in __put_kernel_nofault() macro.

    copy_to_kernel_nofault:
    ...
    0xffffffe0003159b8 : sd a4,0(a1) # a1 aka 'src'

    Fixes: d464118cdc ("riscv: implement __get_kernel_nofault and __put_user_nofault")
    Signed-off-by: Changbin Du
    Reviewed-by: Christoph Hellwig
    Reviewed-by: Anup Patel
    Tested-by: Anup Patel
    Signed-off-by: Palmer Dabbelt

    Changbin Du
     

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
     

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
     

05 Oct, 2020

4 commits


03 Oct, 2020

5 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
     
  • Add a RISC-V architecture specific stub code that actually copies the
    actual kernel image to a valid address and jump to it after boot services
    are terminated. Enable UEFI related kernel configs as well for RISC-V.

    Signed-off-by: Atish Patra
    Link: https://lore.kernel.org/r/20200421033336.9663-4-atish.patra@wdc.com
    [ardb: - move hartid fetch into check_platform_features()
    - use image_size not reserve_size
    - select ISA_C
    - do not use dram_base]
    Signed-off-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
     

01 Oct, 2020

1 commit

  • The NoMMU kernel is broken for QEMU virt machine from Linux-5.9-rc6
    because clint_time_val is used even before CLINT driver is probed
    at following places:
    1. rand_initialize() calls get_cycles() which in-turn uses
    clint_time_val
    2. boot_init_stack_canary() calls get_cycles() which in-turn
    uses clint_time_val

    The issue#1 (above) is fixed by providing custom random_get_entropy()
    for RISC-V NoMMU kernel. For issue#2 (above), we remove dependency of
    boot_init_stack_canary() on get_cycles() and this is aligned with the
    boot_init_stack_canary() implementations of ARM, ARM64 and MIPS kernel.

    Fixes: d5be89a8d118 ("RISC-V: Resurrect the MMIO timer implementation for M-mode systems")
    Signed-off-by: Anup Patel
    Tested-by: Damien Le Moal
    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
     

20 Sep, 2020

1 commit

  • The K210 doesn't implement rdtime in M-mode, and since that's where Linux runs
    in the NOMMU systems that means we can't use rdtime. The K210 is the only
    system that anyone is currently running NOMMU or M-mode on, so here we're just
    inlining the timer read directly.

    This also adds the CLINT driver as an !MMU dependency, as it's currently the
    only timer driver availiable for these systems and without it we get a build
    failure for some configurations.

    Tested-by: Damien Le Moal
    Signed-off-by: Palmer Dabbelt

    Palmer Dabbelt
     

16 Sep, 2020

2 commits

  • 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
     
  • AT_VECTOR_SIZE_ARCH should be defined with the maximum number of
    NEW_AUX_ENT entries that ARCH_DLINFO can contain, but it wasn't defined
    for RISC-V at all even though ARCH_DLINFO will contain one NEW_AUX_ENT
    for the VDSO address.

    Signed-off-by: Zong Li
    Reviewed-by: Palmer Dabbelt
    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
     

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

  • Pull timekeeping updates from Thomas Gleixner:
    "A set of timekeeping/VDSO updates:

    - Preparatory work to allow S390 to switch over to the generic VDSO
    implementation.

    S390 requires that the VDSO data pointer is handed in to the
    counter read function when time namespace support is enabled.
    Adding the pointer is a NOOP for all other architectures because
    the compiler is supposed to optimize that out when it is unused in
    the architecture specific inline. The change also solved a similar
    problem for MIPS which fortunately has time namespaces not yet
    enabled.

    S390 needs to update clock related VDSO data independent of the
    timekeeping updates. This was solved so far with yet another
    sequence counter in the S390 implementation. A better solution is
    to utilize the already existing VDSO sequence count for this. The
    core code now exposes helper functions which allow to serialize
    against the timekeeper code and against concurrent readers.

    S390 needs extra data for their clock readout function. The initial
    common VDSO data structure did not provide a way to add that. It
    now has an embedded architecture specific struct embedded which
    defaults to an empty struct.

    Doing this now avoids tree dependencies and conflicts post rc1 and
    allows all other architectures which work on generic VDSO support
    to work from a common upstream base.

    - A trivial comment fix"

    * tag 'timers-urgent-2020-08-14' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    time: Delete repeated words in comments
    lib/vdso: Allow to add architecture-specific vdso data
    timekeeping/vsyscall: Provide vdso_update_begin/end()
    vdso/treewide: Add vdso_data pointer argument to __arch_get_hw_counter()

    Linus Torvalds
     

13 Aug, 2020

2 commits

  • segment_eq is only used to implement uaccess_kernel. Just open code
    uaccess_kernel in the arch uaccess headers and remove one layer of
    indirection.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Andrew Morton
    Acked-by: Linus Torvalds
    Acked-by: Greentime Hu
    Acked-by: Geert Uytterhoeven
    Cc: Nick Hu
    Cc: Vincent Chen
    Cc: Paul Walmsley
    Cc: Palmer Dabbelt
    Link: http://lkml.kernel.org/r/20200710135706.537715-5-hch@lst.de
    Signed-off-by: Linus Torvalds

    Christoph Hellwig
     
  • To ensure TASK_SIZE is defined for USER_DS.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Andrew Morton
    Acked-by: Linus Torvalds
    Acked-by: Palmer Dabbelt
    Cc: Nick Hu
    Cc: Greentime Hu
    Cc: Vincent Chen
    Cc: Paul Walmsley
    Cc: Geert Uytterhoeven
    Link: http://lkml.kernel.org/r/20200710135706.537715-4-hch@lst.de
    Signed-off-by: Linus Torvalds

    Christoph Hellwig
     

08 Aug, 2020

4 commits

  • Merge misc updates from Andrew Morton:

    - a few MM hotfixes

    - kthread, tools, scripts, ntfs and ocfs2

    - some of MM

    Subsystems affected by this patch series: kthread, tools, scripts, ntfs,
    ocfs2 and mm (hofixes, pagealloc, slab-generic, slab, slub, kcsan,
    debug, pagecache, gup, swap, shmem, memcg, pagemap, mremap, mincore,
    sparsemem, vmalloc, kasan, pagealloc, hugetlb and vmscan).

    * emailed patches from Andrew Morton : (162 commits)
    mm: vmscan: consistent update to pgrefill
    mm/vmscan.c: fix typo
    khugepaged: khugepaged_test_exit() check mmget_still_valid()
    khugepaged: retract_page_tables() remember to test exit
    khugepaged: collapse_pte_mapped_thp() protect the pmd lock
    khugepaged: collapse_pte_mapped_thp() flush the right range
    mm/hugetlb: fix calculation of adjust_range_if_pmd_sharing_possible
    mm: thp: replace HTTP links with HTTPS ones
    mm/page_alloc: fix memalloc_nocma_{save/restore} APIs
    mm/page_alloc.c: skip setting nodemask when we are in interrupt
    mm/page_alloc: fallbacks at most has 3 elements
    mm/page_alloc: silence a KASAN false positive
    mm/page_alloc.c: remove unnecessary end_bitidx for [set|get]_pfnblock_flags_mask()
    mm/page_alloc.c: simplify pageblock bitmap access
    mm/page_alloc.c: extract the common part in pfn_to_bitidx()
    mm/page_alloc.c: replace the definition of NR_MIGRATETYPE_BITS with PB_migratetype_bits
    mm/shuffle: remove dynamic reconfiguration
    mm/memory_hotplug: document why shuffle_zone() is relevant
    mm/page_alloc: remove nr_free_pagecache_pages()
    mm: remove vm_total_pages
    ...

    Linus Torvalds
     
  • Most architectures define pgd_free() as a wrapper for free_page().

    Provide a generic version in asm-generic/pgalloc.h and enable its use for
    most architectures.

    Signed-off-by: Mike Rapoport
    Signed-off-by: Andrew Morton
    Reviewed-by: Pekka Enberg
    Acked-by: Geert Uytterhoeven [m68k]
    Cc: Abdul Haleem
    Cc: Andy Lutomirski
    Cc: Arnd Bergmann
    Cc: Christophe Leroy
    Cc: Joerg Roedel
    Cc: Joerg Roedel
    Cc: Max Filippov
    Cc: Peter Zijlstra (Intel)
    Cc: Satheesh Rajendran
    Cc: Stafford Horne
    Cc: Stephen Rothwell
    Cc: Steven Rostedt
    Cc: Matthew Wilcox
    Link: http://lkml.kernel.org/r/20200627143453.31835-7-rppt@kernel.org
    Signed-off-by: Linus Torvalds

    Mike Rapoport
     
  • For most architectures that support >2 levels of page tables,
    pmd_alloc_one() is a wrapper for __get_free_pages(), sometimes with
    __GFP_ZERO and sometimes followed by memset(0) instead.

    More elaborate versions on arm64 and x86 account memory for the user page
    tables and call to pgtable_pmd_page_ctor() as the part of PMD page
    initialization.

    Move the arm64 version to include/asm-generic/pgalloc.h and use the
    generic version on several architectures.

    The pgtable_pmd_page_ctor() is a NOP when ARCH_ENABLE_SPLIT_PMD_PTLOCK is
    not enabled, so there is no functional change for most architectures
    except of the addition of __GFP_ACCOUNT for allocation of user page
    tables.

    The pmd_free() is a wrapper for free_page() in all the cases, so no
    functional change here.

    Signed-off-by: Mike Rapoport
    Signed-off-by: Andrew Morton
    Reviewed-by: Pekka Enberg
    Cc: Matthew Wilcox
    Cc: Abdul Haleem
    Cc: Andy Lutomirski
    Cc: Arnd Bergmann
    Cc: Christophe Leroy
    Cc: Joerg Roedel
    Cc: Joerg Roedel
    Cc: Max Filippov
    Cc: Peter Zijlstra (Intel)
    Cc: Satheesh Rajendran
    Cc: Stafford Horne
    Cc: Stephen Rothwell
    Cc: Steven Rostedt
    Cc: Geert Uytterhoeven
    Link: http://lkml.kernel.org/r/20200627143453.31835-5-rppt@kernel.org
    Signed-off-by: Linus Torvalds

    Mike Rapoport
     
  • 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
     

06 Aug, 2020

1 commit

  • MIPS already uses and S390 will need the vdso data pointer in
    __arch_get_hw_counter().

    This works nicely as long as the architecture does not support time
    namespaces in the VDSO. With time namespaces enabled the regular
    accessor to the vdso data pointer __arch_get_vdso_data() will return the
    namespace specific VDSO data page for tasks which are part of a
    non-root time namespace. This would cause the architectures which need
    the vdso data pointer in __arch_get_hw_counter() to access the wrong
    vdso data page.

    Add a vdso_data pointer argument to __arch_get_hw_counter() and hand it in
    from the call sites in the core code. For architectures which do not need
    the data pointer in their counter accessor function the compiler will just
    optimize it out.

    Fix up all existing architecture implementations and make MIPS utilize the
    pointer instead of invoking the accessor function.

    No functional change and no change in the resulting object code (except
    MIPS).

    Signed-off-by: Thomas Gleixner
    Link: https://lkml.kernel.org/r/draft-87wo2ekuzn.fsf@nanos.tec.linutronix.de

    Thomas Gleixner