Jokubas [Tue, 2 Jul 2024 07:29:08 +0000 (10:29 +0300)]
BACKPORT: HID: microsoft: Add rumble support to latest xbox controllers
Add rumble support for various Xbox One/Series controllers via Bluetooth.
Controller rumble appears as a haptic device on Android and can be used
with the VibratorManagerAPI.
The only notible change from upstream is to add HID IDs to
hid_have_special_driver in hid-core.c as we are on 4.9 kernel,
otherwise hid-generic takes priority over hid-microsoft.
Tested on dopinder with Moonlight.
Commits from mainline linux:
(cherry-picked from
f2d3b625dae10cdf14bcfcacb965b02f5c0acc01)
(cherry-picked from
73c5b254c36529c84c9d19e07905f7103bb32e79)
(cherry-picked from
f5554725f30475b05b5178b998366f11ecb50c7f)
Change-Id: Iae2c6782534a7fbdefd44ed11911f8a0019bf631
Ray [Tue, 16 Apr 2019 07:17:44 +0000 (09:17 +0200)]
drives: amlogic: media: vpp: Disable super_scaler
* Fixes cartoon like bleeding effects.
Change-Id: Id013ad82dc851b04c9acd9ed57e6973c0e665fc9
Todd Kjos [Fri, 20 Nov 2020 23:37:43 +0000 (15:37 -0800)]
UPSTREAM: binder: add flag to clear buffer on txn complete
Add a per-transaction flag to indicate that the buffer
must be cleared when the transaction is complete to
prevent copies of sensitive data from being preserved
in memory.
Signed-off-by: Todd Kjos <tkjos@google.com>
Link: https://lore.kernel.org/r/20201120233743.3617529-1-tkjos@google.com
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Bug:
171501513
Change-Id: Ic9338c85cbe3b11ab6f2bda55dce9964bb48447a
(cherry picked from commit
0f966cba95c78029f491b433ea95ff38f414a761)
Signed-off-by: Todd Kjos <tkjos@google.com>
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Martijn Coenen [Fri, 21 Aug 2020 12:25:44 +0000 (14:25 +0200)]
FROMGIT: binder: print warnings when detecting oneway spamming.
The most common cause of the binder transaction buffer filling up is a
client rapidly firing oneway transactions into a process, before it has
a chance to handle them. Yet the root cause of this is often hard to
debug, because either the system or the app will stop, and by that time
binder debug information we dump in bugreports is no longer relevant.
This change warns as soon as a process dips below 80% of its oneway
space (less than 100kB available in the configuration), when any one
process is responsible for either more than 50 transactions, or more
than 50% of the oneway space.
Signed-off-by: Martijn Coenen <maco@android.com>
Signed-off-by: Martijn Coenen <maco@google.com>
Acked-by: Todd Kjos <tkjos@google.com>
Link: https://lore.kernel.org/r/20200821122544.1277051-1-maco@android.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit
261e7818f06ec51e488e007f787ccd7e77272918
git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git/
char-misc-next)
Bug:
147795659
Change-Id: Idc2b03ddc779880ca4716fdae47a70df43211f25
Nolen Johnson [Sat, 16 Mar 2024 19:53:42 +0000 (15:53 -0400)]
arch: arm64: dts: g12a*/b* & sm1*: Use dynamic deadpool partition scheme
* We only support g12a/g12b/sm1 in this kernel, and then only
either dynamic native or retrofit.
* normal_dynamic might be usable but we use the deadpool partition
scheme on devices that need a defined one (devkits).
Change-Id: Id6ac93524c23e58f1118c4b4875bfce2bc235a6c
Chris Fries [Thu, 26 Apr 2018 15:49:23 +0000 (10:49 -0500)]
defconfig: g12a: Unset BRIDGE_NETFILTER
CONFIG_BRIDGE_NETFILTER is default=m and we don't use it.
Bug:
78574169
Change-Id: Ie8aa5e2a7adc64679e142f931b8da03999b08a43
Signed-off-by: Chris Fries <cfries@google.com>
Chris Fries [Thu, 26 Apr 2018 15:45:07 +0000 (10:45 -0500)]
defconfig: g12a: Unset LCD_CLASS_DEVICE
CONFIG_LCD_CLASS_DEVICE is default=m, and we don't use it.
Bug:
78574169
Change-Id: I5d67fb7aa342971f2b7db235b4d6c914557347a3
Signed-off-by: Chris Fries <cfries@google.com>
Bruno Martins [Mon, 18 Dec 2023 09:50:23 +0000 (09:50 +0000)]
defconfig: g12a: Disable DVB tuner support
These modules are unused and not shipped in ADT-3 stock images.
Change-Id: I2f35a429f8b25349be4f704b7b18c900f03a9601
Bruno Martins [Sun, 17 Dec 2023 16:50:22 +0000 (16:50 +0000)]
ARM64: configs: Regenerate g12a_defconfig
Change-Id: Ibc12b3cd944fac84113a0ab9bae5a040a049a2a4
Bruno Martins [Fri, 20 Oct 2023 22:20:18 +0000 (23:20 +0100)]
drivers: aml: Add void argument to old-style zero prototype functions
Make clang-17 happy just by adding the `void` argument.
Change-Id: Icb02e462d6a112729b919f7551a6a4566de97699
Bruno Martins [Sun, 22 Oct 2023 22:09:19 +0000 (23:09 +0100)]
ARM64: dts: devkits*: Return to standard DTS without fstab mounting
It must be properly handled with the fstab in the first stage ramdisk,
just like the other targets.
This reverts commits
831cf5201a191c09fce160e7852f96ae76d8035c and
9ed028ffa92f0bb67b5a3b87bb19068ae58e278e.
Change-Id: I9d4085a2e609305f1d53eb1104f201b207ab59dd
Bruno Martins [Fri, 20 Oct 2023 22:29:59 +0000 (23:29 +0100)]
arm64: vdso32: Allow building with LLVM integrated AS
Change-Id: I8bfc0e53b4bd347adaa298594402a2210aed3b49
Nick Desaulniers [Tue, 19 Oct 2021 22:36:45 +0000 (15:36 -0700)]
arm64: vdso32: suppress error message for 'make mrproper'
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>
Stephen Boyd [Tue, 18 Aug 2020 01:49:50 +0000 (18:49 -0700)]
ARM64: vdso32: Install vdso32 from vdso_install
[ 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>
Will Deacon [Fri, 4 Oct 2019 14:44:45 +0000 (15:44 +0100)]
arm64: vdso32: Don't use KBUILD_CPPFLAGS unconditionally
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>
Vincenzo Frascino [Thu, 3 Oct 2019 17:48:36 +0000 (18:48 +0100)]
arm64: vdso32: Remove jump label config option in Makefile
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>
Nick Desaulniers [Fri, 16 Oct 2020 17:53:39 +0000 (10:53 -0700)]
arm64: link with -z norelro regardless of CONFIG_RELOCATABLE
commit
3b92fa7485eba16b05166fddf38ab42f2ff6ab95 upstream.
With CONFIG_EXPERT=y, CONFIG_KASAN=y, CONFIG_RANDOMIZE_BASE=n,
CONFIG_RELOCATABLE=n, we observe the following failure when trying to
link the kernel image with LD=ld.lld:
error: section: .exit.data is not contiguous with other relro sections
ld.lld defaults to -z relro while ld.bfd defaults to -z norelro. This
was previously fixed, but only for CONFIG_RELOCATABLE=y.
Fixes:
3bbd3db86470 ("arm64: relocatable: fix inconsistencies in linker script and options")
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20201016175339.2429280-1-ndesaulniers@google.com
Signed-off-by: Will Deacon <will@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Change-Id: Idf6fa5186e771d62b969c371ae4b1b8d4bc154ea
Ard Biesheuvel [Mon, 3 Dec 2018 19:58:05 +0000 (20:58 +0100)]
arm64: relocatable: fix inconsistencies in linker script and options
commit
3bbd3db86470c701091fb1d67f1fab6621debf50 upstream.
readelf complains about the section layout of vmlinux when building
with CONFIG_RELOCATABLE=y (for KASLR):
readelf: Warning: [21]: Link field (0) should index a symtab section.
readelf: Warning: [21]: Info field (0) should index a relocatable section.
Also, it seems that our use of '-pie -shared' is contradictory, and
thus ambiguous. In general, the way KASLR is wired up at the moment
is highly tailored to how ld.bfd happens to implement (and conflate)
PIE executables and shared libraries, so given the current effort to
support other toolchains, let's fix some of these issues as well.
- Drop the -pie linker argument and just leave -shared. In ld.bfd,
the differences between them are unclear (except for the ELF type
of the produced image [0]) but lld chokes on seeing both at the
same time.
- Rename the .rela output section to .rela.dyn, as is customary for
shared libraries and PIE executables, so that it is not misidentified
by readelf as a static relocation section (producing the warnings
above).
- Pass the -z notext and -z norelro options to explicitly instruct the
linker to permit text relocations, and to omit the RELRO program
header (which requires a certain section layout that we don't adhere
to in the kernel). These are the defaults for current versions of
ld.bfd.
- Discard .eh_frame and .gnu.hash sections to avoid them from being
emitted between .head.text and .text, screwing up the section layout.
These changes only affect the ELF image, and produce the same binary
image.
[0]
b9dce7f1ba01 ("arm64: kernel: force ET_DYN ELF type for ...")
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Peter Smith <peter.smith@linaro.org>
Tested-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Change-Id: I9fe6c4b09993a97051ea856a5053b220f2722872
Nick Desaulniers [Wed, 15 May 2019 18:24:41 +0000 (11:24 -0700)]
lkdtm: support llvm-objcopy
commit
e9e08a07385e08f1a7f85c5d1e345c21c9564963 upstream.
With CONFIG_LKDTM=y and make OBJCOPY=llvm-objcopy, llvm-objcopy errors:
llvm-objcopy: error: --set-section-flags=.text conflicts with
--rename-section=.text=.rodata
Rather than support setting flags then renaming sections vs renaming
then setting flags, it's simpler to just change both at the same time
via --rename-section. Adding the load flag is required for GNU objcopy
to mark .rodata Type as PROGBITS after the rename.
This can be verified with:
$ readelf -S drivers/misc/lkdtm/rodata_objcopy.o
...
Section Headers:
[Nr] Name Type Address Offset
Size EntSize Flags Link Info Align
...
[ 1] .rodata PROGBITS
0000000000000000 00000040
0000000000000004 0000000000000000 A 0 0 4
...
Which shows that .text is now renamed .rodata, the alloc flag A is set,
the type is PROGBITS, and the section is not flagged as writeable W.
Cc: stable@vger.kernel.org
Link: https://sourceware.org/bugzilla/show_bug.cgi?id=24554
Link: https://github.com/ClangBuiltLinux/linux/issues/448
Reported-by: Nathan Chancellor <natechancellor@gmail.com>
Suggested-by: Alan Modra <amodra@gmail.com>
Suggested-by: Jordan Rupprect <rupprecht@google.com>
Suggested-by: Kees Cook <keescook@chromium.org>
Acked-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Change-Id: I1a3d5129e96e909e6d3751752a0bf474474664d9
Olof Johansson [Fri, 13 Jul 2018 15:30:33 +0000 (08:30 -0700)]
arm64: build with baremetal linker target instead of Linux when available
Not all toolchains have the baremetal elf targets, RedHat/Fedora ones
in particular. So, probe for whether it's available and use the previous
(linux) targets if it isn't.
Reported-by: Laura Abbott <labbott@redhat.com>
Tested-by: Laura Abbott <labbott@redhat.com>
Acked-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: Paul Kocialkowski <contact@paulk.fr>
Signed-off-by: Olof Johansson <olof@lixom.net>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Change-Id: Icf5462a8318b347cf11559c1654886c48c7a62b5
Masahiro Yamada [Tue, 3 Jul 2018 01:22:00 +0000 (10:22 +0900)]
arm64: add endianness option to LDFLAGS instead of LD
With the recent syntax extension, Kconfig is now able to evaluate the
compiler / toolchain capability.
However, accumulating flags to 'LD' is not compatible with the way
it works; 'LD' must be passed to Kconfig to call $(ld-option,...)
from Kconfig files. If you tweak 'LD' in arch Makefile depending on
CONFIG_CPU_BIG_ENDIAN, this would end up with circular dependency
between Makefile and Kconfig.
Acked-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Change-Id: I8a7654684975d45e979917e3b1c4b6249dec02ec
Masahiro Yamada [Sun, 21 Jun 2020 18:48:35 +0000 (21:48 +0300)]
kbuild: clear LDFLAGS in the top Makefile
The kernel needs to be compiled as a LP64 binary for ARM64, even when
using a compiler that defaults to code-generation for the ILP32 ABI.
Consequently, we need to explicitly pass '-mabi=lp64' (supported on
gcc-4.9 and newer).
Signed-off-by: Andrew Pinski <Andrew.Pinski@caviumnetworks.com>
Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Signed-off-by: Christoph Muellner <christoph.muellner@theobroma-systems.com>
Signed-off-by: Yury Norov <ynorov@caviumnetworks.com>
Reviewed-by: David Daney <ddaney@caviumnetworks.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Change-Id: Ife00e01e3e3a6d85841b88c2f1a042617bd61500
Fangrui Song [Thu, 29 Oct 2020 18:19:51 +0000 (11:19 -0700)]
BACKPORT: arm64: Change .weak to SYM_FUNC_START_WEAK_PI for arch/arm64/lib/mem*.S
commit
ec9d78070de986ecf581ea204fd322af4d2477ec upstream.
Commit
39d114ddc682 ("arm64: add KASAN support") added .weak directives to
arch/arm64/lib/mem*.S instead of changing the existing SYM_FUNC_START_PI
macros. This can lead to the assembly snippet `.weak memcpy ... .globl
memcpy` which will produce a STB_WEAK memcpy with GNU as but STB_GLOBAL
memcpy with LLVM's integrated assembler before LLVM 12. LLVM 12 (since
https://reviews.llvm.org/D90108) will error on such an overridden symbol
binding.
Use the appropriate SYM_FUNC_START_WEAK_PI instead.
Fixes:
39d114ddc682 ("arm64: add KASAN support")
Reported-by: Sami Tolvanen <samitolvanen@google.com>
Signed-off-by: Fangrui Song <maskray@google.com>
Tested-by: Sami Tolvanen <samitolvanen@google.com>
Tested-by: Nick Desaulniers <ndesaulniers@google.com>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20201029181951.1866093-1-maskray@google.com
Signed-off-by: Will Deacon <will@kernel.org>
[nd: backport to adjust for missing:
commit
3ac0f4526dfb ("arm64: lib: Use modern annotations for assembly functions")
commit
35e61c77ef38 ("arm64: asm: Add new-style position independent function annotations")]
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: Ibebbfa15f3337b5a2ac88ba683c5e429758d7a98
Ard Biesheuvel [Tue, 21 Nov 2017 13:40:17 +0000 (13:40 +0000)]
BACKPORT: crypto: arm64/aes-ce-cipher - move assembler code to .S file
commit
019cd46984d04703a39924178f503a98436ac0d7 upstream.
Most crypto drivers involving kernel mode NEON take care to put the code
that actually touches the NEON register file in a separate compilation
unit, to prevent the compiler from reordering code that preserves or
restores the NEON context with code that may corrupt it. This is
necessary because we currently have no way to express the restrictions
imposed upon use of the NEON in kernel mode in a way that the compiler
understands.
However, in the case of aes-ce-cipher, it did not seem unreasonable to
deviate from this rule, given how it does not seem possible for the
compiler to reorder cross object function calls with asm blocks whose
in- and output constraints reflect that it reads from and writes to
memory.
Now that LTO is being proposed for the arm64 kernel, it is time to
revisit this. The link time optimization may replace the function
calls to kernel_neon_begin() and kernel_neon_end() with instantiations
of the IR that make up its implementation, allowing further reordering
with the asm block.
So let's clean this up, and move the asm() blocks into a separate .S
file.
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-By: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Matthias Kaehlcke <mka@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
[ bgcngm: Backported to 4.9 ]
Signed-off-by: Bruno Martins <bgcngm@gmail.com>
Change-Id: I7b271d83a3d5baf81aa5fca69cd4f2817945a477
Ard Biesheuvel [Mon, 24 Jul 2017 10:28:10 +0000 (11:28 +0100)]
crypto: arm64/aes-ce-cipher - match round key endianness with generic code
In order to be able to reuse the generic AES code as a fallback for
situations where the NEON may not be used, update the key handling
to match the byte order of the generic code: it stores round keys
as sequences of 32-bit quantities rather than streams of bytes, and
so our code needs to be updated to reflect that.
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Change-Id: Ia5d6a7464a33240cafc544e79becd47018ecb703
Will Deacon [Mon, 10 Dec 2018 13:39:48 +0000 (13:39 +0000)]
BACKPORT: arm64: Fix minor issues with the dcache_by_line_op macro
[ Upstream commit
33309ecda0070506c49182530abe7728850ebe78 ]
The dcache_by_line_op macro suffers from a couple of small problems:
First, the GAS directives that are currently being used rely on
assembler behavior that is not documented, and probably not guaranteed
to produce the correct behavior going forward. As a result, we end up
with some undefined symbols in cache.o:
$ nm arch/arm64/mm/cache.o
...
U civac
...
U cvac
U cvap
U cvau
This is due to the fact that the comparisons used to select the
operation type in the dcache_by_line_op macro are comparing symbols
not strings, and even though it seems that GAS is doing the right
thing here (undefined symbols by the same name are equal to each
other), it seems unwise to rely on this.
Second, when patching in a DC CVAP instruction on CPUs that support it,
the fallback path consists of a DC CVAU instruction which may be
affected by CPU errata that require ARM64_WORKAROUND_CLEAN_CACHE.
Solve these issues by unrolling the various maintenance routines and
using the conditional directives that are documented as operating on
strings. To avoid the complexity of nested alternatives, we move the
DC CVAP patching to __clean_dcache_area_pop, falling back to a branch
to __clean_dcache_area_poc if DCPOP is not supported by the CPU.
Reported-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Suggested-by: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
[ bgcngm: Backported to 4.9, ignoring __clean_dcache_area_pop function ]
Signed-off-by: Bruno Martins <bgcngm@gmail.com>
Change-Id: I32344fa8282596976a8d8f65cf76429191c64416
Ard Biesheuvel [Thu, 23 Aug 2018 16:48:45 +0000 (17:48 +0100)]
BACKPORT: crypto: arm64/aes-modes - get rid of literal load of addend vector
commit
ed6ed11830a9ded520db31a6e2b69b6b0a1eb0e2 upstream.
Replace the literal load of the addend vector with a sequence that
performs each add individually. This sequence is only 2 instructions
longer than the original, and 2% faster on Cortex-A53.
This is an improvement by itself, but also works around a Clang issue,
whose integrated assembler does not implement the GNU ARM asm syntax
completely, and does not support the =literal notation for FP registers
(more info at https://bugs.llvm.org/show_bug.cgi?id=38642)
Cc: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Change-Id: Ic8f7adcd28bd2da57b465a8e11e9d55b5669a539
Masahiro Yamada [Wed, 8 Apr 2020 01:36:23 +0000 (10:36 +0900)]
BACKPORT: kbuild: support LLVM=1 to switch the default tools to Clang/LLVM
commit
a0d1c951ef08ed24f35129267e3595d86f57f5d3 upstream.
As Documentation/kbuild/llvm.rst implies, building the kernel with a
full set of LLVM tools gets very verbose and unwieldy.
Provide a single switch LLVM=1 to use Clang and LLVM tools instead
of GCC and Binutils. You can pass it from the command line or as an
environment variable.
Please note LLVM=1 does not turn on the integrated assembler. You need
to pass LLVM_IAS=1 to use it. When the upstream kernel is ready for the
integrated assembler, I think we can make it default.
We discussed what we need, and we agreed to go with a simple boolean
flag that switches both target and host tools:
https://lkml.org/lkml/2020/3/28/494
https://lkml.org/lkml/2020/4/3/43
Some items discussed, but not adopted:
- LLVM_DIR
When multiple versions of LLVM are installed, I just thought supporting
LLVM_DIR=/path/to/my/llvm/bin/ might be useful.
CC = $(LLVM_DIR)clang
LD = $(LLVM_DIR)ld.lld
...
However, we can handle this by modifying PATH. So, we decided to not do
this.
- LLVM_SUFFIX
Some distributions (e.g. Debian) package specific versions of LLVM with
naming conventions that use the version as a suffix.
CC = clang$(LLVM_SUFFIX)
LD = ld.lld(LLVM_SUFFIX)
...
will allow a user to pass LLVM_SUFFIX=-11 to use clang-11 etc.,
but the suffixed versions in /usr/bin/ are symlinks to binaries in
/usr/lib/llvm-#/bin/, so this can also be handled by PATH.
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
Tested-by: Nathan Chancellor <natechancellor@gmail.com> # build
Tested-by: Nick Desaulniers <ndesaulniers@google.com>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
[nd: conflict in exported vars list from not backporting commit
e83b9f55448a ("kbuild: add ability to generate BTF type info for vmlinux")]
[nd: hunk against Documentation/kbuild/kbuild.rst dropped due to not backporting
commit
cd238effefa2 ("docs: kbuild: convert docs to ReST and rename to *.rst")]
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry-picked from commit
62353048e2d4e398cfc22dbee3e1a7f6f535dcc1)
Change-Id: Ib62c20d4d01b0b95bdcd5e73fa18f32cdb8f585c
Masahiro Yamada [Wed, 8 Apr 2020 01:36:22 +0000 (10:36 +0900)]
BACKPORT: kbuild: replace AS=clang with LLVM_IAS=1
commit
7e20e47c70f810d678d02941fa3c671209c4ca97 upstream.
The 'AS' variable is unused for building the kernel. Only the remaining
usage is to turn on the integrated assembler. A boolean flag is a better
fit for this purpose.
AS=clang was added for experts. So, I replaced it with LLVM_IAS=1,
breaking the backward compatibility.
Suggested-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry-picked from commit
7e20e47c70f810d678d02941fa3c671209c4ca97)
Change-Id: I1dcf901b2543ee6a95cfffddd2ced50b0a1ae14c
Fangrui Song [Thu, 2 Apr 2020 17:38:42 +0000 (10:38 -0700)]
BACKPORT: Documentation/llvm: fix the name of llvm-size
The tool is called llvm-size, not llvm-objsize.
Fixes:
fcf1b6a35c16 ("Documentation/llvm: add documentation on building w/ Clang/LLVM")
Signed-off-by: Fangrui Song <maskray@google.com>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
(cherry picked from commit
0f44fbc162b737ff6251ae248184390ae2279fee)
Change-Id: Ib6ff2a256b55983d0a3e9bb10f53f7a5c3c214d2
Nick Desaulniers [Wed, 26 Feb 2020 23:23:36 +0000 (15:23 -0800)]
BACKPORT: Documentation/llvm: add documentation on building w/ Clang/LLVM
Added to kbuild documentation. Provides more official info on building
kernels with Clang and LLVM than our wiki.
Suggested-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
Reviewed-by: Sedat Dilek <sedat.dilek@gmail.com>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
(cherry picked from commit
fcf1b6a35c16ac500fa908a4022238e5d666eabf)
Change-Id: I33bc4a97cf9e9ef923712bb490df0bceac81dade
Mark Salyzyn [Tue, 28 Mar 2017 21:11:02 +0000 (14:11 -0700)]
ANDROID: g12a: turn on VDSO
Turn on the vdso32 feature on an arm64 kernel.
Results in roughly a 4 fold speedup for clock_gettime() and other
timekeeping functions for arm32 executables in the environment.
Signed-off-by: Mark Salyzyn <salyzyn@google.com>
Bug:
20045882
Bug:
19198045
Bug:
63737556
Change-Id: If39bfad8b287a5455dc8240a73dcc8951e4bc13f
Peter Collingbourne [Wed, 7 Nov 2018 00:39:13 +0000 (16:39 -0800)]
FROMLIST: arm64: Build vDSO with -ffixed-x18
The vDSO needs to be build with x18 reserved in order to accommodate
userspace platform ABIs built on top of Linux that use the register
to carry inter-procedural state, as provided for by the AAPCS.
An example of such a platform ABI is the one that will be used by an
upcoming version of Android.
Although this change is currently a no-op due to the fact that the vDSO
is currently implemented in pure assembly on arm64, it is necessary
in order to prepare for another change [1] that will add C code to
the vDSO.
[1] https://patchwork.kernel.org/patch/
10044501/
Change-Id: Icaac4b1c9127d81d754d3b8688274e9afc781760
Signed-off-by: Peter Collingbourne <pcc@google.com>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Cc: Mark Salyzyn <salyzyn@google.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: linux-arm-kernel@lists.infradead.org
Mark Salyzyn [Thu, 25 Jan 2018 21:43:19 +0000 (13:43 -0800)]
ANDROID: turn on VCT access from 32-bit applications
Deal with regression from
7b4edf240be4a86ede06af51caf056fb1e80682e
("clocksource: arch_timer: make virtual counter access configurable")
by selecting ARM_ARCH_TIMER_VCT_ACCESS if COMPAT_VDSO is selected.
Signed-off-by: Mark Salyzyn <salyzyn@google.com>
Bug:
72417836
Change-Id: Ie11498880941977a8014adb8b8a3b07a6ef82e27
Daniel Mentz [Thu, 21 Feb 2019 00:59:14 +0000 (16:59 -0800)]
vdso32: Invoke clang with correct path to GCC toolchain
Clang needs to have access to a GCC toolchain which we advertise using
the command line option --gcc-toolchain=. Clang previously picked the
wrong toolchain which resulted in the following error message:
/..//bin/as: unrecognized option '-EL'
Bug:
123422077
Signed-off-by: Daniel Mentz <danielmentz@google.com>
Change-Id: I3e339dd446b71e2c75eb9e2c186eba715b3771cd
Nathan Chancellor [Tue, 22 May 2018 21:59:35 +0000 (14:59 -0700)]
FROMLIST: arm64: vdso32: Use full path to Clang instead of relying on PATH
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
Mark Salyzyn [Wed, 24 Jan 2018 22:00:19 +0000 (14:00 -0800)]
ANDROID: clock_gettime(CLOCK_BOOTTIME,) slows down >20x
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
Mark Salyzyn [Tue, 28 Mar 2017 21:11:02 +0000 (14:11 -0700)]
ANDROID: CROSS_COMPILE_ARM32 must work if CONFIG_COMPAT_VDSO
Prevent surprise loss of vdso32 support.
Signed-off-by: Mark Salyzyn <salyzyn@google.com>
Bug:
63737556
Bug:
20045882
Bug:
19198045
Change-Id: I8b381f7649b95b298ea9e1a99aa3794c7bc08d09
Kevin Brodsky [Fri, 13 May 2016 08:59:28 +0000 (09:59 +0100)]
FROMLIST: BACKPORT: [PATCH 6/6] arm64: Wire up and expose the new compat vDSO
(cherry pick from url https://patchwork.kernel.org/patch/
10060447/)
Expose the new compat vDSO via the COMPAT_VDSO config option.
The option is not enabled in defconfig because we really need a 32-bit
compiler this time, and we rely on the user to provide it themselves
by setting CROSS_COMPILE_ARM32. Therefore enabling the option by
default would make little sense, since the user must explicitly set a
non-standard environment variable anyway.
CONFIG_COMPAT_VDSO is not directly used in the code, because we want
to ignore it (build as if it were not set) if the user didn't set
CROSS_COMPILE_ARM32. If the variable has been set to a valid prefix,
CONFIG_VDSO32 will be set; this is the option that the code and
Makefiles test.
For more flexibility, like CROSS_COMPILE, CROSS_COMPILE_ARM32 can also
be set via CONFIG_CROSS_COMPILE_ARM32 (the environment variable
overrides the config option, as expected).
Signed-off-by: Kevin Brodsky <kevin.brodsky@arm.com>
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: Ie8a7d6c2b5ba3edca591a9a953ce99ec792da882
Kevin Brodsky [Thu, 8 Sep 2016 13:25:04 +0000 (14:25 +0100)]
FROMLIST: [PATCH 5/6] arm64: compat: 32-bit vDSO setup
(cherry pick from url https://patchwork.kernel.org/patch/
10060459/)
If the compat vDSO is enabled, install it in compat processes. In this
case, the compat vDSO replaces the sigreturn page (it provides its own
sigreturn trampolines).
Signed-off-by: Kevin Brodsky <kevin.brodsky@arm.com>
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: Ia6acf4c3ffea636bc750ac00853ea762c182e5b5
Kevin Brodsky [Wed, 11 May 2016 10:42:22 +0000 (11:42 +0100)]
FROMLIST: [PATCH 4/6] arm64: compat: Add a 32-bit vDSO
(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
Kevin Brodsky [Tue, 10 May 2016 12:51:54 +0000 (13:51 +0100)]
FROMLIST: BACKPORT: [PATCH 3/6] arm64: Refactor vDSO init/setup
(cherry pick from url https://patchwork.kernel.org/patch/
10060439/)
Move the logic for setting up mappings and pages for the vDSO into
static functions. This makes the vDSO setup code more consistent with
the compat side and will allow to reuse it for the future compat vDSO.
Signed-off-by: Kevin Brodsky <kevin.brodsky@arm.com>
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: I13e84479591091669190360f2a7f4d04462e6344
Kevin Brodsky [Thu, 12 May 2016 08:53:26 +0000 (09:53 +0100)]
FROMLIST: [PATCH 2/6] arm64: elf: Set AT_SYSINFO_EHDR in compat processes
(cherry pick from url https://patchwork.kernel.org/patch/
10060431/)
If the compat vDSO is enabled, we need to set AT_SYSINFO_EHDR in the
auxiliary vector of compat processes to the address of the vDSO code
page, so that the dynamic linker can find it (just like the regular vDSO).
Note that we cast context.vdso to Elf64_Off, instead of elf_addr_t,
because elf_addr_t is Elf32_Off in compat_binfmt_elf.c, and casting
context.vdso to u32 would trigger a pointer narrowing warning.
Signed-off-by: Kevin Brodsky <kevin.brodsky@arm.com>
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: I5d0b191d3b2f4c0b2ec31fe9faef0246253635ce
Kevin Brodsky [Thu, 12 May 2016 09:55:47 +0000 (10:55 +0100)]
FROMLIST: [PATCH 1/6] arm64: compat: Use vDSO sigreturn trampolines if available
(cherry pick from url https://patchwork.kernel.org/patch/
10060449/)
If the compat vDSO is enabled, it replaces the sigreturn page.
Therefore, we use the sigreturn trampolines the vDSO provides instead.
Signed-off-by: Kevin Brodsky <kevin.brodsky@arm.com>
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: Ic0933741e321e1bf66409b7e190a776f12948024
Mark Salyzyn [Fri, 27 Oct 2017 15:58:18 +0000 (08:58 -0700)]
FROMLIST: lib: vdso: add support for time
(cherry pick from url https://patchwork.kernel.org/patch/
10053549/)
Add time() vdso support to match up with existing support in the x86's
vdso. Currently benefitting arm and arm64 which uses the common
vgettimeofday.c implementation. On arm provides about a ~14 fold
improvement in speed over the straight syscall, and about a ~5 fold
improvement in speed over an alternate library implementation that
relies on the vdso call to gettimeofday to fulfill the request.
We can provide __vdso_time even if we can not provide a speed
enhanced __vdso_gettimeofday.
Signed-off-by: Mark Salyzyn <salyzyn@android.com>
Bug:
63737556
Bug:
20045882
Change-Id: I0bb3c6bafe57f9ed69350e2dd54edaae58316e8f
Kevin Brodsky [Tue, 10 May 2016 12:32:58 +0000 (13:32 +0100)]
FROMLIST: [PATCH] arm64: compat: Expose offset to registers in sigframes
(cherry picked from url https://patchwork.kernel.org/patch/
10006025/)
This will be needed to provide unwinding information in compat
sigreturn trampolines, part of the future compat vDSO. There is no
obvious header the compat_sig* struct's should be moved to, so let's
put them in signal32.h.
Also fix minor style issues reported by checkpatch.
Signed-off-by: Kevin Brodsky <kevin.brodsky@arm.com>
Signed-off-by: Mark Salyzyn <salyzyn@android.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Andy Gross <andy.gross@linaro.org>
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: I9c23dd6b56ca48c0953cbf78ccb7b49ded906052
Mark Salyzyn [Fri, 27 Oct 2017 15:58:18 +0000 (08:58 -0700)]
FROMLIST: [PATCH v5 12/12] lib: vdso: do not expose gettimeofday, if no arch supported timer
(cherry pick from url https://patchwork.kernel.org/patch/
10044539/)
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. But instead of landing it in arm64, land the
result into lib/vdso and unify both implementations to simplify
future maintenance.
If ARCH_PROVIDES_TIMER is not defined, do not expose gettimeofday.
libc will default directly to syscall. Also ifdef clock_gettime
switch cases and stubs if not supported and other unused components.
Signed-off-by: Mark Salyzyn <salyzyn@android.com>
Cc: James Morse <james.morse@arm.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Dmitry Safonov <dsafonov@virtuozzo.com>
Cc: John Stultz <john.stultz@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Laura Abbott <labbott@redhat.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Andy Gross <andy.gross@linaro.org>
Cc: Kevin Brodsky <kevin.brodsky@arm.com>
Cc: Andrew Pinski <apinski@cavium.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Bug:
63737556
Bug:
20045882
Change-Id: I362a7114db0aac800e16eb90d14a8739e18f42e4
Mark Salyzyn [Thu, 24 Aug 2017 20:35:24 +0000 (13:35 -0700)]
FROMLIST: [PATCH v5 11/12] lib: vdso: Add support for CLOCK_BOOTTIME
(cherry pick from url https://patchwork.kernel.org/patch/
10044503/)
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. But instead of landing it in arm64, land the
result into lib/vdso and unify both implementations to simplify
future maintenance.
Add a case for CLOCK_BOOTTIME as it is popular for measuring
relative time on systems expected to suspend() or hibernate().
Android uses CLOCK_BOOTTIME for all relative time measurements
and timeouts. Switching to vdso reduced CPU utilization and improves
accuracy. There is also a desire by some partners to switch all
logging over to CLOCK_BOOTTIME, and thus this operation alone would
contribute to a near percentile CPU load.
Signed-off-by: Mark Salyzyn <salyzyn@android.com>
Cc: James Morse <james.morse@arm.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Dmitry Safonov <dsafonov@virtuozzo.com>
Cc: John Stultz <john.stultz@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Laura Abbott <labbott@redhat.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Andy Gross <andy.gross@linaro.org>
Cc: Kevin Brodsky <kevin.brodsky@arm.com>
Cc: Andrew Pinski <apinski@cavium.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Bug:
63737556
Bug:
20045882
Change-Id: I76c26b054baf7f1100e03c65d6b16fe649b883b1
Mark Salyzyn [Fri, 4 Aug 2017 16:58:40 +0000 (09:58 -0700)]
FROMLIST: [PATCH v5 10/12] arm64: vdso: replace gettimeofday.S with global vgettimeofday.C
(cherry picked from url https://patchwork.kernel.org/patch/
10044501/)
Take an effort from the previous 9 patches 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. But
instead of landing it in arm64, land the result into lib/vdso and
unify both implementations to simplify future maintenance.
apinski@cavium.com makes the following claims in the original patch:
This allows the compiler to optimize the divide by 1000 and remove
the other divides.
On ThunderX, gettimeofday improves by 32%. On ThunderX 2,
gettimeofday improves by 18%.
Note I noticed a bug in the old (arm64) implementation of
__kernel_clock_getres; it was checking only the lower 32bits of the
pointer; this would work for most cases but could fail in a few.
<end of claim>
Signed-off-by: Mark Salyzyn <salyzyn@android.com>
Cc: James Morse <james.morse@arm.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Dmitry Safonov <dsafonov@virtuozzo.com>
Cc: John Stultz <john.stultz@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Laura Abbott <labbott@redhat.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Andy Gross <andy.gross@linaro.org>
Cc: Kevin Brodsky <kevin.brodsky@arm.com>
Cc: Andrew Pinski <apinski@cavium.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Bug:
63737556
Bug:
20045882
Change-Id: I71ff27ff5bfa323354fda6867b01ec908d8d6cbd
Mark Salyzyn [Thu, 12 Oct 2017 22:13:07 +0000 (15:13 -0700)]
FROMLIST: [PATCH v5 09/12] arm: vdso: move vgettimeofday.c to lib/vdso/
(cherry pick from url https://patchwork.kernel.org/patch/
10044497/)
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. But instead of landing it in arm64, land the
result into lib/vdso and unify both implementations to simplify
future maintenance.
Declare arch/arm/vdso/vgettimeofday.c to be a candidate for a global
implementation of the vdso timer calls. The hope is that new
architectures can take advantage of the current unification of
arm and arm64 implementations.
We urge future efforts to merge their implementations into the
global vgettimeofday.c file and thus provide functional parity.
Signed-off-by: Mark Salyzyn <salyzyn@android.com>
Cc: James Morse <james.morse@arm.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Dmitry Safonov <dsafonov@virtuozzo.com>
Cc: John Stultz <john.stultz@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Laura Abbott <labbott@redhat.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Andy Gross <andy.gross@linaro.org>
Cc: Kevin Brodsky <kevin.brodsky@arm.com>
Cc: Andrew Pinski <apinski@cavium.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Bug:
63737556
Bug:
20045882
Change-Id: If7da1d8144684d52ed9520a581e6023c623df931
Mark Salyzyn [Thu, 17 Aug 2017 16:16:27 +0000 (09:16 -0700)]
FROMLIST: [PATCH v5 08/12] arm: vdso: Add ARCH_CLOCK_FIXED_MASK
(cherry picked from url https://patchwork.kernel.org/patch/
10044543/)
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. But instead of landing it in arm64, land the
result into lib/vdso and unify both implementations to simplify
future maintenance.
Add ARCH_CLOCK_FIXED_MASK as an efficiency since arm64 has no
purpose for cs_mask vdso_data variable.
Signed-off-by: Mark Salyzyn <salyzyn@android.com>
Cc: James Morse <james.morse@arm.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Dmitry Safonov <dsafonov@virtuozzo.com>
Cc: John Stultz <john.stultz@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Laura Abbott <labbott@redhat.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Andy Gross <andy.gross@linaro.org>
Cc: Kevin Brodsky <kevin.brodsky@arm.com>
Cc: Andrew Pinski <apinski@cavium.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Bug:
63737556
Bug:
20045882
Change-Id: Iadf94bed6166d2ee43bb46bdf54636618e4b8854
Mark Salyzyn [Thu, 12 Oct 2017 22:13:07 +0000 (15:13 -0700)]
FROMLIST: [PATCH v5 07/12] arm: vdso: disable profiling
(cherry pick from url https://patchwork.kernel.org/patch/
10044491/)
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. But instead of landing it in arm64, land the
result into lib/vdso and unify both implementations to simplify
future maintenance.
Make sure kasan and ubsan profiling, and kcov instrumentation,
is turned off for VDSO code.
Signed-off-by: Mark Salyzyn <salyzyn@android.com>
Cc: James Morse <james.morse@arm.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Dmitry Safonov <dsafonov@virtuozzo.com>
Cc: John Stultz <john.stultz@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Laura Abbott <labbott@redhat.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Andy Gross <andy.gross@linaro.org>
Cc: Kevin Brodsky <kevin.brodsky@arm.com>
Cc: Andrew Pinski <apinski@cavium.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Bug:
63737556
Bug:
20045882
Change-Id: I2b44c1edd81665b8bb235a65ba642767c35f1e61
Mark Salyzyn [Thu, 17 Aug 2017 16:16:27 +0000 (09:16 -0700)]
FROMLIST: [PATCH v5 06/12] arm: vdso: add support for clock_getres
(cherry picked from url https://patchwork.kernel.org/patch/
10044545/)
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. But instead of landing it in arm64, land the
result into lib/vdso and unify both implementations to simplify
future maintenance.
Add clock_getres vdso support to match up with existing support in
the arm64's vdso.
Signed-off-by: Mark Salyzyn <salyzyn@android.com>
Cc: James Morse <james.morse@arm.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Dmitry Safonov <dsafonov@virtuozzo.com>
Cc: John Stultz <john.stultz@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Laura Abbott <labbott@redhat.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Andy Gross <andy.gross@linaro.org>
Cc: Kevin Brodsky <kevin.brodsky@arm.com>
Cc: Andrew Pinski <apinski@cavium.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Bug:
63737556
Bug:
20045882
Change-Id: Ie37bf76d2992027f06a2cdd001d8654a860d2aac
Mark Salyzyn [Thu, 17 Aug 2017 16:16:27 +0000 (09:16 -0700)]
FROMLIST: [PATCH v6 05/12] arm: vdso: Add support for CLOCK_MONOTONIC_RAW
(cherry pick from url https://patchwork.kernel.org/patch/
10052099/)
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. But instead of landing it in arm64, land the
result into lib/vdso and unify both implementations to simplify
future maintenance.
Add a case for CLOCK_MONOTONIC_RAW to match up with support that
is available in arm64's vdso.
Signed-off-by: Mark Salyzyn <salyzyn@android.com>
Cc: James Morse <james.morse@arm.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Dmitry Safonov <dsafonov@virtuozzo.com>
Cc: John Stultz <john.stultz@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Laura Abbott <labbott@redhat.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Andy Gross <andy.gross@linaro.org>
Cc: Kevin Brodsky <kevin.brodsky@arm.com>
Cc: Andrew Pinski <apinski@cavium.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Bug:
63737556
Bug:
20045882
Change-Id: If9c09d131e236ba4a483dbc122e6b876f471df72
Mark Salyzyn [Thu, 17 Aug 2017 16:16:27 +0000 (09:16 -0700)]
FROMLIST: [PATCH v5 04/12] arm: vdso: do calculations outside reader loops
(cherry picked from url https://patchwork.kernel.org/patch/
10044477/)
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. But instead of landing it in arm64, land the
result into lib/vdso and unify both implementations to simplify
future maintenance.
In variable timer reading loops, pick up just the values until all
are synchronized, then outside of loop pick up cntvct and perform
calculations to determine final offset, shifted and multiplied
output value.
This replaces get_ns with get_clock_shifted_nsec as cntvct reader.
Signed-off-by: Mark Salyzyn <salyzyn@android.com>
Cc: James Morse <james.morse@arm.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Dmitry Safonov <dsafonov@virtuozzo.com>
Cc: John Stultz <john.stultz@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Laura Abbott <labbott@redhat.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Andy Gross <andy.gross@linaro.org>
Cc: Kevin Brodsky <kevin.brodsky@arm.com>
Cc: Andrew Pinski <apinski@cavium.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Bug:
63737556
Bug:
20045882
Change-Id: I8008197f08485ef89b267128e41624ff69c33f6b
Mark Salyzyn [Thu, 17 Aug 2017 16:16:27 +0000 (09:16 -0700)]
FROMLIST: [PATCH v5 03/12] arm: vdso: inline assembler operations to compiler.h
(cherry picked from commit https://patchwork.kernel.org/patch/
10044507/)
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. But instead of landing it in arm64, land the
result into lib/vdso and unify both implementations to simplify
future maintenance.
Move compiler-specific code to a local compiler.h file:
- CONFIG_AEABI dependency check.
- System call fallback functions standardized into a
DEFINE_FALLBACK macro.
- Replace arch_counter_get_cntvct() with arch_vdso_read_counter.
- Deal with architecture specific unresolved references emitted
by GCC.
- Optimize handling of fallback calls in callers.
- For time functions that always return success, do not waste time
checking return value for switch to fallback.
- Optimize unlikely nullptr checking in __vdso_gettimeofday,
if tv null no need to proceed to fallback, as vdso is still
capable of filling in the tv values.
Signed-off-by: Mark Salyzyn <salyzyn@android.com>
Cc: James Morse <james.morse@arm.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Dmitry Safonov <dsafonov@virtuozzo.com>
Cc: John Stultz <john.stultz@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Laura Abbott <labbott@redhat.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Andy Gross <andy.gross@linaro.org>
Cc: Kevin Brodsky <kevin.brodsky@arm.com>
Cc: Andrew Pinski <apinski@cavium.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Bug:
63737556
Bug:
20045882
Change-Id: I468e4c32b5136d199982bf25df8967321e384d90
Mark Salyzyn [Thu, 17 Aug 2017 16:16:27 +0000 (09:16 -0700)]
FROMLIST: [PATCH v5 02/12] arm: vdso: add include file defining __get_datapage()
(cherry picked from url https://patchwork.kernel.org/patch/
10044481/)
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. But instead of landing it in arm64, land the
result into lib/vdso and unify both implementations to simplify
future maintenance.
Define the prototype for __get_datapage() in local datapage.h header.
Rename all vdata variable that point to the datapage shortened to vd
to relect a consistent and concise style. Make sure that all
references to the datapage in vdso operations are readonly (const).
Make sure datapage is first parameter to all subroutines to also
be consistent.
Signed-off-by: Mark Salyzyn <salyzyn@android.com>
Cc: James Morse <james.morse@arm.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Dmitry Safonov <dsafonov@virtuozzo.com>
Cc: John Stultz <john.stultz@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Laura Abbott <labbott@redhat.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Andy Gross <andy.gross@linaro.org>
Cc: Kevin Brodsky <kevin.brodsky@arm.com>
Cc: Andrew Pinski <apinski@cavium.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Bug:
63737556
Bug:
20045882
Change-Id: I9512b49d36d53ca1b71d3ff82219a7c64e0fc613
Mark Salyzyn [Thu, 17 Aug 2017 16:16:27 +0000 (09:16 -0700)]
FROMLIST: [PATCH v5 01/12] arm: vdso: rename vdso_datapage variables
(cherry picked from url https://patchwork.kernel.org/patch/
10044505/)
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. But instead of landing it in arm64, land the
result into lib/vdso and unify both implementations to simplify
future maintenance.
Rename seq_count to tb_seq_count. Rename tk_is_cntvct to use_syscall.
Rename cs_mult to cs_mono_mult. All to align with the variables in the
arm64 vdso datapage. Rework vdso_read_begin() and vdso_read_retry()
functions to reflect modern access patterns for tb_seq_count field.
Update copyright message to reflect the start of the contributions in
this series.
Signed-off-by: Mark Salyzyn <salyzyn@android.com>
Cc: James Morse <james.morse@arm.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Dmitry Safonov <dsafonov@virtuozzo.com>
Cc: John Stultz <john.stultz@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Laura Abbott <labbott@redhat.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Andy Gross <andy.gross@linaro.org>
Cc: Kevin Brodsky <kevin.brodsky@arm.com>
Cc: Andrew Pinski <apinski@cavium.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Bug:
63737556
Bug:
20045882
Change-Id: I13f16e71b1ecba3d72b999caafef72e3c7f48dfe
Kevin Brodsky [Wed, 23 Nov 2016 15:41:15 +0000 (15:41 +0000)]
FROMLIST: [PATCH v3 3/3] arm64: compat: Add CONFIG_KUSER_HELPERS
(cherry picked from url http://lkml.iu.edu/hypermail/linux/kernel/1709.1/01903.html)
Make it possible to disable the kuser helpers by adding a KUSER_HELPERS
config option (enabled by default). When disabled, all kuser
helpers-related code is removed from the kernel and no mapping is done
at the fixed high address (0xffff0000); any attempt to use a kuser
helper from a 32-bit process will result in a segfault.
Signed-off-by: Kevin Brodsky <kevin.brodsky@arm.com>
Signed-off-by: Mark Salyzyn <salyzyn@android.com>
Bug:
9674955
Bug:
63737556
Bug:
20045882
Change-Id: Ie8c543301d39bfe88ef71fb6a669e571914b117b
Kevin Brodsky [Wed, 23 Nov 2016 15:41:15 +0000 (15:41 +0000)]
FROMLIST: [PATCH v3 2/3] arm64: compat: Split the sigreturn trampolines and kuser helpers (assembler sources)
(cherry picked from url http://lkml.iu.edu/hypermail/linux/kernel/1709.1/01902.html)
AArch32 processes are currently installed a special [vectors] page that
contains the sigreturn trampolines and the kuser helpers, at the fixed
address mandated by the kuser helpers ABI.
Having both functionalities in the same page has become problematic,
because:
* It makes it impossible to disable the kuser helpers (the sigreturn
trampolines cannot be removed), which is possible on arm.
* A future 32-bit vDSO would provide the sigreturn trampolines itself,
making those in [vectors] redundant.
This patch addresses the problem by moving the sigreturn trampolines
sources to its own file. Wrapped the comments to reduce the wrath of
checkpatch.pl.
Signed-off-by: Kevin Brodsky <kevin.brodsky@arm.com>
Signed-off-by: Mark Salyzyn <salyzyn@android.com>
Bug:
9674955
Bug:
63737556
Bug:
20045882
Change-Id: I1d7b96e7cfbe979ecf4cb4996befd1f3ae0e64fd
Kevin Brodsky [Wed, 23 Nov 2016 14:01:10 +0000 (14:01 +0000)]
FROMLIST: [PATCH v3 1/3] arm64: compat: Split the sigreturn trampolines and kuser helpers (C sources)
(cherry picked from url http://lkml.iu.edu/hypermail/linux/kernel/1709.1/01901.html)
AArch32 processes are currently installed a special [vectors] page that
contains the sigreturn trampolines and the kuser helpers, at the fixed
address mandated by the kuser helpers ABI.
Having both functionalities in the same page has become problematic,
because:
* It makes it impossible to disable the kuser helpers (the sigreturn
trampolines cannot be removed), which is possible on arm.
* A future 32-bit vDSO would provide the sigreturn trampolines itself,
making those in [vectors] redundant.
This patch addresses the problem by moving the sigreturn trampolines to
a separate [sigpage] page, mirroring [sigpage] on arm.
Even though [vectors] has always been a misnomer on arm64/compat, as
there is no AArch32 vector there (and now only the kuser helpers),
its name has been left unchanged, for compatibility with arm (there
are reports of software relying on [vectors] being there as the last
mapping in /proc/maps).
mm->context.vdso used to point to the [vectors] page, which is
unnecessary (as its address is fixed). It now points to the [sigpage]
page (whose address is randomized like a vDSO).
Signed-off-by: Kevin Brodsky <kevin.brodsky@arm.com>
Signed-off-by: Mark Salyzyn <salyzyn@android.com>
Bug:
9674955
Bug:
63737556
Bug:
20045882
Change-Id: I52a56ea71d7326df8c784f90eb73b5c324fe9d20
Khusika Dhamar Gusti [Mon, 16 Sep 2019 12:39:56 +0000 (19:39 +0700)]
Revert "arm64: vdso: Fix clock_getres() for CLOCK_REALTIME"
This reverts commit
9f641ee2b749d57b4672e4c28f4dba9523923ac4.
Signed-off-by: Khusika Dhamar Gusti <khusikadhamar@gmail.com>
Change-Id: Ib983c72f8d0868c4c2d50e31d0e5a48fb4f4354e
Khusika Dhamar Gusti [Mon, 16 Sep 2019 07:32:55 +0000 (14:32 +0700)]
Revert "ARM: vdso: Remove dependency with the arch_timer driver internals"
This reverts commit
79940ddbd08866e556e8c8da59e25754e1d89462.
Signed-off-by: Khusika Dhamar Gusti <khusikadhamar@gmail.com>
Change-Id: Ic7d585615698ee688b5a3999da07d3118563bb78
Bruno Martins [Mon, 25 Sep 2023 10:52:27 +0000 (11:52 +0100)]
ARM64: configs: g12a_tab_variant: Enable USB ACM support
Pretty usefull, if one wants to connect for example an external GPS.
Change-Id: Ic62b123e54724d5c552246c23ba3109e53b97ea4
Bruno Martins [Sun, 9 Jul 2023 11:08:16 +0000 (12:08 +0100)]
ARM64: configs: Create g12a variant defconfig for non-ATV targets
Straight copy from g12a_variant_defconfig, which only enables
touchscreen support on top for now.
Change-Id: Ie89e6d79389d461bfad6088ee15a25c7a7c6d0db
Bruno Martins [Tue, 10 Oct 2023 17:25:19 +0000 (18:25 +0100)]
ARM64: dts: radxa0_4g: Use safe value for usable memory end region
Although the previous value (the maximum within the 32-bit range)
booted fine when dtb.img was normally flashed in bootloader mode,
it proved to cause issues when fully packed image was flashed
via AML flash tool.
This value has been taken from S922X datasheet. Stick to it as
the user facing total memory is 4.0 GB, as desired.
Change-Id: I17d20003cf52aede3720065564666809ba63f711
Bruno Martins [Tue, 10 Oct 2023 09:47:48 +0000 (10:47 +0100)]
ARM64: dts: Include all dtbs
Change-Id: Ia2d66f52cf5d83d376af35322abc2f9cd08f8d49
Bruno Martins [Mon, 9 Oct 2023 15:51:40 +0000 (16:51 +0100)]
ARM64: dts: Add dt for radxa0 boards with 4GB of RAM
Copied from regular g12a_s905y2_radxa0.dts, which has usable-memory
set to 2GB, this changes it to 4GB.
Change-Id: Ibf1a7d36b097560b349342e64ec0427dd413b688
Nolen Johnson [Mon, 10 Jul 2023 00:44:39 +0000 (20:44 -0400)]
Revert "[DNM] [TMP] HACK: Disable log level from being set"
This reverts commit
698e5846f704891f3e704989a268ed3ab3d9f463.
Reason: Pushed with the merge - whoops.
Change-Id: I8b786467483492e7b5a416b44d929ad21b5e1163
Nolen Johnson [Sun, 9 Jul 2023 23:21:36 +0000 (19:21 -0400)]
Merge branch 'deprecated/android-4.9-q' of https://android.googlesource.com/kernel/common into `lineage-20`
Change-Id: Ia96684a6c37a38a6e87d290ebfde978436e58c35
deadman96385 [Thu, 1 Jul 2021 20:46:58 +0000 (13:46 -0700)]
[DNM] [TMP] HACK: Disable log level from being set
* This allows the kernel log to be piped to uart by default.
Change-Id: I7c19a152daea7b920b247a2cce608abf13183f93
Nolen Johnson [Sun, 11 Jun 2023 21:30:52 +0000 (17:30 -0400)]
arch: arm64: boot: dts: devkits*: Switch to no-AVB DTS
* Not a damn clue why, but completely broken without this.
Change-Id: I04123a7cdec2bd8efe69ee08f66e10533ab0e73d
Vitaliy Tomin [Sun, 25 Dec 2022 14:44:13 +0000 (22:44 +0800)]
arch: dts: amlogic; Add deadpool noavb dynamic partition
Change-Id: I17c52df142cde9682fc613a7152042b09442c8e4
(cherry picked from commit
db804dde0bf8c2b23313edb33bedb508f12296da)
Nolen Johnson [Sun, 26 Mar 2023 23:17:31 +0000 (19:17 -0400)]
include: linux: Allow older GCC versions
* Some of our kmods aren't ready for clang.
* We can revert this once they are.
* Stock Deadpool S kernel source does this.
Change-Id: I432cb54efc15ee7e242437077670ba7925fc91ed
Christian Hoffmann [Tue, 7 Feb 2023 21:13:22 +0000 (22:13 +0100)]
amlogic: Opt-out of spectre mitigation
Change-Id: Ia20177ae4807ba935a0da89825e27961eae71004
Christian Hoffmann [Tue, 7 Feb 2023 21:12:53 +0000 (22:12 +0100)]
Revert "arm64: entry: Free up another register on kpti's tramp_exit path"
This reverts commit
a212d166a9d7c35e56ba11f15d6706eee3dd499b.
Change-Id: If3cc91ff73fce3af22768516835a7050958571ed
Christian Hoffmann [Sun, 12 Feb 2023 08:26:28 +0000 (09:26 +0100)]
Merge android.googlesource.com/kernel/common
* Branch: android-4.9-q
* SHA1:
b6d8afc10b82f168c3a97896d8ecd623da4a59bc
* Version: 4.9.336
Nolen Johnson [Fri, 30 Dec 2022 18:56:17 +0000 (13:56 -0500)]
arch: arm64: dts: partition_mbox_dynamic_deadpool: Revert userdata -> data rename
* Unecessary, and breaks things for no reason.
Change-Id: Ib72c227ea9d9074db0b0149aeb8fb031e8470e7a
Stricted [Fri, 30 Jul 2021 23:30:47 +0000 (23:30 +0000)]
arm64: dts: g12a_s905y2_radxa0: Apply changes for radxa0
Change-Id: I804f728e360356cc35f31a37b28dc9a07e1f1b46
Stricted [Fri, 30 Jul 2021 23:29:56 +0000 (23:29 +0000)]
arm64: dts: Rebrand G12A deadpool variant for radxa0
Change-Id: I48c8aac327bbb10057086a895148cda7866b06ca
Stricted [Sat, 17 Jul 2021 12:00:22 +0000 (12:00 +0000)]
arm64: dts: Add wifi overlay for m5
Change-Id: I338d01d750a701c64f2af488e6f95cf8adf978d1
Stricted [Tue, 6 Jul 2021 17:42:39 +0000 (17:42 +0000)]
arm64: dts: sm1_s905y3_bananapim5: Apply changes for bananapim5
Change-Id: If09571483ae6f68f52c86041669f1054cd216b20
Stricted [Tue, 6 Jul 2021 17:41:17 +0000 (17:41 +0000)]
arm64: dts: Rebrand odroidc4 for bananapim5
Change-Id: I682a92fefeef88d1965fd09e15cc25342f51e331
Stricted [Fri, 2 Jul 2021 04:59:07 +0000 (04:59 +0000)]
arm64: dts: sm1_s905y3_odroidc4: Apply changes for odroidc4
Change-Id: I2ee6b8645002d98631496587055dcaece9d9ca8d
Stricted [Fri, 2 Jul 2021 04:58:23 +0000 (04:58 +0000)]
arm64: dts: Rebrand SM1 deadpool variant for odroidc4
Change-Id: I1a64dd7831fe776999ac1c21e4c5b8ce57dc0694
Robin Jarry [Mon, 26 Feb 2018 18:41:47 +0000 (19:41 +0100)]
kbuild: use HOSTLDFLAGS for single .c executables
When compiling executables from a single .c file, the linker is also
invoked. Pass the HOSTLDFLAGS like for other linker commands.
Signed-off-by: Robin Jarry <robin.jarry@6wind.com>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Change-Id: I8332132775e7cc220eb7d1e20911223bca65e1e2
me2151 [Sun, 8 May 2022 04:43:29 +0000 (04:43 +0000)]
arm64: dts: sabrina: Add reserved ion-fb-mem space to ion_dev
* We already reserve the space in dts but its
not being called upon from dtsi.
* This fixes screen blanking during Toasts and
other pop up messages.
* [npjohnson]: Pull the original definition from SM1 deadpool
DTS.
Change-Id: I51f7aa6d0953b42c358a4ab963cc4cd72e1f35c3
Nolen Johnson [Thu, 4 Aug 2022 22:30:05 +0000 (18:30 -0400)]
arm64: dts: partition_mbox_dynamic_sabrina: Inherit the firmware_avb_deadpool
* firmware_avb_Q.dtsi isn't correct on Android 12 based kernel.
Change-Id: Ia2adfe4eb9b85af9871d1a9d0e50b10f688d508f
Nolen Johnson [Mon, 20 Dec 2021 23:10:05 +0000 (18:10 -0500)]
arm64: configs: g12a: Move CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR
Change-Id: Iecf9ef8b09a4edef3e7236353e739db3b9353b92
Stricted [Mon, 26 Jul 2021 16:57:37 +0000 (16:57 +0000)]
arm64: configs: Create sabrina variant defconfig
* Generated by comparing deadpool Android 10 defconfig to
sabrina Android 10 defconfig (both ran through savedconfig
first), with extraneous changes dropped.
Change-Id: I26c6ba841e840a7b0500ec3158a82e599c7776c8
deadman96385 [Sun, 25 Jul 2021 20:18:55 +0000 (15:18 -0500)]
arm64: dts: Import sabrina
* From QTS2.200918.032-sabrina TAR release.
Co-authored-by: Stricted <info@stricted.net>
Change-Id: Ibd5200f2af59cdf70316d4b0dee89983da5dce3e
me2151 [Sun, 8 May 2022 04:43:29 +0000 (04:43 +0000)]
arm64: dts: sti6130d3x0: Add reserved ion-fb-mem space to ion_dev
* We already reserve the space in dts but its
not being called upon from dtsi.
* This fixes screen blanking during Toasts and
other pop up messages.
Change-Id: Ib9cf180f93473e0839ddbac806d9c086416d4ffa
deadman96385 [Thu, 1 Jul 2021 23:34:15 +0000 (16:34 -0700)]
arm64: dts: sti6140d350: Enable IR
* wade has an IR module, and it's stock remote works with it,
even in recovery, which is awesome.
* `arch/arm64/boot/dts/amlogic/Makefile` apparently had no
UNIX file-end newline, so now it does.
Change-Id: I19fbd84981f11af75b5e4ae10533d164cbcf18a3
deadman96385 [Thu, 1 Jul 2021 22:48:53 +0000 (15:48 -0700)]
arm64: dts: sti6130d3x0: Apply dopinder/wade's stock DTS changes
* Dummy-Charger/Battery added to main DTB instead of DTBO.
* IR Remote disabled in main DTS, enabled in Wade DTBO.
Co-authored-by: Stricted <info@stricted.net>
Co-authored-by: Sean McCreary <mccreary@mcwest.org>
Change-Id: I9ae1d2a56596e5f3c3ed4d3d08fda6b8b45efe8b
deadman96385 [Thu, 1 Jul 2021 22:47:37 +0000 (15:47 -0700)]
arm64: dts: sti6130d3x0: Rebrand to track device-specific changes
Change-Id: I738ae3065b9a932619c7774d543031e829432892
Stricted [Sat, 19 Jun 2021 23:28:55 +0000 (23:28 +0000)]
arm64: dts: amlogic: Build all DTBs
Change-Id: I424c2f57b537371d980f4f1ead3d4c4516d67161
Nolen Johnson [Mon, 5 Dec 2022 20:07:06 +0000 (15:07 -0500)]
arm64: configs: g12a_defconfig: Update from TTT1.220909.001.B7-
9305992
Change-Id: I5aeefbe586dadadd257259db9f314f1babda5d2a
Stricted [Sat, 19 Jun 2021 23:30:26 +0000 (23:30 +0000)]
arm64: configs: Add g12a defconfig from STT1.211025.001.Z4-
7928920
* Extracted from stock package: adt3-user-12-STT1.211025.001.Z4-
7928920-release-keys.
* Ran through `make savedconfig` to sanitize/minimalize.
Change-Id: I55fc74de8ab3c6eeef072c95dc6b7f589ed8922c
Daniel Micay [Tue, 16 May 2017 21:51:48 +0000 (17:51 -0400)]
Add toggle for disabling newly added USB devices
Based on the public grsecurity patches.
Change-Id: I2cbea91b351cda7d098f4e1aa73dff1acbd23cce
Signed-off-by: Daniel Micay <danielmicay@gmail.com>
Andy Shevchenko [Mon, 22 Jan 2018 16:05:43 +0000 (18:05 +0200)]
UPSTREAM: seq_file: Introduce DEFINE_SHOW_ATTRIBUTE() helper macro
The DEFINE_SHOW_ATTRIBUTE() helper macro would be useful for current
users, which are many of them, and for new comers to decrease code
duplication.
Acked-by: Lee Jones <lee.jones@linaro.org>
Acked-by: Darren Hart (VMware) <dvhart@infradead.org>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Bug:
136497735
(cherry picked from commit
a08f06bb7a0743a7fc8d571899c93d882468096e)
Change-Id: Ib60cf57dc5e979915a83848919644150d82e7058
Signed-off-by: Hridya Valsaraju <hridya@google.com>