26 Oct, 2020

1 commit

  • As it stands now, the vdso32 Makefile hardcodes the linker to ld.bfd
    using -fuse-ld=bfd with $(CC). This was taken from the arm vDSO
    Makefile, as the comment notes, done in commit d2b30cd4b722 ("ARM:
    8384/1: VDSO: force use of BFD linker").

    Commit fe00e50b2db8 ("ARM: 8858/1: vdso: use $(LD) instead of $(CC) to
    link VDSO") changed that Makefile to use $(LD) directly instead of
    through $(CC), which matches how the rest of the kernel operates. Since
    then, LD=ld.lld means that the arm vDSO will be linked with ld.lld,
    which has shown no problems so far.

    Allow ld.lld to link this vDSO as we do the regular arm vDSO. To do
    this, we need to do a few things:

    * Add a LD_COMPAT variable, which defaults to $(CROSS_COMPILE_COMPAT)ld
    with gcc and $(LD) if LLVM is 1, which will be ld.lld, or
    $(CROSS_COMPILE_COMPAT)ld if not, which matches the logic of the main
    Makefile. It is overrideable for further customization and avoiding
    breakage.

    * Eliminate cc32-ldoption, which matches commit 055efab3120b ("kbuild:
    drop support for cc-ldoption").

    With those, we can use $(LD_COMPAT) in cmd_ldvdso and change the flags
    from compiler linker flags to linker flags directly. We eliminate
    -mfloat-abi=soft because it is not handled by the linker.

    Reported-by: Nick Desaulniers
    Signed-off-by: Nathan Chancellor
    Tested-by: Nick Desaulniers
    Reviewed-by: Nick Desaulniers
    Reviewed-by: Vincenzo Frascino
    Link: https://github.com/ClangBuiltLinux/linux/issues/1033
    Link: https://lore.kernel.org/r/20201020011406.1818918-1-natechancellor@gmail.com
    Signed-off-by: Will Deacon

    Nathan Chancellor
     

09 Oct, 2020

1 commit


24 Sep, 2020

2 commits


07 Sep, 2020

1 commit


22 Aug, 2020

1 commit

  • Add the 32-bit vdso Makefile to the vdso_install rule so that 'make
    vdso_install' installs the 32-bit compat vdso when it is compiled.

    Fixes: a7f71a2c8903 ("arm64: compat: Add vDSO")
    Signed-off-by: Stephen Boyd
    Reviewed-by: Vincenzo Frascino
    Acked-by: Will Deacon
    Cc: Vincenzo Frascino
    Link: https://lore.kernel.org/r/20200818014950.42492-1-swboyd@chromium.org
    Signed-off-by: Catalin Marinas

    Stephen Boyd
     

04 Aug, 2020

1 commit

  • Pull arm64 and cross-arch updates from Catalin Marinas:
    "Here's a slightly wider-spread set of updates for 5.9.

    Going outside the usual arch/arm64/ area is the removal of
    read_barrier_depends() series from Will and the MSI/IOMMU ID
    translation series from Lorenzo.

    The notable arm64 updates include ARMv8.4 TLBI range operations and
    translation level hint, time namespace support, and perf.

    Summary:

    - Removal of the tremendously unpopular read_barrier_depends()
    barrier, which is a NOP on all architectures apart from Alpha, in
    favour of allowing architectures to override READ_ONCE() and do
    whatever dance they need to do to ensure address dependencies
    provide LOAD -> LOAD/STORE ordering.

    This work also offers a potential solution if compilers are shown
    to convert LOAD -> LOAD address dependencies into control
    dependencies (e.g. under LTO), as weakly ordered architectures will
    effectively be able to upgrade READ_ONCE() to smp_load_acquire().
    The latter case is not used yet, but will be discussed further at
    LPC.

    - Make the MSI/IOMMU input/output ID translation PCI agnostic,
    augment the MSI/IOMMU ACPI/OF ID mapping APIs to accept an input ID
    bus-specific parameter and apply the resulting changes to the
    device ID space provided by the Freescale FSL bus.

    - arm64 support for TLBI range operations and translation table level
    hints (part of the ARMv8.4 architecture version).

    - Time namespace support for arm64.

    - Export the virtual and physical address sizes in vmcoreinfo for
    makedumpfile and crash utilities.

    - CPU feature handling cleanups and checks for programmer errors
    (overlapping bit-fields).

    - ACPI updates for arm64: disallow AML accesses to EFI code regions
    and kernel memory.

    - perf updates for arm64.

    - Miscellaneous fixes and cleanups, most notably PLT counting
    optimisation for module loading, recordmcount fix to ignore
    relocations other than R_AARCH64_CALL26, CMA areas reserved for
    gigantic pages on 16K and 64K configurations.

    - Trivial typos, duplicate words"

    Link: http://lkml.kernel.org/r/20200710165203.31284-1-will@kernel.org
    Link: http://lkml.kernel.org/r/20200619082013.13661-1-lorenzo.pieralisi@arm.com

    * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (82 commits)
    arm64: use IRQ_STACK_SIZE instead of THREAD_SIZE for irq stack
    arm64/mm: save memory access in check_and_switch_context() fast switch path
    arm64: sigcontext.h: delete duplicated word
    arm64: ptrace.h: delete duplicated word
    arm64: pgtable-hwdef.h: delete duplicated words
    bus: fsl-mc: Add ACPI support for fsl-mc
    bus/fsl-mc: Refactor the MSI domain creation in the DPRC driver
    of/irq: Make of_msi_map_rid() PCI bus agnostic
    of/irq: make of_msi_map_get_device_domain() bus agnostic
    dt-bindings: arm: fsl: Add msi-map device-tree binding for fsl-mc bus
    of/device: Add input id to of_dma_configure()
    of/iommu: Make of_map_rid() PCI agnostic
    ACPI/IORT: Add an input ID to acpi_dma_configure()
    ACPI/IORT: Remove useless PCI bus walk
    ACPI/IORT: Make iort_msi_map_rid() PCI agnostic
    ACPI/IORT: Make iort_get_device_domain IRQ domain agnostic
    ACPI/IORT: Make iort_match_node_callback walk the ACPI namespace for NC
    arm64: enable time namespace support
    arm64/vdso: Restrict splitting VVAR VMA
    arm64/vdso: Handle faults on timens page
    ...

    Linus Torvalds
     

24 Jul, 2020

1 commit

  • Allocate the time namespace page among VVAR pages. Provide
    __arch_get_timens_vdso_data() helper for VDSO code to get the
    code-relative position of VVARs on that special page.

    If a task belongs to a time namespace then the VVAR page which contains
    the system wide VDSO data is replaced with a namespace specific page
    which has the same layout as the VVAR page. That page has vdso_data->seq
    set to 1 to enforce the slow path and vdso_data->clock_mode set to
    VCLOCK_TIMENS to enforce the time namespace handling path.

    The extra check in the case that vdso_data->seq is odd, e.g. a concurrent
    update of the VDSO data is in progress, is not really affecting regular
    tasks which are not part of a time namespace as the task is spin waiting
    for the update to finish and vdso_data->seq to become even again.

    If a time namespace task hits that code path, it invokes the corresponding
    time getter function which retrieves the real VVAR page, reads host time
    and then adds the offset for the requested clock which is stored in the
    special VVAR page.

    The time-namespace page isn't allocated on !CONFIG_TIME_NAMESPACE, but
    vma is the same size, which simplifies criu/vdso migration between
    different kernel configs.

    Signed-off-by: Andrei Vagin
    Reviewed-by: Vincenzo Frascino
    Reviewed-by: Dmitry Safonov
    Cc: Mark Rutland
    Link: https://lore.kernel.org/r/20200624083321.144975-4-avagin@gmail.com
    Signed-off-by: Catalin Marinas

    Andrei Vagin
     

23 Jul, 2020

1 commit

  • Newer versions of clang only look for $(COMPAT_GCC_TOOLCHAIN_DIR)as [1],
    rather than $(COMPAT_GCC_TOOLCHAIN_DIR)$(CROSS_COMPILE_COMPAT)as,
    resulting in the following build error:

    $ make -skj"$(nproc)" ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- \
    CROSS_COMPILE_COMPAT=arm-linux-gnueabi- LLVM=1 O=out/aarch64 distclean \
    defconfig arch/arm64/kernel/vdso32/
    ...
    /home/nathan/cbl/toolchains/llvm-binutils/bin/as: unrecognized option '-EL'
    clang-12: error: assembler command failed with exit code 1 (use -v to see invocation)
    make[3]: *** [arch/arm64/kernel/vdso32/Makefile:181: arch/arm64/kernel/vdso32/note.o] Error 1
    ...

    Adding the value of CROSS_COMPILE_COMPAT (adding notdir to account for a
    full path for CROSS_COMPILE_COMPAT) fixes this issue, which matches the
    solution done for the main Makefile [2].

    [1]: https://github.com/llvm/llvm-project/commit/3452a0d8c17f7166f479706b293caf6ac76ffd90
    [2]: https://lore.kernel.org/lkml/20200721173125.1273884-1-maskray@google.com/

    Signed-off-by: Nathan Chancellor
    Cc: stable@vger.kernel.org
    Link: https://github.com/ClangBuiltLinux/linux/issues/1099
    Link: https://lore.kernel.org/r/20200723041509.400450-1-natechancellor@gmail.com
    Signed-off-by: Will Deacon

    Nathan Chancellor
     

23 Jun, 2020

1 commit


10 Jun, 2020

1 commit

  • Allow the compat vdso (32b) to be compiled as either THUMB2 (default) or
    ARM.

    For THUMB2, the register r7 is reserved for the frame pointer, but
    code in arch/arm64/include/asm/vdso/compat_gettimeofday.h
    uses r7. Explicitly set -fomit-frame-pointer, since unwinding through
    interworked THUMB2 and ARM is unreliable anyways. See also how
    CONFIG_UNWINDER_FRAME_POINTER cannot be selected for
    CONFIG_THUMB2_KERNEL for ARCH=arm.

    This also helps toolchains that differ in their implicit value if the
    choice of -f{no-}omit-frame-pointer is left unspecified, to not error on
    the use of r7.

    2019 Q4 ARM AAPCS seeks to standardize the use of r11 as the reserved
    frame pointer register, but no production compiler that can compile the
    Linux kernel currently implements this. We're actively discussing such
    a transition with ARM toolchain developers currently.

    Reported-by: Luis Lozano
    Signed-off-by: Nick Desaulniers
    Tested-by: Manoj Gupta
    Acked-by: Catalin Marinas
    Cc: Stephen Boyd
    Cc: Robin Murphy
    Cc: Dave Martin
    Link: https://static.docs.arm.com/ihi0042/i/aapcs32.pdf
    Link: https://bugs.chromium.org/p/chromium/issues/detail?id=1084372
    Link: https://lore.kernel.org/r/20200608205711.109418-1-ndesaulniers@google.com
    Signed-off-by: Will Deacon

    Nick Desaulniers
     

21 May, 2020

2 commits

  • Daniel reports that the .cfi_startproc is misplaced for the sigreturn
    trampoline, which causes LLVM's unwinder to misbehave:

    | I run into this with LLVM’s unwinder.
    | This combination was always broken.

    This prompted Dave to question our use of CFI directives more generally,
    and I ended up going down a rabbit hole trying to figure out how this
    very poorly documented stuff gets used.

    Move the CFI directives so that the "mysterious NOP" is included in
    the .cfi_{start,end}proc block and add a bunch of comments so that I
    can save myself another headache in future.

    Cc: Tamas Zsoldos
    Reported-by: Dave Martin
    Reported-by: Daniel Kiss
    Tested-by: Daniel Kiss
    Signed-off-by: Will Deacon

    Will Deacon
     
  • For better or worse, GDB relies on the exact instruction sequence in the
    VDSO sigreturn trampoline in order to unwind from signals correctly.
    Commit c91db232da48 ("arm64: vdso: Convert to modern assembler annotations")
    unfortunately added a BTI C instruction to the start of __kernel_rt_sigreturn,
    which breaks this check. Thankfully, it's also not required, since the
    trampoline is called from a RET instruction when returning from the signal
    handler

    Remove the unnecessary BTI C instruction from __kernel_rt_sigreturn,
    and do the same for the 32-bit VDSO as well for good measure.

    Cc: Daniel Kiss
    Cc: Tamas Zsoldos
    Reviewed-by: Dave Martin
    Reviewed-by: Mark Brown
    Fixes: c91db232da48 ("arm64: vdso: Convert to modern assembler annotations")
    Signed-off-by: Will Deacon

    Will Deacon
     

04 Apr, 2020

1 commit

  • Pull SPDX updates from Greg KH:
    "Here are three SPDX patches for 5.7-rc1.

    One fixes up the SPDX tag for a single driver, while the other two go
    through the tree and add SPDX tags for all of the .gitignore files as
    needed.

    Nothing too complex, but you will get a merge conflict with your
    current tree, that should be trivial to handle (one file modified by
    two things, one file deleted.)

    All three of these have been in linux-next for a while, with no
    reported issues other than the merge conflict"

    * tag 'spdx-5.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/spdx:
    ASoC: MT6660: make spdxcheck.py happy
    .gitignore: add SPDX License Identifier
    .gitignore: remove too obvious comments

    Linus Torvalds
     

01 Apr, 2020

1 commit

  • Pull arm64 updates from Catalin Marinas:
    "The bulk is in-kernel pointer authentication, activity monitors and
    lots of asm symbol annotations. I also queued the sys_mremap() patch
    commenting the asymmetry in the address untagging.

    Summary:

    - In-kernel Pointer Authentication support (previously only offered
    to user space).

    - ARM Activity Monitors (AMU) extension support allowing better CPU
    utilisation numbers for the scheduler (frequency invariance).

    - Memory hot-remove support for arm64.

    - Lots of asm annotations (SYM_*) in preparation for the in-kernel
    Branch Target Identification (BTI) support.

    - arm64 perf updates: ARMv8.5-PMU 64-bit counters, refactoring the
    PMU init callbacks, support for new DT compatibles.

    - IPv6 header checksum optimisation.

    - Fixes: SDEI (software delegated exception interface) double-lock on
    hibernate with shared events.

    - Minor clean-ups and refactoring: cpu_ops accessor,
    cpu_do_switch_mm() converted to C, cpufeature finalisation helper.

    - sys_mremap() comment explaining the asymmetric address untagging
    behaviour"

    * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (81 commits)
    mm/mremap: Add comment explaining the untagging behaviour of mremap()
    arm64: head: Convert install_el2_stub to SYM_INNER_LABEL
    arm64: Introduce get_cpu_ops() helper function
    arm64: Rename cpu_read_ops() to init_cpu_ops()
    arm64: Declare ACPI parking protocol CPU operation if needed
    arm64: move kimage_vaddr to .rodata
    arm64: use mov_q instead of literal ldr
    arm64: Kconfig: verify binutils support for ARM64_PTR_AUTH
    lkdtm: arm64: test kernel pointer authentication
    arm64: compile the kernel with ptrauth return address signing
    kconfig: Add support for 'as-option'
    arm64: suspend: restore the kernel ptrauth keys
    arm64: __show_regs: strip PAC from lr in printk
    arm64: unwind: strip PAC from kernel addresses
    arm64: mask PAC bits of __builtin_return_address
    arm64: initialize ptrauth keys for kernel booting task
    arm64: initialize and switch ptrauth kernel keys
    arm64: enable ptrauth earlier
    arm64: cpufeature: handle conflicts based on capability
    arm64: cpufeature: Move cpu capability helpers inside C file
    ...

    Linus Torvalds
     

25 Mar, 2020

1 commit


21 Mar, 2020

3 commits

  • Enable Clang Compilation for the vdso32 library.

    Signed-off-by: Vincenzo Frascino
    Signed-off-by: Thomas Gleixner
    Tested-by: Nathan Chancellor # build
    Tested-by: Stephen Boyd
    Reviewed-by: Nathan Chancellor
    Acked-by: Catalin Marinas
    Cc: Will Deacon
    Link: https://lkml.kernel.org/r/20200320145351.32292-27-vincenzo.frascino@arm.com

    Vincenzo Frascino
     
  • The vDSO library should only include the necessary headers required for
    a userspace library (UAPI and a minimal set of kernel headers). To make
    this possible it is necessary to isolate from the kernel headers the
    common parts that are strictly necessary to build the library.

    Refactor the vdso32 implementation to include common headers.

    Signed-off-by: Vincenzo Frascino
    Signed-off-by: Thomas Gleixner
    Acked-by: Catalin Marinas
    Cc: Will Deacon
    Link: https://lkml.kernel.org/r/20200320145351.32292-22-vincenzo.frascino@arm.com

    Vincenzo Frascino
     
  • The compat vdso library had some checks that are not anymore relevant.

    Remove the unused code from the compat vDSO library.

    Note: This patch is preparatory for a future one that will introduce
    asm/vdso/processor.h on arm64.

    Signed-off-by: Vincenzo Frascino
    Signed-off-by: Thomas Gleixner
    Acked-by: Catalin Marinas
    Cc: Will Deacon
    Link: https://lore.kernel.org/lkml/20200317122220.30393-19-vincenzo.frascino@arm.com
    Link: https://lkml.kernel.org/r/20200320145351.32292-19-vincenzo.frascino@arm.com

    Vincenzo Frascino
     

10 Mar, 2020

1 commit

  • In an effort to clarify and simplify the annotation of assembly
    functions new macros have been introduced. These replace ENTRY and
    ENDPROC with two different annotations for normal functions and those
    with unusual calling conventions. Use these for the compat VDSO,
    allowing us to drop the custom ARM_ENTRY() and ARM_ENDPROC() macros.

    Signed-off-by: Mark Brown
    Signed-off-by: Catalin Marinas

    Mark Brown
     

04 Feb, 2020

1 commit

  • In old days, the "host-progs" syntax was used for specifying host
    programs. It was renamed to the current "hostprogs-y" in 2004.

    It is typically useful in scripts/Makefile because it allows Kbuild to
    selectively compile host programs based on the kernel configuration.

    This commit renames like follows:

    always -> always-y
    hostprogs-y -> hostprogs

    So, scripts/Makefile will look like this:

    always-$(CONFIG_BUILD_BIN2C) += ...
    always-$(CONFIG_KALLSYMS) += ...
    ...
    hostprogs := $(always-y) $(always-m)

    I think this makes more sense because a host program is always a host
    program, irrespective of the kernel configuration. We want to specify
    which ones to compile by CONFIG options, so always-y will be handier.

    The "always", "hostprogs-y", "hostprogs-m" will be kept for backward
    compatibility for a while.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     

07 Oct, 2019

7 commits

  • For consistency with CROSS_COMPILE_COMPAT, mechanically rename COMPATCC
    to CC_COMPAT so that specifying aspects of the compat vDSO toolchain in
    the environment isn't needlessly confusing.

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

    Will Deacon
     
  • Directly passing the '--target' option to clang by appending to
    COMPATCC does not work if COMPATCC has been specified explicitly as
    an argument to Make unless the 'override' directive is used, which is
    ugly and different to what is done in the top-level Makefile.

    Move the '--target' option for clang out of COMPATCC and into
    VDSO_CAFLAGS, where it will be picked up when compiling and assembling
    the 32-bit vDSO under clang.

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

    Will Deacon
     
  • KBUILD_CPPFLAGS is defined differently depending on whether the main
    compiler is clang or not. This means that it is not possible to build
    the compat vDSO with GCC if the rest of the kernel is built with clang.

    Define VDSO_CPPFLAGS directly to break this dependency and allow a clang
    kernel to build a compat vDSO with GCC:

    $ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- \
    CROSS_COMPILE_COMPAT=arm-linux-gnueabihf- CC=clang \
    COMPATCC=arm-linux-gnueabihf-gcc

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

    Will Deacon
     
  • There's no need to export COMPATCC, so just define it locally in the
    vdso32/Makefile, which is the only place where it is used.

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

    Will Deacon
     
  • The jump labels are not used in vdso32 since it is not possible to run
    runtime patching on them.

    Remove the configuration option from the Makefile.

    Cc: Will Deacon
    Cc: Catalin Marinas
    Signed-off-by: Vincenzo Frascino
    Acked-by: Catalin Marinas
    Tested-by: Catalin Marinas
    Signed-off-by: Will Deacon

    Vincenzo Frascino
     
  • Older versions of binutils (prior to 2.24) do not support the "ISHLD"
    option for memory barrier instructions, which leads to a build failure
    when assembling the vdso32 library.

    Add a compilation time mechanism that detects if binutils supports those
    instructions and configure the kernel accordingly.

    Cc: Will Deacon
    Cc: Catalin Marinas
    Reported-by: Will Deacon
    Signed-off-by: Vincenzo Frascino
    Reviewed-by: Catalin Marinas
    Tested-by: Catalin Marinas
    Signed-off-by: Will Deacon

    Vincenzo Frascino
     
  • The .config file and the generated include/config/auto.conf can
    end up out of sync after a set of commands since
    CONFIG_CROSS_COMPILE_COMPAT_VDSO is not updated correctly.

    The sequence can be reproduced as follows:

    $ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig
    [...]
    $ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
    [set CONFIG_CROSS_COMPILE_COMPAT_VDSO="arm-linux-gnueabihf-"]
    $ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

    Which results in:

    arch/arm64/Makefile:62: CROSS_COMPILE_COMPAT not defined or empty,
    the compat vDSO will not be built

    even though the compat vDSO has been built:

    $ file arch/arm64/kernel/vdso32/vdso.so
    arch/arm64/kernel/vdso32/vdso.so: ELF 32-bit LSB pie executable, ARM,
    EABI5 version 1 (SYSV), dynamically linked,
    BuildID[sha1]=c67f6c786f2d2d6f86c71f708595594aa25247f6, stripped

    A similar case that involves changing the configuration parameter
    multiple times can be reconducted to the same family of problems.

    Remove the use of CONFIG_CROSS_COMPILE_COMPAT_VDSO altogether and
    instead rely on the cross-compiler prefix coming from the environment
    via CROSS_COMPILE_COMPAT, much like we do for the rest of the kernel.

    Cc: Will Deacon
    Cc: Catalin Marinas
    Reported-by: Will Deacon
    Signed-off-by: Vincenzo Frascino
    Signed-off-by: Will Deacon

    Vincenzo Frascino
     

22 Jul, 2019

2 commits

  • The recent changes to the vdso library for arm64 and the introduction of
    the compat vdso library have generated some misalignment in the
    Makefiles.

    Cleanup the Makefiles for vdso and vdso32 libraries:
    * Removing unused rules.
    * Unifying the displayed compilation messages.
    * Simplifying the generic library inclusion path for
    arm64 vdso.

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

    Vincenzo Frascino
     
  • Running "make" on an already compiled kernel tree will rebuild the kernel
    even without any modifications:

    $ make ARCH=arm64 CROSS_COMPILE=/usr/bin/aarch64-unknown-linux-gnu-
    arch/arm64/Makefile:58: CROSS_COMPILE_COMPAT not defined or empty, the compat vDSO will not be built
    CALL scripts/checksyscalls.sh
    CALL scripts/atomic/check-atomics.sh
    VDSOCHK arch/arm64/kernel/vdso/vdso.so.dbg
    VDSOSYM include/generated/vdso-offsets.h
    CHK include/generated/compile.h
    CC arch/arm64/kernel/signal.o
    CC arch/arm64/kernel/vdso.o
    CC arch/arm64/kernel/signal32.o
    LD arch/arm64/kernel/vdso/vdso.so.dbg
    OBJCOPY arch/arm64/kernel/vdso/vdso.so
    AS arch/arm64/kernel/vdso/vdso.o
    AR arch/arm64/kernel/vdso/built-in.a
    AR arch/arm64/kernel/built-in.a
    GEN .version
    CHK include/generated/compile.h
    UPD include/generated/compile.h
    CC init/version.o
    AR init/built-in.a
    LD vmlinux.o

    This is the same bug fixed in commit 92a4728608a8 ("x86/boot: Fix
    if_changed build flip/flop bug"). We cannot use two "if_changed" in one
    target. Fix this build bug by merging two commands into one function.

    Fixes: a7f71a2c8903 ("arm64: compat: Add vDSO")
    Fixes: 28b1a824a4f4 ("arm64: vdso: Substitute gettimeofday() with C implementation")
    Reviewed-by: Masahiro Yamada
    Reviewed-by: Vincenzo Frascino
    Tested-by: Vincenzo Frascino
    Co-developed-by: Vincenzo Frascino
    Signed-off-by: Vincenzo Frascino
    Signed-off-by: Naohiro Aota
    [will: merged in compat fix from Vincenzo and made rule names consistent]
    Signed-off-by: Will Deacon

    Naohiro Aota
     

17 Jul, 2019

1 commit


23 Jun, 2019

1 commit

  • Provide the arm64 compat (AArch32) vDSO in kernel/vdso32 in a similar
    way to what happens in kernel/vdso.

    The compat vDSO leverages on an adaptation of the arm architecture code
    with few changes:

    - Use of lib/vdso for gettimeofday
    - Implement a syscall based fallback
    - Introduce clock_getres() for the compat library
    - Implement trampolines
    - Implement elf note

    To build the compat vDSO a 32 bit compiler is required and needs to be
    specified via CONFIG_CROSS_COMPILE_COMPAT_VDSO.

    The code is not yet enabled as other prerequisites are missing.

    Signed-off-by: Vincenzo Frascino
    Signed-off-by: Thomas Gleixner
    Tested-by: Shijith Thotton
    Tested-by: Andre Przywara
    Cc: linux-arch@vger.kernel.org
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-mips@vger.kernel.org
    Cc: linux-kselftest@vger.kernel.org
    Cc: Catalin Marinas
    Cc: Will Deacon
    Cc: Arnd Bergmann
    Cc: Russell King
    Cc: Ralf Baechle
    Cc: Paul Burton
    Cc: Daniel Lezcano
    Cc: Mark Salyzyn
    Cc: Peter Collingbourne
    Cc: Shuah Khan
    Cc: Dmitry Safonov
    Cc: Rasmus Villemoes
    Cc: Huw Davies
    Link: https://lkml.kernel.org/r/20190621095252.32307-11-vincenzo.frascino@arm.com

    Vincenzo Frascino