summaryrefslogtreecommitdiff
path: root/arch/arm64/kernel/vdso32 (follow)
Commit message (Collapse)AuthorAge
* arm64: vdso32: Allow building with LLVM integrated ASBruno Martins2023-10-27
| | | | Change-Id: I8bfc0e53b4bd347adaa298594402a2210aed3b49
* arm64: vdso32: suppress error message for 'make mrproper'Nick Desaulniers2023-10-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | commit 14831fad73f5ac30ac61760487d95a538e6ab3cb upstream. When running the following command without arm-linux-gnueabi-gcc in one's $PATH, the following warning is observed: $ ARCH=arm64 CROSS_COMPILE_COMPAT=arm-linux-gnueabi- make -j72 LLVM=1 mrproper make[1]: arm-linux-gnueabi-gcc: No such file or directory This is because KCONFIG is not run for mrproper, so CONFIG_CC_IS_CLANG is not set, and we end up eagerly evaluating various variables that try to invoke CC_COMPAT. This is a similar problem to what was observed in commit dc960bfeedb0 ("h8300: suppress error messages for 'make clean'") Reported-by: Lucas Henneman <henneman@google.com> Suggested-by: Masahiro Yamada <masahiroy@kernel.org> Change-Id: I672930f558d087230c119ece518b83cac7d8baa7 Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> Reviewed-by: Vincenzo Frascino <vincenzo.frascino@arm.com> Reviewed-by: Nathan Chancellor <nathan@kernel.org> Tested-by: Nathan Chancellor <nathan@kernel.org> Link: https://lore.kernel.org/r/20211019223646.1146945-4-ndesaulniers@google.com Signed-off-by: Will Deacon <will@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* ARM64: vdso32: Install vdso32 from vdso_installStephen Boyd2023-10-27
| | | | | | | | | | | | | | | | | [ Upstream commit 8d75785a814241587802655cc33e384230744f0c ] 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") Change-Id: I554988049d9f4395d226988a410a0a68eeed304d Signed-off-by: Stephen Boyd <swboyd@chromium.org> Reviewed-by: Vincenzo Frascino <vincenzo.frascino@arm.com> Acked-by: Will Deacon <will@kernel.org> Cc: Vincenzo Frascino <vincenzo.frascino@arm.com> Link: https://lore.kernel.org/r/20200818014950.42492-1-swboyd@chromium.org Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
* arm64: vdso32: Don't use KBUILD_CPPFLAGS unconditionallyWill Deacon2023-10-27
| | | | | | | | | | | | | | | | | 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 <catalin.marinas@arm.com> Change-Id: Iaa7f6197bc99ca5c8162c6e34e3dd38c31d894cd Signed-off-by: Will Deacon <will@kernel.org>
* arm64: vdso32: Remove jump label config option in MakefileVincenzo Frascino2023-10-27
| | | | | | | | | | | | | | | 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 <will@kernel.org> Cc: Catalin Marinas <catalin.marinas@arm.com> Change-Id: Ie0f311218a761a6b18b3ed3cccf30fd10f440407 Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Tested-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Will Deacon <will@kernel.org>
* ANDROID: clock_gettime(CLOCK_BOOTTIME,) slows down >20xMark Salyzyn2019-12-23
| | | | | | | | | | | | | | | | | clock_gettime(CLOCK_BOOTTIME,) slows down after significant accumulation of suspend time creating a large offset between it and CLOCK_MONOTONIC time. The __iter_div_u64_rem() is only for the usage of adding a few second+nanosecond times and saving cycles on more expensive remainder and division operations, but iterates one second at a time which quickly goes out of scale in CLOCK_BOOTTIME's case since it was specified as nanoseconds only. The fix is to split off seconds from the boot time and cap the nanoseconds so that __iter_div_u64_rem does not iterate. Signed-off-by: Mark Salyzyn <salyzyn@google.com> Bug: 72406285 Change-Id: Ia647ef1e76b7ba3b0c003028d4b3b955635adabb
* FROMLIST: arm64: vdso32: Use full path to Clang instead of relying on PATHNathan Chancellor2019-12-23
| | | | | | | | | | | | | | | | | | | | | | | | | Currently, in order to build the compat VDSO with Clang, this format has to be used: PATH=${BIN_FOLDER}:${PATH} make CC=clang Prior to the addition of this file, this format would also be acceptable: make CC=${BIN_FOLDER}/clang This is because the vdso32 Makefile uses cc-name instead of CC. After this path, CC will still evaluate to clang for the first case as expected but now the second case will use the specified Clang, rather than the host's copy, which may not be compatible as shown below. /usr/bin/as: unrecognized option '-mfloat-abi=soft' clang-6.0: error: assembler command failed with exit code 1 Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> (cherry picked from https://patchwork.kernel.org/patch/10419665) Bug: 80184372 Change-Id: If90a5a4edbc2b5883b4c78161081ebeafbebdcde
* ANDROID: arm64: vdso32: fix CC=clang buildMark Salyzyn2019-12-23
| | | | | | | | clang build had wrong --gcc-toolchain for cross compiler. Signed-off-by: Mark Salyzyn <salyzyn@google.com> Bug: 63737556 Change-Id: Ib0c3bbb250943a0309da021ba5335a8320b584f4
* FROMLIST: [PATCH 4/6] arm64: compat: Add a 32-bit vDSOKevin Brodsky2019-12-23
(cherry pick from url https://patchwork.kernel.org/patch/10060445/) Provide the files necessary for building a compat (AArch32) vDSO in kernel/vdso32. This is mostly an adaptation of the arm vDSO. The most significant change in vgettimeofday.c is the use of the arm64 vdso_data struct, allowing the vDSO data page to be shared between the 32 and 64-bit vDSOs. Additionally, a different set of barrier macros is used (see aarch32-barrier.h), as we want to support old 32-bit compilers that may not support ARMv8 and its new barrier arguments (*ld). In addition to the time functions, sigreturn trampolines are also provided, aiming at replacing those in the sigreturn page as the latter don't provide any unwinding information (and it's easier to have just one "user code" page). arm-specific unwinding directives are used, based on glibc's implementation. Symbol offsets are made available to the kernel using the same method as the 64-bit vDSO. There is unfortunately an important caveat: we cannot get away with hand-coding 32-bit instructions like in kernel/kuser32.S, this time we really need a 32-bit compiler. The compat vDSO Makefile relies on CROSS_COMPILE_ARM32 to provide a 32-bit compiler, appropriate logic will be added to the arm64 Makefile later on to ensure that an attempt to build the compat vDSO is made only if this variable has been set properly. Signed-off-by: Kevin Brodsky <kevin.brodsky@arm.com> Take an effort to recode the arm64 vdso code from assembler to C previously submitted by Andrew Pinski <apinski@cavium.com>, rework it for use in both arm and arm64, overlapping any optimizations for each architecture. Signed-off-by: Mark Salyzyn <salyzyn@android.com> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will.deacon@arm.com> Cc: Dave Martin <Dave.Martin@arm.com> Cc: "Eric W. Biederman" <ebiederm@xmission.com> Cc: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org Bug: 63737556 Bug: 20045882 Change-Id: I3fb9d21b29bd9fec1408f2274d090e6def546b0d