For targets that uses mainline kernel, the kernel tree usually only
contains configs on top of the upstream repository.
In such case, if we put the configs in elsewhere, we can simply just
track the upstream kernel repo, without needing to import configs.
Example usage:
TARGET_KERNEL_CONFIG_EXT := \
$(COMMON_PATH)/kconfig/platform_defconfig \
$(COMMON_PATH)/kconfig/common-addons.config
TARGET_KERNEL_CONFIG_EXT += \
$(DEVICE_PATH)/kconfig/device.config
Change-Id: I021ffb76d0c0612343cff7b5c81541c2b88ef7e6
* Many Qualcomm targets that uses boot header v0 or v1
have the DTBs appended to the end of kernel image.
* In downstream msm kernels up to msm-4.19, Appending DTBs
is handled in the kernel tree. However, on msm-5.4 and
newer msm kernels, and on mainline kernel, This is not
supported.
* Normally, DTB processing depends on how the bootloader
loads it and should not be handled in the kernel tree,
so we handle it here.
* Instead of appending all DTBs by default, Get the list of
DTBs that needs to be included from a variable, so that
we don't need to modify dts Makefile to exclude unwanted
DTBs, and we could also ensure the DTBs are appended in
a specific order.
Change-Id: I603d1ebac5ee808bad045b85f9868d572d52cb80
Originally, BOARD_RECOVERY_RAMDISK_KERNEL_MODULES_LOAD was used, but
BOARD_RECOVERY_KERNEL_MODULES_LOAD is what build/make uses. Use the
proper variable by default and if it's not set, use the old variable.
Change-Id: I3522e4782ae56f67e49b234236fbb86c8ec65b92
Only signed GKI modules are permitted to export symbols listed in the
android/abi_gki_protected_exports file. Attempting to export these
symbols from an unsigned module will result in the module failing to
load, with a 'Permission denied' error message.
Change-Id: Ie15b00a6c288eda21b319eb0f735cf4f9e6e7933
modprobe won't lookup system_dlkm modules.dep when GKI modules are
required by vendor modules, so they'll fail to load.
Fixes: 259906daef ("kernel: consider gki modules when running depmod for vendor modules")
Change-Id: Ia5a77df91d84c78f76a03910178cc86db48724c8
Use the logging module to log important information to various log
levels: info, debug, warning and error.
- Modify __str__ representations of classes DeviceTree and
InnerMergedDeviceTree for readability in debug logs
- Make parse_dt_files() return instead of yield so as to order all the
filename parsing at one go after the preceding log messages
Use the argparse module to specify script arguments cleanly. Also make
the corresponding change to merge_dtbs.sh to invoke this script with the
correct flags.
Change-Id: Id09d9d7b34cde60eff99876f0c0c4f6643852aee
Signed-off-by: Guru Das Srinagesh <quic_gurus@quicinc.com>
Revert "kernel: Check HIP support of clang before disabling it"
This reverts commit 62c1374385.
Revert "kernel: Force disable LLVM HIP"
This reverts commit ef68678120.
Revert "kernel: Force disable LLVM CUDA"
This reverts commit ba14020f85.
Change-Id: I5cb2b4624eb0ec25dbc8c1b5888708d961ae59d7
This target just builds the `.config` in
`KERNEL_OBJ`/`RECOVERY_KERNEL_OBJ` to quickly check if fragments are
applied properly, not to be used during an actual kernel build
Change-Id: Ic92fe7bd544f6d0f1b3169c1405aceb6702775e0
Change I8b6040e03589bde2af4e161c891ded237a9bb335 did not account for
devices without a separate vendor partition, causing build to fail with
the following:
FAILED: ninja: '/file_list.txt', needed by 'out/target/product/joan/obj/KERNEL_OBJ/arch/arm64/boot/Image.gz-dtb', missing and no known rule to make it
Use systemimage_intermediates instead on said devices.
Test: m kernel
Co-authored-by: Bruno Martins <bgcngm@gmail.com>
Change-Id: If9eb75a1bef98345e9c137c2463e392d50be239b
- Mention the right kernel image on documentation
- Build dtbs only when the dts folder exists, Google enables CONFIG_OF
on x86_64 GKI config, this is also the same check done on Linux
Makefile
Change-Id: I1b0f7a39b0b00f2a4516d2cff79e591136ee3af8
This is required to ensure that kernel modules end up on the final
partition images when `BUILD_BROKEN_INCORRECT_PARTITION_IMAGES`
environment variable or board config variable is not set.
See 152cdfab7c
for more information.
Co-authored-by: Bruno Martins <bgcngm@gmail.com>
Change-Id: I8b6040e03589bde2af4e161c891ded237a9bb335
Some OEMs (for example: oplus) push their dtbs to their own folders which causes kernel build to error out, fix this by including non qcom dtbs as well.
Change-Id: I2f51db103475cd2609cd061e0ec66af5accb96ab
This can happen when an out of tree module target uses a matching module
name from the base kernel. This causes two problems:
1) Depmod gets confused and only pulls symbols from one of the modules
2) Copying the modules to modules_out is not entirely deterministic and
is based on the first variant to be returned by find, meaning that
the variant that gets copied to the device could change build to
build.
To avoid these issues, fail the build if this happens and force the
build target to only generate one copy of each module name.
Change-Id: I2e47ba4e142054feabaa1ab80fbbe0332fd84a62
Original commit incorrectly added kernel as a dep to the vendor ramdisk
for this path, when instead the dep should be added to the boot ramdisk.
Change-Id: I25a42d403fe2ddb0538b08c2dd8f761eae960810
TARGET_EXTERNAL_KERNEL_MODULES variable is used for the list of modules,
same as the existing functionality, but is invoked if ':kbuild' is
appended to a module name
Existing external module build calls make in the module directory, which
is a standalone module build. The module makefile may chain to kbuild,
but that depends on the module. This addition invokes the kernel build
system, passing the module directory via the M= param, which is the
kernel standard for building out of tree modules.
Change-Id: I38a582952f79f7155cdbf8a5975cf23074bbdab0
Android supports loading modules from the boot ramdisk in the case of
vendor ramdisk not existing.
Change-Id: Ide1255b2c37ee262c8a4181d5eb0e380d0488edc
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
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
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
* This was missed in bdfc913935
* Aligns the variable name for vendor_kernel_boot modules with AOSP
Change-Id: I8d59f7b5d62e29a0484ca36fadcb74acab4f1859
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
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
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
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
Gets rid of the following from clang -v:
```
Found HIP installation: /opt/rocm, version 5.4.22804
```
Change-Id: Ic58b3fb2dd67d345372bec7f5d2cf023ed2fb34d
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
android11-5.4 kernel can fully compile with LLVM with a few cherrypicks
from android12-5.4 and android12-5.10
Change-Id: Ib71935d284ad78f1c23d039c15bfc5e0314a19eb