summaryrefslogtreecommitdiff
path: root/arch/arm64/kernel/vdso32 (follow)
Commit message (Collapse)AuthorAge
* Merge remote-tracking branch 'msm8998/lineage-20' into lineage-20Raghuram Subramani2024-10-17
| | | | Change-Id: I126075a330f305c85f8fe1b8c9d408f368be95d1
* 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