Skip to content

Qualcomm Linux Kernel

Shiraz Hashim edited this page May 19, 2025 · 5 revisions

Qualcomm Linux Kernel

Qualcomm kernel repository hosts Qualcomm Linux kernel branches that support Qualcomm targets.

Kernel Branches

  • qcom-next, is the mainline branch that follows each -rc release of upstream kernel
  • qcom-next-staging, that helps prepare qcom-next

Related Repositories

Repository Details
https://github.com/qualcomm-linux/kernel-topics QLI Mainline kernel topic branches repository based on upstream kernel
https://github.com/qualcomm-linux/kernel-config QLI Mainline kernel topic branch config repository that enumerates all topic branches to be used for qcom-next
https://github.com/qualcomm-linux/kmake-image Open Docker image for building kernel
https://github.com/qualcomm-linux/kernel-checkers Kernel checker project to run premerge (public) checks on kernel changes
https://github.com/qualcomm-linux/automerge automerge tool to merge & prepare qcom-next from kernel topic branches

qcom-next workflow

kernel changes are actually developed on topic branches that belong to kernel-topics repository. These topic branches are pulled into qcom-next to setup Qualcomm Linux kernel mainline.

At each upstream kernel release

  • qcom-next-staging resets to latest upstream released -rc
  • Each topic branch is pulled onto the new -rc base and a PR is raised to qcom-next-staging
  • Once qcom-next-staging tests are clear, it is pushed to qcom-next

All development and corresponding PRs are raised on corresponding topic branches of kernel-topics repository.

Sync & Build

You would need setup docker that can help build and package kernel images to flash on to the target. The following example captures how to fetch and build efi and dtb bins of the upstream Linux Kernel for QCS6490 Rb3Gen2.

Setup Environment & Fetch Dependencies

Setup Docker
git clone [email protected]:qualcomm-linux/kmake-image.git
cd kmake-image
docker build -t kmake-image .
Setup Aliases
alias kmake-image-run='docker run -it --rm --user $(id -u):$(id -g) --workdir="$PWD" -v "$(dirname $PWD)":"$(dirname $PWD)" kmake-image'
alias kmake='kmake-image-run make'
Get Kernel Source
cd ..
git clone [email protected]:qualcomm-linux/kernel.git
git checkout origin/qcom-next
Get Ramdisk
mkdir artifacts
wget -O artifacts/ramdisk.gz https://snapshots.linaro.org/member-builds/qcomlt/testimages/arm64/1379/initramfs-test-image-qemuarm64-20230321073831-1379.rootfs.cpio.gz
Get systemd-boot binaries
wget -O artifacts/systemd-boot-efi.deb http://ports.ubuntu.com/pool/universe/s/systemd/systemd-boot-efi_255.4-1ubuntu8_arm64.deb
dpkg-deb -xv artifacts/systemd-boot-efi.deb artifacts/systemd

Build Kernel

cd linux
kmake O=../kobj defconfig
kmake O=../kobj -j$(nproc)
kmake O=../kobj -j$(nproc) dir-pkg INSTALL_MOD_STRIP=1

Package DLKMs into ramdisk

(cd ../kobj/tar-install ; find lib/modules | cpio -o -H newc -R +0:+0 | gzip -9 >> ../../artifacts/ramdisk.gz)

Generate efi.bin for boot/ESP partition

cd ..
kmake-image-run generate_boot_bins.sh efi --ramdisk artifacts/ramdisk.gz \
		--systemd-boot artifacts/systemd/usr/lib/systemd/boot/efi/systemd-bootaa64.efi \
		--stub artifacts/systemd/usr/lib/systemd/boot/efi/linuxaa64.efi.stub \
		--linux kobj/arch/arm64/boot/Image \
		--cmdline "${CMDLINE}" \
		--output images

Generate dtb.bin

kmake-image-run generate_boot_bins.sh dtb --input kobj/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dtb \
		--output images

The resulting efi.bin and dtb.bin are gathered in images directory and is ready to be booted on a QCS6490 RB3Gen2.

Flash the binaries & Boot

fastboot flash efi images/efi.bin
fastboot flash dtb_a images/dtb.bin
fastboot reboot

Topic Branches

TBD

Contributing to Topic Branches

TBD

Clone this wiki locally