Commit Graph

163 Commits

Author SHA1 Message Date
Aaron Kling 585c983a4c kernel: Default to no gcc on kernel 6.x
Current logic defaults to no gcc if kernel major version is greater than
or equal to 5 and kernel minor version is greater than or equal to 10.
Meaning kernel version 6.1 does not qualify because 1 is less than 10.
So additionally check if kernel major version is greater than or equal
to 6 and ignore minor version for that case.

Change-Id: Id72cb9e100c6fed014d696f4a3a88f6cafcd3932
2024-09-07 15:45:39 +02:00
LuK1337 cbdd62966e kernel: Make INTERNAL_VENDOR_RAMDISK_TARGET depend on kernel
This lets us package kernel modules into recovery ramdisk inside
vendor_boot.

Change-Id: I274bc95ce8682e2f13a595174ab279c129866f6a
2024-09-07 15:45:39 +02:00
Bruno Martins 1c8e0642f6 kernel: Ensure that module load lists are properly formed
Do not allow module load lists to contain unexistent kernel modules
and bail out if that's the case, informing that the list must be
corrected.

The lists can be formed including the full module path and with or
without the file extension, like shown below:

  kernel/drivers/watchdog/softdog.ko
  kernel/net/wireless/cfg80211.ko
  kernel/net/mac80211/mac80211.ko

or simply:

  softdog.ko
  cfg80211.ko
  mac80211.ko

or ultimately:

  softdog
  cfg80211
  mac80211

Either way, the newly generated modules.load file will now only
contain the module name without the extension, which is inline with
modules.alias and modules.blocklist.

Change-Id: I969274f7edf249c98ca241e37b6e41a921d36908
2024-09-07 15:45:39 +02:00
pppig236 e34df46854 kernel: Halt build process if an external module fails to compile
Before:
    mka bootimage
    qcacld failed to compile, but boot.img is generated

After:
    mka bootimage
    qcacld failed to compile and no boot.img is generated

Commit fadfdbf introduced the idea of building external modules,
but it didn't account for the scenario where compilation could fail
while the boot.img is still being built.

Fix this by properly stopping the build process as soon as the external
module fails to compile.

Change-Id: Ifed28825f8e4b78d304fe62a47908e208edfb886
2024-09-07 15:45:39 +02:00
Bruno Martins 926e5784a6 kernel: Replace BOARD_SYSTEM_KERNEL_MODULES with SYSTEM_KERNEL_MODULES
Commit 47931c1 introduced GKI modules handling with the assumption
that using BOARD_SYSTEM_KERNEL_MODULES would still work in Android 14,
but turns out that it conflicts with build/make/core rules.

Change-Id: I9167940c08b8420be254c52698f1faa2e3e7f793
2024-09-07 15:45:39 +02:00
basamaryan eb3e2bbbd4 config: Update clang version to clang-r487747c
* This is the default clang version for Android U release

Change-Id: I6a44012250470eeeb2e0f6993eb4e98308eec390
2024-09-07 15:45:39 +02:00
basamaryan 9d9c64cb7e kernel: Rename mkdtboimg.py
* Changed in https://android-review.googlesource.com/q/topic:%22colefaust_rename_mkdtboimg%22

Change-Id: Idd2ade7035c79207321ecbc70d6a4ddf9f4ed600
2024-09-07 15:45:39 +02:00
Tim Zimmermann b6e8d33006 kernel: Use correct variable name for vendor_kernel_boot modules
* This was missed in bdfc913935c2a8c38ed999a4c84bb96492e0e5fe
* Aligns the variable name for vendor_kernel_boot modules with AOSP

Change-Id: I8d59f7b5d62e29a0484ca36fadcb74acab4f1859
2024-09-07 15:45:39 +02:00
LuK1337 f05a3b293c kernel: Use lz4 from Google prebuilts
Fixes: "lz4" is not allowed to be used.

Test: breakfast tangorpro && m bootimage
Change-Id: I62cfe131f457117cb3745b91f5e43c085e87b611
2024-09-07 15:45:39 +02:00
Bruno Martins e19a2dacb9 kernel: Use pahole from Google prebuilts
This fixes the following warnings:

  13:04:54 Disallowed PATH tool "pahole" used: []string{"pahole", "--version"}
  13:04:54 See https://android.googlesource.com/platform/build/+/master/Changes.md#PATH_Tools for more information.
  "pahole" is not allowed to be used. See https://android.googlesource.com/platform/build/+/master/Changes.md#PATH_Tools for more information.
  /home/bgcngm/android/lineage/kernel/oneplus/sm8550/scripts/pahole-flags.sh: 12: [: Illegal number:
  /home/bgcngm/android/lineage/kernel/oneplus/sm8550/scripts/pahole-flags.sh: 16: [: Illegal number:
  /home/bgcngm/android/lineage/kernel/oneplus/sm8550/scripts/pahole-flags.sh: 20: [: Illegal number:

Change-Id: Ice2a3753301a7b7782037fd35544e2831b258650
2024-09-07 15:45:39 +02:00
SGCMarkus 3ca585f460 kernel: Allow to limit the used .dtb files for the final DTB image
On some devices too many .dtb files are generated. Instead of taking
all of them, allow to only take selected .dtb files for the final
DTB image.

Example: Motorola Edge 40 Pro (rtwo, sm8550) generates the following:
obj/DTB_OBJ/out/kaka-rumi.dtb
obj/DTB_OBJ/out/kalama-rtwo-base-kalama-rtwo-evb1-overlay.dtb
obj/DTB_OBJ/out/kalama-rtwo-base-kalama-rtwo-evt1-overlay.dtb
obj/DTB_OBJ/out/kalama-rtwo-base-kalama-rtwo-na-vzw-evt2-overlay.dtb
obj/DTB_OBJ/out/kalama-rtwo-base-kalama-rtwo-prc-dvt1b-overlay.dtb
obj/DTB_OBJ/out/kalama-rtwo-base-kalama-rtwo-prc-pvt-overlay.dtb
obj/DTB_OBJ/out/kalama-rtwo-base-kalama-rtwo-row-dvt1b-overlay.dtb
obj/DTB_OBJ/out/kalama-rtwo-base.dtb
obj/DTB_OBJ/out/kalama-v2-rtwo-base-kalama-rtwo-evb1-overlay.dtb
obj/DTB_OBJ/out/kalama-v2-rtwo-base-kalama-rtwo-evt1-overlay.dtb
obj/DTB_OBJ/out/kalama-v2-rtwo-base-kalama-rtwo-na-vzw-evt2-overlay.dtb
obj/DTB_OBJ/out/kalama-v2-rtwo-base-kalama-rtwo-prc-dvt1b-overlay.dtb
obj/DTB_OBJ/out/kalama-v2-rtwo-base-kalama-rtwo-prc-pvt-overlay.dtb
obj/DTB_OBJ/out/kalama-v2-rtwo-base-kalama-rtwo-row-dvt1b-overlay.dtb
obj/DTB_OBJ/out/kalama-v2-rtwo-base.dtb

with only kalama-rtwo-base.dtb and kalama-v2-rtwo-base.dtb needed.
Disabling compilation of the other kalama.dtb isn't possible, as this
would also disable the compilation of the needed .dtbo files.
Because they are earlier in alphabetical order, and the matching
board ids, the bootloader ends up selecting those, instead of the
correct ones. This results in USB (and possible other things) to
not work.

Change-Id: I486b6ec538a3e4906b5b8aa5ecb355b480b60de7
2024-09-07 15:45:39 +02:00
Bruno Martins 4367c8424d kernel: Include DTBOs from OEM/ODM folder in base DTB
It can be the case where OEM/ODM decided to put the main DTBOs
outside vendor/qcom (e.g. vendor/oplus). Support such usecase
by generically allowing all .dtbo files found in all first-level
subdirs to be moved to base DTB folder.

Change-Id: I154d401b560535d1fa8cd7ed4965dd34a4cf75f2
2024-09-07 15:45:39 +02:00
Bruno Martins 34e56e636f kernel: Handle GKI modules
All devices lauching with Android 13 (and above) must include
a system_dlkm partition, where GKI modules should reside.

Android 13 build system only supports providing prebuilt modules,
by pointing BOARD_SYSTEM_DLKM_SRC to the modules source folder.
Google will introduce BOARD_SYSTEM_KERNEL_MODULES for Android 14,
so take a step forward and use that macro to exclude the listed
modules from the usual vendor DLKM partition and place them into
the GKI module partition.

Note that the GKI modules are placed into lib/modules/androidX-Y.Z,
as defined by Google and observed in system_dlkm_modprobe script.

Change-Id: I2b1644479788cb5c9568cac738202b1d55fc28d7
2024-09-07 15:45:39 +02:00
Aaron Kling f4ffe3018f kernel: Support copying modules to recovery
Change-Id: Iac275cfbea368d47f9cc8e756649ab094d9c57c5
2024-09-07 15:45:39 +02:00
Aaron Kling 1eb6d88c0b kernel: Support Qualcomm merge_dtbs script
Script from clo kernel/build at kernel.lnx.5.10.r1-rel

Change-Id: Ia90975c895644b86d9f861ddd5a18b7cf6ce1470
2024-09-07 15:45:38 +02:00
LuK1337 e1b044621a kernel: Don't try to do math on empty kernel version
Fixes the following error message when compiling target w/o kernel src:
expr: syntax error: unexpected argument ‘5’

Test: lunch lineage_sdk_phone_x86_64-eng
Change-Id: Ib3ec41d9dc2b59ddc9ee3c0c8e3813c4defcfc3e
2024-09-07 15:45:38 +02:00
Michael Bestas 166dc20c27 kernel: Restore TARGET_KERNEL_VERSION
This is used in a bunch of QCOM HALs

Change-Id: I5bb76c47ad33e9fb1b81d1d23f78b2dbf390473a
2024-09-07 15:45:38 +02:00
Bruno Martins 7645a8cf8d kernel: Go full LLVM build on 5.10+ kernels
Make the conditions accurately reflect the comment:
"5.10+ can fully compile without GCC by default".

Change-Id: Ia9070871c23a710ba5b461ad522db241183e34d1
2024-09-07 15:45:38 +02:00
dianlujitao d7f6af28a3 kernel: Check HIP support of clang before disabling it
Old clang releases don't support --hip-path, so passing this flag will
break the build.

Change-Id: If36defb0e74893581849700fb67e6aa4617908a8
2024-09-07 15:45:38 +02:00
dianlujitao 0f629c878f kernel: Force disable LLVM HIP
Gets rid of the following from clang -v:

```
Found HIP installation: /opt/rocm, version 5.4.22804
```

Change-Id: Ic58b3fb2dd67d345372bec7f5d2cf023ed2fb34d
2024-09-07 15:45:38 +02:00
Alessandro Astone 3617887ee7 kernel: Force disable LLVM CUDA
The kernel tries to define the LINUX_COMPILER macro from the output
of `$(CC) -v | grep ' version '`, but in clang that might produce
more than one line containing ' version ' when CUDA is installed:

```
Android (8490178, based on r450784d) clang version 14.0.6
Found CUDA installation: /usr/local/cuda, version 11.0
```

That causes the macro to expand into multiple lines, upsetting the
compiler that cannot find the ending double quote.

In upstream linux this is fixed from v5.8

Change-Id: Icde4253e989df1cbbefc0ce98f437d16822fc93b
2024-09-07 15:45:38 +02:00
Michael Bestas 2f387ee962 kernel: Allow devices to opt-in for full LLVM build
android11-5.4 kernel can fully compile with LLVM with a few cherrypicks
from android12-5.4 and android12-5.10

Change-Id: Ib71935d284ad78f1c23d039c15bfc5e0314a19eb
2024-09-07 15:45:38 +02:00
Michael Bestas 9278513024 kernel: Support copying modules to vendor_kernel_boot
Test: Build gs201 with source built kernel/modules, boot.
Change-Id: Ie66400ddd44cfd249e1b4710f4d1c4efa32389a4
2024-09-07 15:45:38 +02:00
Michael Bestas c81f10f431 kernel: Remove darwin support
Darwin kernel build is not supported for >=5.10
and non-standard clang versions.
Another side effect is that it causes LD_LIBRARY_PATH
to get overwritten, which breaks certain configurations.
Let's just get rid of it since AOSP darwin build is no longer supported.

Change-Id: I9ac642996b90937bd9c52138fb06bf1eff901c8b
2024-09-07 15:45:38 +02:00
Michael Bestas 1ee0622d54 kernel: Remove TARGET_KERNEL_MODULES error
This has been an error for 3 years now, plus it has not been functional
for even more years.

Change-Id: I8b12e8d08847ba119d2904f90766105367025d9c
2024-09-07 15:45:38 +02:00
Michael Bestas 35252a6767 kernel: Only add GCC to PATH when using GNU binutils
Change-Id: Ia842ed409145a81a92077dde5d6e9749a057f047
2024-09-07 15:45:38 +02:00
Michael Bestas 5a5867bf3f kernel: Override LD_LIBRARY_PATH only on <5.10
5.10 doesn't need LD_LIBRARY_PATH set

Change-Id: I5f6e732610f947d50b47e238d6a42365396b18ad
2024-09-07 15:45:38 +02:00
Michael Bestas 098b7802d5 kernel: Fix clang version override
Change-Id: I18fceeeeab5426f55a73d0cb8d72abd5f40c67ec
2024-09-07 15:45:38 +02:00
Aaron Kling 5ec047b7ac kernel: Add support for custom dtbimage generation rules
Change-Id: I79d67f9f40ef3f0970d0e29393d00600b57e337b
2024-09-07 15:45:38 +02:00
Tim Zimmermann 8229c4a7d2 kernel: Support building dtbimage with mkdtboimg.py config
Change-Id: Ic0efbf0308e334c1cfe0df0493caa71afe27a621
2024-09-07 15:45:38 +02:00
Alexander Koskovich 932a6a5228 lineage: kernel: Use getconf instead of nproc
Change-Id: Id8215f290a88ddf3a6bc1764d9ef9a09f6aa810d
2024-09-07 15:45:38 +02:00
Michael Bestas a1e8ccc1ba kernel: Changes for 5.10 build without GCC
Change-Id: Id6e09467937e60e6b00a30a246ba0a4a8d71687b
2024-09-07 15:45:38 +02:00
Michael Bestas 54e57bf5e9 kernel: Slightly reorder config
Prepare for 5.10 kernel build changes

Change-Id: I79ecf0655f9adc894091c4f26de337ebe03e3ca2
2024-09-07 15:45:38 +02:00
Michael Bestas 5763ae8b1e kernel: Use consistent spacing
Change-Id: Ia01336f14599ec8d767d88ad3b76f7bb97153848
2024-09-07 15:45:38 +02:00
LibXZR 064a2f68b5 kernel: Fix vdso32 building for 4.19+ kernels
This flag has been renamed in 4.19 kernels
https://android.googlesource.com/kernel/common/+/refs/heads/android-4.19-stable/arch/arm64/kernel/vdso32/Makefile#13

Change-Id: I92db29aa124da7c9fc63454d9443373bdc2e16e7
2024-09-07 15:45:38 +02:00
Michael Bestas 188c7199ab kernel: add pahole dependency
This is needed for 5.10+ T kernel build.

Change-Id: I0729af39cad5509ea3bc8629fdf1176156be6c08
2024-09-07 15:45:38 +02:00
Luca Stefani 8c19744707 kernel: Allow passing empty DTB to mkbootimg via board-flag
* Boot Image header v2 demands a DTB be passed by default.
* We don't /need/ one at all, as we have and use a dedicated
  DTB partition.
* Signing hates trying to find dtb.img anywhere for some magical
  reason, so cheat and introduce a flag to include a blank one.

Change-Id: I889ce3815476a55829870b30de1b9210283a79ae
(cherry picked from commit fa16b42ddd1eb341f201b8d810c717ea12afe1cb)
2024-09-07 15:45:38 +02:00
Michael Bestas a0edf779b2 kernel: Use LLVM binutils by default
* GCC has been completely removed in AOSP but we keep it
  for compatibility reasons with older kernels until they
  are adapted to remove all the dependencies to GCC.
* Most updated 4.19+ kernels should be able to use LLVM
  binutils out of the box. 4.14 is possible with a few patches
  and 4.9 with even more patches.
* Make this the default and allow devices opting out by using
  TARGET_KERNEL_LLVM_BINUTILS := false

Change-Id: I569cf290b41aaf2dc16ff9cc4cc6dc461f0d504e
2024-09-07 15:45:38 +02:00
Alexander Koskovich c3d36d8a0d kernel: Drop -fuse-ld=lld from CFLAGS
clang-14: error: argument unused during compilation:
'-fuse-ld=lld' [-Werror,-Wunused-command-line-argument]

Change-Id: Ic863e8707e4c57c7d03183b6cb6d3cd38e919bcb
2024-09-07 15:45:38 +02:00
Michael Bestas b31b260fe4 kernel: Changes for LLVM binutils
* Remove KERNEL_LD from kernel.mk, we simply set LD in BoardConfigKernel
* Add llvm-ar in path allowlist (used by LTO)

Change-Id: I76addb6f9d8d413edb1832dba23082ffb6d5ebc3
2024-09-07 15:45:38 +02:00
Arian f9be69fba7 config: Update clang version to clang-r450784d
This is the default clang version on android-13.0.0_r1

Change-Id: Iaecec88ce0a462403d0a3cf705ce794c230e6bd9
2024-09-07 15:45:38 +02:00
Michael Bestas 68f2960a70 kernel: Always build dtb targets before dtbo.img
Fixes:
error: unable to open output file
'arch/arm64/boot/dts/google/devices/bluejay/google-base/.gs101-b0.dtb.dts.tmp':
'No such file or directory'

Change-Id: I457062e46062fb3553421d196b432de7d06a49ad
2024-09-07 15:45:38 +02:00
Michael Bestas 350e6effbb kernel: Add support for vendor_boot image header version 4
vendor_boot v4 supports packaging multiple "fragmented" vendor ramdisks.
A secondary can be used to store the kernel modules instead of storing
them in the "normal" vendor_ramdisk.

Test: Create a vendor_boot with source built kernel/modules,
      gs101 still boots.
Change-Id: Ic295ccf201c2593e08b9559ae28f80c70a7eb341
2024-09-07 15:45:38 +02:00
Neel Chauhan f5a42b67f9 kernel.mk: Allow building external kernel modules
Here, we introduce the TARGET_EXTERNAL_KERNEL_MODULES variable
for the list of external modules.

Change-Id: I1f8b7a48e66bb0c9efbc396692e5a7159f0b835c
2024-09-07 15:45:38 +02:00
Michael Bestas 80bd054cf2 kernel: Allow overriding dtb target
On some devices we might want to build just the *.dtb files
that we actually need instead of the every dtb that exists.

Change-Id: Id7a152499d4ee1dd08f79d34cc34bfe959313515
2024-09-07 15:45:38 +02:00
Michael Bestas 1e0d2d457e kernel: Allow setting dtbo target path prefix
gs101 uses DTBO_OBJ/arch/arm64/boot/dts/google/dtbo.img
vs DTBO_OBJ/arch/arm/boot/dtbo.img on previous devices.

Change-Id: I945d31cb093fae97385cf84c273088ee7a4edf0b
2024-09-07 15:45:38 +02:00
Michael Bestas be10f65fc4 kernel: Allow overriding dtbo target name
gs101 kernel uses google/dtbo.img target for dtbo.img

Change-Id: Ib03f35c0035f56d303771de9399bcce3d02c0775
2024-09-07 15:45:38 +02:00
Michael Bestas 97bacc9928 config: Use LLVM binutils for 5.10 as well
Change-Id: I14afa17d710778403cd7fecf842c952c569c0c35
2024-09-07 15:45:38 +02:00
Jason Wojcik 4e7956cca3 lineage: config: Use $(abspath .) instead of $(shell pwd)
Change-Id: I7fec28b7cb507918b1b55dd368a74c927a8fc1d2
2024-09-07 15:45:38 +02:00
Chirayu Desai d00f738806 kernel: Don't print grep error messages when checking version
Avoids:
$ lunch lineage_sdk_phone_x86
grep: build/make/target/board/emulator_x86/Makefile: No such file or directory (x4)

Change-Id: Ie803d5ca93e6e7ae94625e7ee3ab0bf337e0515d
2024-09-07 15:45:38 +02:00