Commit Graph

970793 Commits

Author SHA1 Message Date
Prasad Sodagudi
4d3dd5615b ANDROID: sched: Export sched_switch tracepoint symbol
Export sched_switch tracepoint symbol, so that modules
can register probes.

Bug: 175806230
Change-Id: I23ebc497bca2acaeefce6f72f0a85844878f4d8c
Signed-off-by: Prasad Sodagudi <psodagud@codeaurora.org>
2020-12-16 15:01:28 -08:00
Elliot Berman
552cb0291a Revert "ANDROID: GKI: Enable CONFIG_USB_XHCI_HCD"
This reverts commit db102bc6be ("ANDROID: GKI: Enable
CONFIG_USB_XHCI_HCD") until vendor code which contrbutes to these
drivers is removed.

Bug: 175625342
Bug: 175743419
Change-Id: I74f33dd54a8f4c498f0311990faa4f2b3524b37b
Signed-off-by: Elliot Berman <eberman@codeaurora.org>
2020-12-16 20:48:01 +00:00
Todd Kjos
92b2ec2189 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 0f966cba95)
Signed-off-by: Todd Kjos <tkjos@google.com>
2020-12-16 20:35:29 +00:00
Elliot Berman
87e01dd378 Revert "ANDROID: db845c_gki.fragment: Drop CONFIG_USB_DWC3 from config frament"
This reverts commit b3fd6681f2 ("ANDROID: db845c_gki.fragment: Drop
CONFIG_USB_DWC3 from config frament") until vendor code which
contributes to these drivers is removed.

Bug: 175625342
Bug: 175742587
Change-Id: Ie5029527ed9b55d99d1aa0cde6e7928d124079ea
Signed-off-by: Elliot Berman <eberman@codeaurora.org>
2020-12-16 19:42:55 +00:00
Elliot Berman
00e37d5fca Revert "ANDROID: GKI: enable CONFIG_USB_DWC3 to be build in"
This reverts commit 42d1d3ffd7 ("ANDROID: GKI: enable CONFIG_USB_DWC3
to be build in") until vendor code which contributes to these drivers is
removed.

Bug: 175625342
Bug: 175742587
Change-Id: Id4d0edcbefced412dc2718c4936b5ba0cf0b2211
Signed-off-by: Elliot Berman <eberman@codeaurora.org>
2020-12-16 19:42:32 +00:00
Jordan Crouse
ae4b9fd2b1 FROMGIT: dt-bindings: arm-smmu: Add compatible string for Adreno GPU SMMU
Every Qcom Adreno GPU has an embedded SMMU for its own use. These
devices depend on unique features such as split pagetables,
different stall/halt requirements and other settings. Identify them
with a compatible string so that they can be identified in the
arm-smmu implementation specific code.

Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
Signed-off-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Rob Herring <robh@kernel.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Link: https://lore.kernel.org/r/20201109184728.2463097-4-jcrouse@codeaurora.org
Signed-off-by: Will Deacon <will@kernel.org>

Bug: 171993060
(cherry picked from commit a29bbb0861
git: https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git)
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: I50456cab994091857a20d410bf6e6e29343fc488
2020-12-16 19:41:32 +00:00
Jordan Crouse
1ac851eedb FROMGIT: iommu/arm-smmu-qcom: Add implementation for the adreno GPU SMMU
Add a special implementation for the SMMU attached to most Adreno GPU
target triggered from the qcom,adreno-smmu compatible string.

The new Adreno SMMU implementation will enable split pagetables
(TTBR1) for the domain attached to the GPU device (SID 0) and
hard code it context bank 0 so the GPU hardware can implement
per-instance pagetables.

Co-developed-by: Rob Clark <robdclark@chromium.org>
Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
Signed-off-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Link: https://lore.kernel.org/r/20201109184728.2463097-2-jcrouse@codeaurora.org
Signed-off-by: Will Deacon <will@kernel.org>

Bug: 171993060
(cherry picked from commit 5c7469c66f
git: https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git)
[required manual merging in arm-smmu-qcom.c]
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: I02e24165f5131d5b6becaf749b2583e2d5a2d5db
2020-12-16 19:41:19 +00:00
Alistair Delva
e03a3cf3cc ANDROID: GKI: Unhide VIRTIO_DMA_SHARED_BUFFER
So downstream boards can select it. It is needed by some virtio drivers
like virtio-gpu. We can't put this in init/Kconfig.gki because we don't
want to enable VIRTIO options in GKI if they can be tristate.

Bug: 175707513
Change-Id: Ic8f7b0aa0ed6e9c74cda08d96eb30507d6886275
Signed-off-by: Alistair Delva <adelva@google.com>
2020-12-16 09:28:07 -08:00
Sami Tolvanen
7bce37ec80 ANDROID: Disable dynamic ftrace for allmodconfig builds
With LTO, upstream prefers to generate __mcount_loc sections with
objtool, which depends on libelf-dev that's not available in the CI.
Disable DYNAMIC_FTRACE from allmodconfig builds temporarily to work
around the problem.

Bug: 140224784
Bug: 145210207
Change-Id: I42ae99ab0a32ca3e7dcec6eae5a3e5df4b23f0d3
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
2020-12-16 08:56:36 -08:00
Sami Tolvanen
bb613f1c20 FROMLIST: x86, build: allow LTO to be selected
Pass code model and stack alignment to the linker as these are not
stored in LLVM bitcode, and allow CONFIG_LTO_CLANG* to be enabled.

Bug: 145210207
Change-Id: I50055b0be4fdf9f93b770d8b651f8c54dbda584e
Link: https://lore.kernel.org/lkml/20201013003203.4168817-26-samitolvanen@google.com/
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
2020-12-16 08:56:36 -08:00
Sami Tolvanen
5fbc1d78a4 FROMLIST: x86, vdso: disable LTO only for vDSO
Disable LTO for the vDSO. Note that while we could use Clang's LTO
for the 64-bit vDSO, it won't add noticeable benefit for the small
amount of C code.

Bug: 145210207
Change-Id: I97df448374c6ee44920c92db361551728562178a
Link: https://lore.kernel.org/lkml/20201013003203.4168817-24-samitolvanen@google.com/
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
2020-12-16 08:56:36 -08:00
Sami Tolvanen
6dd43b98c2 FROMLIST: kbuild: lto: postpone objtool
With LTO, LLVM bitcode won't be compiled into native code until
modpost_link, or modfinal for modules. This change postpones calls
to objtool until after these steps, and moves objtool_args to
Makefile.lib, so the arguments can be reused in Makefile.modfinal.

As we didn't have objects to process earlier, we use --duplicate
when processing vmlinux.o. This change also disables unreachable
instruction warnings with LTO to avoid warnings about the int3
padding between functions.

Bug: 145210207
Change-Id: I72615f7062d218bf612a5d929f2efb75a18538dd
Link: https://lore.kernel.org/lkml/20201013003203.4168817-12-samitolvanen@google.com/
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
2020-12-16 08:56:36 -08:00
Sami Tolvanen
8fdc2dc3ca FROMLIST: objtool: Split noinstr validation from --vmlinux
This change adds a --noinstr flag to objtool to allow us to specify
that we're processing vmlinux.o without also enabling noinstr
validation. This is needed to avoid false positives with LTO when we
run objtool on vmlinux.o without CONFIG_DEBUG_ENTRY.

Bug: 145210207
Change-Id: I479c72d2733844d2059253035391a0c6e8ad7771
Link: https://lore.kernel.org/lkml/20201013003203.4168817-11-samitolvanen@google.com/
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
2020-12-16 08:56:36 -08:00
Sami Tolvanen
78a2549ecb FROMLIST: x86, build: use objtool mcount
Select HAVE_OBJTOOL_MCOUNT if STACK_VALIDATION is selected to use
objtool to generate __mcount_loc sections for dynamic ftrace with
Clang and gcc <5 (later versions of gcc use -mrecord-mcount).

Bug: 145210207
Change-Id: I73f2ead54f21d5f32346c33071fce2d2d87f39fa
Link: https://lore.kernel.org/lkml/20201013003203.4168817-7-samitolvanen@google.com/
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
2020-12-16 08:56:35 -08:00
Sami Tolvanen
195bcf1c70 FROMLIST: tracing: add support for objtool mcount
This change adds build support for using objtool to generate
__mcount_loc sections.

Bug: 145210207
Change-Id: I58f4eae487a1f2cc1486daa6ae4927a2ef5f7137
Link: https://lore.kernel.org/lkml/20201013003203.4168817-6-samitolvanen@google.com/
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
2020-12-16 08:56:35 -08:00
Sami Tolvanen
3dc2da6928 FROMLIST: objtool: Don't autodetect vmlinux.o
With LTO, we run objtool on vmlinux.o, but don't want noinstr
validation. This change requires --vmlinux to be passed to objtool
explicitly.

Bug: 145210207
Change-Id: Ibfd814126df6b3d1a52f5461f2e5aac1377b02c9
Link: https://lore.kernel.org/lkml/20201013003203.4168817-4-samitolvanen@google.com/
Suggested-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
2020-12-16 08:56:35 -08:00
Sami Tolvanen
4ebe2a37ac ANDROID: objtool: Fix __mcount_loc generation with Clang's assembler
When objtool generates relocations for the __mcount_loc section, it
tries to reference __fentry__ calls by their section symbol offset.
However, this fails with Clang's integrated assembler as it may not
generate section symbols for every section. This patch looks up a
function symbol instead if the section symbol is missing, similarly
to commit e81e072443 ("objtool: Support Clang non-section symbols
in ORC generation").

Bug: 145210207
Change-Id: I1069c45a81a3b60eb8f8333581c379701145982f
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
2020-12-16 08:56:35 -08:00
Peter Zijlstra
7dcfcd46b9 FROMLIST: objtool: Add a pass for generating __mcount_loc
Add the --mcount option for generating __mcount_loc sections
needed for dynamic ftrace. Using this pass requires the kernel to
be compiled with -mfentry and CC_USING_NOP_MCOUNT to be defined
in Makefile.

Bug: 145210207
Change-Id: I34eeeb00c184bf265391549094fc15525536886b
Link: https://lore.kernel.org/lkml/20200625200235.GQ4781@hirez.programming.kicks-ass.net/
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
[Sami: rebased, dropped config changes, fixed to actually use --mcount,
       and wrote a commit message.]
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
2020-12-16 08:56:35 -08:00
Sami Tolvanen
589c80767a FROMLIST: arm64: allow LTO to be selected
Allow CONFIG_LTO_CLANG to be enabled.

Bug: 145210207
Change-Id: Ie640b49355a0339a786093b55e71cbb9cc550943
Link: https://lore.kernel.org/lkml/20201211184633.3213045-17-samitolvanen@google.com/
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Acked-by: Will Deacon <will@kernel.org>
2020-12-16 08:56:35 -08:00
Sami Tolvanen
14adafff91 FROMLIST: arm64: disable recordmcount with DYNAMIC_FTRACE_WITH_REGS
DYNAMIC_FTRACE_WITH_REGS uses -fpatchable-function-entry, which makes
running recordmcount unnecessary as there are no mcount calls in object
files, and __mcount_loc doesn't need to be generated.

While there's normally no harm in running recordmcount even when it's
not strictly needed, this won't work with LTO as we have LLVM bitcode
instead of ELF objects.

This change selects FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY, which
disables recordmcount when patchable function entries are used instead.

Bug: 145210207
Change-Id: Ifd57e2dabc70de5f202abd4b84e06e283657bd1d
Link: https://lore.kernel.org/lkml/20201211184633.3213045-16-samitolvanen@google.com/
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Acked-by: Will Deacon <will@kernel.org>
2020-12-16 08:56:34 -08:00
Sami Tolvanen
9fa364c98f FROMLIST: arm64: vdso: disable LTO
Disable LTO for the vDSO by filtering out CC_FLAGS_LTO, as there's no
point in using link-time optimization for the small amount of C code.

Bug: 145210207
Change-Id: Ibfd8a19f63d81e1edb18576ddd3794e86c4e78cf
Link: https://lore.kernel.org/lkml/20201211184633.3213045-15-samitolvanen@google.com/
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Acked-by: Will Deacon <will@kernel.org>
2020-12-16 08:56:34 -08:00
Sami Tolvanen
614b4c4b1b FROMLIST: drivers/misc/lkdtm: disable LTO for rodata.o
Disable LTO for rodata.o to allow objcopy to be used to
manipulate sections.

Bug: 145210207
Change-Id: Ic7e003c420cb6d209758fecbed944d494d3de67e
Link: https://lore.kernel.org/lkml/20201211184633.3213045-14-samitolvanen@google.com/
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Acked-by: Kees Cook <keescook@chromium.org>
2020-12-16 08:56:34 -08:00
Sami Tolvanen
004d72144e FROMLIST: efi/libstub: disable LTO
With CONFIG_LTO_CLANG, we produce LLVM bitcode instead of ELF object
files. Since LTO is not really needed here and the Makefile assumes we
produce an object file, disable LTO for libstub.

Bug: 145210207
Change-Id: Ie8b570c05995eb0fdb272ef9d1afc444449e57c9
Link: https://lore.kernel.org/lkml/20201211184633.3213045-13-samitolvanen@google.com/
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
2020-12-16 08:56:34 -08:00
Sami Tolvanen
beab453713 FROMLIST: scripts/mod: disable LTO for empty.c
With CONFIG_LTO_CLANG, clang generates LLVM IR instead of ELF object
files. As empty.o is used for probing target properties, disable LTO
for it to produce an object file instead.

Bug: 145210207
Change-Id: I8fa54c4c9b71f5d481a364b6eb10a4c34b2b71b7
Link: https://lore.kernel.org/lkml/20201211184633.3213045-12-samitolvanen@google.com/
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
2020-12-16 08:56:34 -08:00
Sami Tolvanen
1f975cd7dd FROMLIST: modpost: lto: strip .lto from module names
With LTO, everything is compiled into LLVM bitcode, so we have to link
each module into native code before modpost. Kbuild uses the .lto.o
suffix for these files, which also ends up in module information. This
change strips the unnecessary .lto suffix from the module name.

Bug: 145210207
Change-Id: I25b97a586f273b1b8d1f153b71e567136b0016ec
Link: https://lore.kernel.org/lkml/20201211184633.3213045-11-samitolvanen@google.com/
Suggested-by: Bill Wendling <morbo@google.com>
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
2020-12-16 08:56:34 -08:00
Sami Tolvanen
7ffcc1cf4c FROMLIST: PCI: Fix PREL32 relocations for LTO
With Clang's Link Time Optimization (LTO), the compiler can rename
static functions to avoid global naming collisions. As PCI fixup
functions are typically static, renaming can break references
to them in inline assembly. This change adds a global stub to
DECLARE_PCI_FIXUP_SECTION to fix the issue when PREL32 relocations
are used.

Bug: 145210207
Change-Id: Iaf4a28d14c5ab86d49d6fec07704c3cb48301d64
Link: https://lore.kernel.org/lkml/20201211184633.3213045-10-samitolvanen@google.com/
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
2020-12-16 08:56:33 -08:00
Sami Tolvanen
13968440c3 FROMLIST: init: lto: fix PREL32 relocations
With LTO, the compiler can rename static functions to avoid global
naming collisions. As initcall functions are typically static,
renaming can break references to them in inline assembly. This
change adds a global stub with a stable name for each initcall to
fix the issue when PREL32 relocations are used.

Bug: 145210207
Change-Id: I4e82728d472c72236cf1374300b5b71d53712687
Link: https://lore.kernel.org/lkml/20201211184633.3213045-9-samitolvanen@google.com/
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
2020-12-16 08:56:33 -08:00
Sami Tolvanen
110784e046 FROMLIST: init: lto: ensure initcall ordering
With LTO, the compiler doesn't necessarily obey the link order for
initcalls, and initcall variables need globally unique names to avoid
collisions at link time.

This change exports __KBUILD_MODNAME and adds the initcall_id() macro,
which uses it together with __COUNTER__ and __LINE__ to help ensure
these variables have unique names, and moves each variable to its own
section when LTO is enabled, so the correct order can be specified using
a linker script.

The generate_initcall_ordering.pl script uses nm to find initcalls from
the object files passed to the linker, and generates a linker script
that specifies the same order for initcalls that we would have without
LTO. With LTO enabled, the script is called in link-vmlinux.sh through
jobserver-exec to limit the number of jobs spawned.

Bug: 145210207
Change-Id: I80619eac3674acd9c6d2566443d16b3d09515351
Link: https://lore.kernel.org/lkml/20201211184633.3213045-8-samitolvanen@google.com/
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
2020-12-16 08:56:33 -08:00
Sami Tolvanen
3ea19301f7 FROMLIST: kbuild: lto: add a default list of used symbols
With CONFIG_LTO_CLANG, LLVM bitcode has not yet been compiled into a
binary when the .mod files are generated, which means they don't yet
contain references to certain symbols that will be present in the final
binaries. This includes intrinsic functions, such as memcpy, memmove,
and memset [1], and stack protector symbols [2]. This change adds a
default symbol list to use with CONFIG_TRIM_UNUSED_KSYMS when Clang's
LTO is used.

[1] https://llvm.org/docs/LangRef.html#standard-c-c-library-intrinsics
[2] https://llvm.org/docs/LangRef.html#llvm-stackprotector-intrinsic

Bug: 145210207
Change-Id: I9da92fba820c72633209e292fdc6f1c44abe7b9a
Link: https://lore.kernel.org/lkml/20201211184633.3213045-7-samitolvanen@google.com/
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
2020-12-16 08:56:33 -08:00
Sami Tolvanen
76df447444 FROMLIST: kbuild: lto: merge module sections
LLD always splits sections with LTO, which increases module sizes. This
change adds linker script rules to merge the split sections in the final
module.

Bug: 145210207
Change-Id: Id0b964e732b5c72177d8f6dc0f75114551445b97
Link: https://lore.kernel.org/lkml/20201211184633.3213045-6-samitolvanen@google.com/
Suggested-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
2020-12-16 08:56:33 -08:00
Sami Tolvanen
819ae9e4b2 FROMLIST: kbuild: lto: limit inlining
This change limits function inlining across translation unit boundaries
in order to reduce the binary size with LTO. The -import-instr-limit
flag defines a size limit, as the number of LLVM IR instructions, for
importing functions from other TUs, defaulting to 100.

Based on testing with arm64 defconfig, we found that a limit of 5 is a
reasonable compromise between performance and binary size, reducing the
size of a stripped vmlinux by 11%.

Bug: 145210207
Change-Id: Ief7053b55f99f7be0da8a01b6c4edb0a9e41ee07
Link: https://lore.kernel.org/lkml/20201211184633.3213045-1-samitolvanen@google.com/
Suggested-by: George Burgess IV <gbiv@google.com>
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
2020-12-16 08:56:33 -08:00
Sami Tolvanen
93f3831e2c FROMLIST: kbuild: lto: fix module versioning
With CONFIG_MODVERSIONS, version information is linked into each
compilation unit that exports symbols. With LTO, we cannot use this
method as all C code is compiled into LLVM bitcode instead. This
change collects symbol versions into .symversions files and merges
them in link-vmlinux.sh where they are all linked into vmlinux.o at
the same time.

Bug: 145210207
Change-Id: Icd8fd0c760891eff7a0ed12ce48b4db2a85fc2ad
Link: https://lore.kernel.org/lkml/20201211184633.3213045-1-samitolvanen@google.com/
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
2020-12-16 08:56:32 -08:00
Sami Tolvanen
ba01e93b41 FROMLIST: kbuild: add support for Clang LTO
This change adds build system support for Clang's Link Time
Optimization (LTO). With -flto, instead of ELF object files, Clang
produces LLVM bitcode, which is compiled into native code at link
time, allowing the final binary to be optimized globally. For more
details, see:

  https://llvm.org/docs/LinkTimeOptimization.html

The Kconfig option CONFIG_LTO_CLANG is implemented as a choice,
which defaults to LTO being disabled. To use LTO, the architecture
must select ARCH_SUPPORTS_LTO_CLANG and support:

  - compiling with Clang,
  - compiling all assembly code with Clang's integrated assembler,
  - and linking with LLD.

While using CONFIG_LTO_CLANG_FULL results in the best runtime
performance, the compilation is not scalable in time or
memory. CONFIG_LTO_CLANG_THIN enables ThinLTO, which allows
parallel optimization and faster incremental builds. ThinLTO is
used by default if the architecture also selects
ARCH_SUPPORTS_LTO_CLANG_THIN:

  https://clang.llvm.org/docs/ThinLTO.html

To enable LTO, LLVM tools must be used to handle bitcode files, by
passing LLVM=1 and LLVM_IAS=1 options to make:

  $ make LLVM=1 LLVM_IAS=1 defconfig
  $ scripts/config -e LTO_CLANG_THIN
  $ make LLVM=1 LLVM_IAS=1

To prepare for LTO support with other compilers, common parts are
gated behind the CONFIG_LTO option, and LTO can be disabled for
specific files by filtering out CC_FLAGS_LTO.

Bug: 145210207
Change-Id: I85eb4523ea787e4f9884e12ed6301f876d0d888e
Link: https://lore.kernel.org/lkml/20201211184633.3213045-1-samitolvanen@google.com/
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
2020-12-16 08:56:32 -08:00
Sami Tolvanen
450788232d FROMLIST: tracing: move function tracer options to Kconfig
Move function tracer options to Kconfig to make it easier to add
new methods for generating __mcount_loc, and to make the options
available also when building kernel modules.

Note that FTRACE_MCOUNT_USE_* options are updated on rebuild and
therefore, work even if the .config was generated in a different
environment.

Bug: 145210207
Change-Id: I6fc38abde50b602788148cb236aba1261affa896
Link: https://lore.kernel.org/lkml/20201211184633.3213045-1-samitolvanen@google.com/
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
2020-12-16 08:56:32 -08:00
Sudarshan Rajagopalan
1cf4b070e0 UPSTREAM: arm64/mm: add fallback option to allocate virtually contiguous memory
When section mappings are enabled, we allocate vmemmap pages from
physically continuous memory of size PMD_SIZE using
vmemmap_alloc_block_buf(). Section mappings are good to reduce TLB
pressure. But when system is highly fragmented and memory blocks are
being hot-added at runtime, its possible that such physically continuous
memory allocations can fail. Rather than failing the memory hot-add
procedure, add a fallback option to allocate vmemmap pages from
discontinuous pages using vmemmap_populate_basepages().

Signed-off-by: Sudarshan Rajagopalan <sudaraja@codeaurora.org>
Reviewed-by: Gavin Shan <gshan@redhat.com>
Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
Acked-by: Will Deacon <will@kernel.org>
Cc: Will Deacon <will@kernel.org>
Cc: Anshuman Khandual <anshuman.khandual@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Logan Gunthorpe <logang@deltatee.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Steven Price <steven.price@arm.com>
Link: https://lore.kernel.org/r/d6c06f2ef39bbe6c715b2f6db76eb16155fdcee6.1602722808.git.sudaraja@codeaurora.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>

(cherry picked from commit 9f84f39f55)

Bug: 170202780
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: I449b6d2dfab6b480e6d9487aa5e25f4281d0eabd
2020-12-16 14:58:51 +00:00
Matthias Maennich
3106314066 ANDROID: add initial symbol list for cuttlefish
Generated with:

BUILD_CONFIG=common-modules/virtual-device/build.config.cuttlefish.aarch64 build/build_abi.sh -s

Bug: 175534863
Signed-off-by: Matthias Maennich <maennich@google.com>
Change-Id: I7841f2a2298bc1ddae8039006f8cddf374ff0f19
2020-12-16 11:36:20 +00:00
Matthias Maennich
895a2f809a ANDROID: add initial symbol list for db845c
Generated with:
  BUILD_CONFIG=common/build.config.db845c build/build_abi.sh -s

Bug: 175534863
Signed-off-by: Matthias Maennich <maennich@google.com>
Change-Id: I51a1981556da3439618dfc5ad40e8927a53434ec
2020-12-16 11:36:20 +00:00
Matthias Maennich
33a674bd42 ANDROID: create initial symbol lists for android12-5.10
Bug: 175534863
Signed-off-by: Matthias Maennich <maennich@google.com>
Change-Id: I99bb33802b001bbe9e0adb96b52ba81b9df3b30b
2020-12-16 11:36:20 +00:00
Satya Durga Srinivasu Prabhala
85b85c3836 ANDROID: binder: Export binder_transaction_received trace point
Vendor modules would like to register with the binder_transaction_received
trace point to implement features carried in their downstream kernels.

Bug: 174219217
Change-Id: Ica0f90c60964fc845de05169cbdd8a4948adb1cd
Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
2020-12-15 22:36:07 +00:00
Satya Durga Srinivasu Prabhala
90bd50a4d7 ANDROID: binder: consolidate wakeup vendor hooks into one
There are few vendor hooks available for binder wakeup related
functionality. As they both essentially do the same thing, we can
consolidate them into one.

Bug: 174219217
Change-Id: I44b472e7564eecbe8236ad2eb88b0433195f14d8
Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
2020-12-15 22:35:10 +00:00
Alistair Delva
8390e533e5 ANDROID: GKI: Drop CONFIG_LOCALVERSION on 5.10
Not needed on release branches.

Bug: 175707513
Change-Id: I9e60d8c6b9ce99251757957e080f01e671fb0890
Signed-off-by: Alistair Delva <adelva@google.com>
2020-12-15 11:57:29 -08:00
Badhri Jagan Sridharan
912795eaa2 ANDROID: usb: typec: tcpm: Add a helper function to port is toggling
Helper function needed for fixing TD.4.7.4 and TEST.PD.PROT.SRC.10
PR_Swap while having contamiant detection enabled.

tcpm_is_toggling returns true when a DRP port is in one of the toggling
states.

Bug: 169213252
Bug: 174094095
Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
Change-Id: Ie3837c3067fd91f3e9ea4afdfc1d5c7bf44659de
2020-12-15 10:20:24 +00:00
Matthias Maennich
da5e68a82d ANDROID: disable BTF generation
This is to allow LTO on this branch which currently is incompatible with
pahole's BTF extraction mechanism.

Bug: 168714651
Signed-off-by: Matthias Maennich <maennich@google.com>
Change-Id: I8eb00db99fa97674155e47cf5f1e01ff651375ba
2020-12-15 09:42:07 +00:00
John Stultz
ff2efbe6cc FROMLIST: dma-buf: system_heap: Add a system-uncached heap re-using the system heap
This adds a heap that allocates non-contiguous buffers that are
marked as writecombined, so they are not cached by the CPU.

This is useful, as most graphics buffers are usually not touched
by the CPU or only written into once by the CPU. So when mapping
the buffer over and over between devices, we can skip the CPU
syncing, which saves a lot of cache management overhead, greatly
improving performance.

For folk using ION, there was a ION_FLAG_CACHED flag, which
signaled if the returned buffer should be CPU cacheable or not.
With DMA-BUF heaps, we do not yet have such a flag, and by default
the current heaps (system and cma) produce CPU cachable buffers.
So for folks transitioning from ION to DMA-BUF Heaps, this fills
in some of that missing functionality.

There has been a suggestion to make this functionality a flag
(DMAHEAP_FLAG_UNCACHED?) on the system heap, similar to how
ION used the ION_FLAG_CACHED. But I want to make sure an
_UNCACHED flag would truely be a generic attribute across all
heaps. So far that has been unclear, so having it as a separate
heap seemes better for now. (But I'm open to discussion on this
point!)

This is a rework of earlier efforts to add a uncached system heap,
done utilizing the exisitng system heap, adding just a bit of
logic to handle the uncached case.

Feedback would be very welcome!

Many thanks to Liam Mark for his help to get this working.

Pending opensource users of this code include:
* AOSP HiKey960 gralloc:
  - https://android-review.googlesource.com/c/device/linaro/hikey/+/1399519
  - Visibly improves performance over the system heap
* AOSP Codec2 (possibly, needs more review):
  - https://android-review.googlesource.com/c/platform/frameworks/av/+/1360640/17/media/codec2/vndk/C2DmaBufAllocator.cpp#325

Signed-off-by: John Stultz <john.stultz@linaro.org>
Link: https://lore.kernel.org/lkml/20201110034934.70898-8-john.stultz@linaro.org/
Bug: 170887642
Change-Id: I56cb3acf58546c7dfd423a2ce432e3d6d7fd7a69
2020-12-14 23:23:46 +00:00
John Stultz
c8bdd32555 FROMLIST: dma-buf: dma-heap: Keep track of the heap device struct
Keep track of the heap device struct.

This will be useful for special DMA allocations
and actions.

Signed-off-by: John Stultz <john.stultz@linaro.org>
Link: https://lore.kernel.org/lkml/20201110034934.70898-7-john.stultz@linaro.org/
Bug: 170887642
Change-Id: I55b8df5fd9fd46795a8f0171318895297d2dd379
2020-12-14 23:23:26 +00:00
Greg Kroah-Hartman
a54c7055d9 Merge 5.10.1 into android-5.10
Changes in 5.10.1
	Revert "md: change mddev 'chunk_sectors' from int to unsigned"
	Revert "dm raid: fix discard limits for raid1 and raid10"
	Linux 5.10.1

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Ifa253f67e0b25ec9a2afa77d5be98b77bc61b6a5
2020-12-14 20:46:40 +01:00
Greg Kroah-Hartman
841fca5a32 Linux 5.10.1
Link: https://lore.kernel.org/r/20201214170452.563016590@linuxfoundation.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-12-14 19:33:01 +01:00
Greg Kroah-Hartman
26934c8300 Revert "dm raid: fix discard limits for raid1 and raid10"
This reverts commit e0910c8e4f.

It causes problems :(

Reported-by: Dave Jones <davej@codemonkey.org.uk>
Reported-by: Mike Snitzer <snitzer@redhat.com>
Cc: Zdenek Kabelac <zkabelac@redhat.com>
Cc: Mikulas Patocka <mpatocka@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-12-14 19:33:01 +01:00
Greg Kroah-Hartman
859f703543 Revert "md: change mddev 'chunk_sectors' from int to unsigned"
This reverts commit 6ffeb1c3f8.

It causes problems :(

Reported-by: Dave Jones <davej@codemonkey.org.uk>
Reported-by: Mike Snitzer <snitzer@redhat.com>
Cc: Song Liu <songliubraving@fb.com>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Linus Torvalds <torvalds@linux-foundation.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-12-14 19:33:01 +01:00
Todd Kjos
69d00e3688 ANDROID: GKI: remove lockup detection configs
Remove CONFIG_LOCKUP_DETECTOR which is selected by
CONFIG_SOFTLOCKUP_DETECTOR since it causes power
regressions for partners.

Bug: 168445946
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: I9699a47968abac644bdd4b2d16ef85fdb3b595a0
2020-12-14 18:30:48 +00:00