From 0675dcae2ba6be2221ab62213bd8d553dd1a74b5 Mon Sep 17 00:00:00 2001 From: Alexis Cellier Date: Wed, 24 Jun 2026 17:48:47 +0200 Subject: [PATCH 1/7] debian: add source option to ignore .github directory during packaging This fixes gbp buildpackage. Signed-off-by: Alexis Cellier --- debian/source/options | 1 + 1 file changed, 1 insertion(+) create mode 100644 debian/source/options diff --git a/debian/source/options b/debian/source/options new file mode 100644 index 0000000..4a1129f --- /dev/null +++ b/debian/source/options @@ -0,0 +1 @@ +extend-diff-ignore = ^\.github(/|$) From 321dda3ba598d1e838fb5e679ff7ec6020ec0c67 Mon Sep 17 00:00:00 2001 From: Alexis Cellier Date: Wed, 24 Jun 2026 17:53:59 +0200 Subject: [PATCH 2/7] debian/rules: do not install .gitignore .gitignore file has no reason to be installed. Signed-off-by: Alexis Cellier --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index 06351d6..c75ff31 100755 --- a/debian/rules +++ b/debian/rules @@ -8,7 +8,7 @@ include /usr/share/dpkg/pkg-info.mk override_dh_install: dh_install mkdir -p debian/kgsl-dkms/usr/src/kgsl-$(DEB_VERSION_UPSTREAM) - find . -path ./debian -prune -o -path ./.pc -prune -o -path ./.git -prune -o -path ./.github -prune -o -print0|cpio -0p debian/kgsl-dkms/usr/src/kgsl-$(DEB_VERSION_UPSTREAM)/ + find . -path ./debian -prune -o -path ./.pc -prune -o -path ./.git -prune -o -path ./.github -prune -o -path ./.gitignore -prune -o -print0|cpio -0p debian/kgsl-dkms/usr/src/kgsl-$(DEB_VERSION_UPSTREAM)/ # modprobe options + softdep: pass skip_gpu=1 to msm so the DRM driver # does not claim the GPU, then pull in msm_kgsl via softdep post. # Installed to /usr/lib/modprobe.d/ (not /etc/) so it is treated as a From 0abd33d80f09ccde149f306449d3096e5e21df49 Mon Sep 17 00:00:00 2001 From: Alexis Cellier Date: Thu, 25 Jun 2026 09:36:22 +0200 Subject: [PATCH 3/7] debian: remove kgsl-dkms.service The module is already loaded by the soft dependency added though modprobe.d configuration file. Signed-off-by: Alexis Cellier --- debian/kgsl-dkms.postinst | 5 ----- debian/kgsl-dkms.prerm | 6 ------ debian/kgsl-dkms.service | 11 ----------- debian/kgsl-load.sh | 8 -------- debian/rules | 6 ------ 5 files changed, 36 deletions(-) delete mode 100644 debian/kgsl-dkms.service delete mode 100755 debian/kgsl-load.sh diff --git a/debian/kgsl-dkms.postinst b/debian/kgsl-dkms.postinst index e39f101..f7f31c4 100755 --- a/debian/kgsl-dkms.postinst +++ b/debian/kgsl-dkms.postinst @@ -4,11 +4,6 @@ set -e #DEBHELPER# if [ "$1" = "configure" ]; then - # Enable the kgsl-dkms.service to auto-load msm_kgsl on boot. - if command -v systemctl > /dev/null 2>&1; then - systemctl enable kgsl-dkms.service || true - fi - # Rebuild module dependency database for the running kernel so # modprobe can locate msm_kgsl.ko by name. Must run after DKMS # has installed the .ko (handled above by dh_dkms) and before diff --git a/debian/kgsl-dkms.prerm b/debian/kgsl-dkms.prerm index e4a5920..a5e8363 100755 --- a/debian/kgsl-dkms.prerm +++ b/debian/kgsl-dkms.prerm @@ -2,12 +2,6 @@ set -e if [ "$1" = "remove" ] || [ "$1" = "purge" ]; then - # Stop and disable auto-load service. - if command -v systemctl > /dev/null 2>&1; then - systemctl stop kgsl-dkms.service || true - systemctl disable kgsl-dkms.service || true - fi - # Remove msm_kgsl from /etc/initramfs-tools/modules so it is # no longer pulled into the initramfs on future rebuilds. INITRAMFS_MODULES=/etc/initramfs-tools/modules diff --git a/debian/kgsl-dkms.service b/debian/kgsl-dkms.service deleted file mode 100644 index 4ef5771..0000000 --- a/debian/kgsl-dkms.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=Load msm_kgsl kernel module -After=local-fs.target systemd-modules-load.service - -[Service] -Type=oneshot -RemainAfterExit=yes -ExecStart=/usr/lib/kgsl-dkms/kgsl-load.sh - -[Install] -WantedBy=multi-user.target diff --git a/debian/kgsl-load.sh b/debian/kgsl-load.sh deleted file mode 100755 index 007cd3d..0000000 --- a/debian/kgsl-load.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -# Called by kgsl-dkms.service on every boot. - -# modprobe may segfault after successfully loading msm_kgsl on this platform. -# The module IS loaded even if modprobe exits non-zero, so always exit 0. -lsmod | grep -q msm_kgsl || modprobe msm_kgsl -exit 0 diff --git a/debian/rules b/debian/rules index c75ff31..b44081b 100755 --- a/debian/rules +++ b/debian/rules @@ -18,11 +18,5 @@ override_dh_install: # the options and softdep are active during early boot. mkdir -p debian/kgsl-dkms/usr/lib/modprobe.d install -m 644 debian/modprobe.d/kgsl-dkms.conf debian/kgsl-dkms/usr/lib/modprobe.d/kgsl-dkms.conf - # Auto-load kgsl via a dedicated systemd service (modules-load.d triggers - # a modprobe SEGV on this platform, so we use a service with exit 0 instead) - mkdir -p debian/kgsl-dkms/usr/lib/systemd/system - install -m 644 debian/kgsl-dkms.service debian/kgsl-dkms/usr/lib/systemd/system/kgsl-dkms.service - mkdir -p debian/kgsl-dkms/usr/lib/kgsl-dkms - install -m 755 debian/kgsl-load.sh debian/kgsl-dkms/usr/lib/kgsl-dkms/kgsl-load.sh override_dh_auto_clean override_dh_auto_build override_dh_auto_test override_dh_auto_install: From 9b35fdedbe5f7688bea1ddf8fdfe4e79dadbe95b Mon Sep 17 00:00:00 2001 From: Alexis Cellier Date: Thu, 25 Jun 2026 10:06:20 +0200 Subject: [PATCH 4/7] debian: remove intramfs-update calls dh_dkms is automatically adding a trigger to call it. Signed-off-by: Alexis Cellier --- debian/kgsl-dkms.postinst | 6 ------ debian/kgsl-dkms.postrm | 16 ---------------- 2 files changed, 22 deletions(-) delete mode 100755 debian/kgsl-dkms.postrm diff --git a/debian/kgsl-dkms.postinst b/debian/kgsl-dkms.postinst index f7f31c4..ed6cff7 100755 --- a/debian/kgsl-dkms.postinst +++ b/debian/kgsl-dkms.postinst @@ -22,10 +22,4 @@ if [ "$1" = "configure" ]; then echo 'msm_kgsl' >> "$INITRAMFS_MODULES" fi fi - - # Rebuild initramfs for all installed kernels so kgsl-dkms.conf - # (options + softdep) and msm_kgsl.ko are both included. - if command -v update-initramfs > /dev/null 2>&1; then - update-initramfs -u -k all || true - fi fi diff --git a/debian/kgsl-dkms.postrm b/debian/kgsl-dkms.postrm deleted file mode 100755 index 779d6fa..0000000 --- a/debian/kgsl-dkms.postrm +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -set -e - -#DEBHELPER# - -if [ "$1" = "remove" ] || [ "$1" = "purge" ]; then - # Rebuild initramfs for all installed kernels after DKMS has - # removed msm_kgsl.ko and dpkg has removed /usr/lib/modprobe.d/ - # kgsl-dkms.conf and /usr/lib/udev/rules.d/50-kgsl.rules. - # Running here (postrm) rather than prerm ensures the initramfs - # is rebuilt after all package files are gone, so none of them - # are included in the new initramfs image. - if command -v update-initramfs > /dev/null 2>&1; then - update-initramfs -u -k all || true - fi -fi From ce14b68442c400d382759bf35524dfb5f2163dfc Mon Sep 17 00:00:00 2001 From: Alexis Cellier Date: Thu, 25 Jun 2026 10:31:59 +0200 Subject: [PATCH 5/7] debian: use /usr/share/initramfs-tool/hooks A package should not add some configuration in /etc. Also, use a hook to only include the module. It will be loaded by the dependency specified in modprobe.d configuration. Signed-off-by: Alexis Cellier --- debian/kgsl-dkms.install | 1 + debian/kgsl-dkms.postinst | 13 ------------- debian/kgsl-dkms.prerm | 13 ------------- debian/rules | 9 --------- debian/{ => tree/usr/lib}/modprobe.d/kgsl-dkms.conf | 0 debian/tree/usr/share/initramfs-tools/hooks/kgsl | 7 +++++++ 6 files changed, 8 insertions(+), 35 deletions(-) create mode 100644 debian/kgsl-dkms.install delete mode 100755 debian/kgsl-dkms.prerm rename debian/{ => tree/usr/lib}/modprobe.d/kgsl-dkms.conf (100%) create mode 100755 debian/tree/usr/share/initramfs-tools/hooks/kgsl diff --git a/debian/kgsl-dkms.install b/debian/kgsl-dkms.install new file mode 100644 index 0000000..b8d5416 --- /dev/null +++ b/debian/kgsl-dkms.install @@ -0,0 +1 @@ +debian/tree/* / diff --git a/debian/kgsl-dkms.postinst b/debian/kgsl-dkms.postinst index ed6cff7..eca66dd 100755 --- a/debian/kgsl-dkms.postinst +++ b/debian/kgsl-dkms.postinst @@ -9,17 +9,4 @@ if [ "$1" = "configure" ]; then # has installed the .ko (handled above by dh_dkms) and before # update-initramfs so the updated modules.dep is included. depmod -a || true - - # Ensure msm_kgsl is listed in /etc/initramfs-tools/modules so - # update-initramfs includes the .ko in the initramfs image. The - # 'options msm skip_gpu=1' in kgsl-dkms.conf prevents the DRM msm - # driver from claiming the GPU; msm_kgsl.ko must be present inside - # the initramfs so the 'softdep msm post: msm_kgsl' directive can - # load it immediately after msm during early boot. - INITRAMFS_MODULES=/etc/initramfs-tools/modules - if [ -f "$INITRAMFS_MODULES" ]; then - if ! grep -qx 'msm_kgsl' "$INITRAMFS_MODULES"; then - echo 'msm_kgsl' >> "$INITRAMFS_MODULES" - fi - fi fi diff --git a/debian/kgsl-dkms.prerm b/debian/kgsl-dkms.prerm deleted file mode 100755 index a5e8363..0000000 --- a/debian/kgsl-dkms.prerm +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -set -e - -if [ "$1" = "remove" ] || [ "$1" = "purge" ]; then - # Remove msm_kgsl from /etc/initramfs-tools/modules so it is - # no longer pulled into the initramfs on future rebuilds. - INITRAMFS_MODULES=/etc/initramfs-tools/modules - if [ -f "$INITRAMFS_MODULES" ]; then - sed -i '/^msm_kgsl$/d' "$INITRAMFS_MODULES" - fi -fi - -#DEBHELPER# diff --git a/debian/rules b/debian/rules index b44081b..2270fe6 100755 --- a/debian/rules +++ b/debian/rules @@ -9,14 +9,5 @@ override_dh_install: dh_install mkdir -p debian/kgsl-dkms/usr/src/kgsl-$(DEB_VERSION_UPSTREAM) find . -path ./debian -prune -o -path ./.pc -prune -o -path ./.git -prune -o -path ./.github -prune -o -path ./.gitignore -prune -o -print0|cpio -0p debian/kgsl-dkms/usr/src/kgsl-$(DEB_VERSION_UPSTREAM)/ - # modprobe options + softdep: pass skip_gpu=1 to msm so the DRM driver - # does not claim the GPU, then pull in msm_kgsl via softdep post. - # Installed to /usr/lib/modprobe.d/ (not /etc/) so it is treated as a - # regular package file and removed automatically on 'dpkg --remove', - # enabling clean msm/kgsl switching without requiring --purge. - # initramfs-tools includes /usr/lib/modprobe.d/ in the initramfs, so - # the options and softdep are active during early boot. - mkdir -p debian/kgsl-dkms/usr/lib/modprobe.d - install -m 644 debian/modprobe.d/kgsl-dkms.conf debian/kgsl-dkms/usr/lib/modprobe.d/kgsl-dkms.conf override_dh_auto_clean override_dh_auto_build override_dh_auto_test override_dh_auto_install: diff --git a/debian/modprobe.d/kgsl-dkms.conf b/debian/tree/usr/lib/modprobe.d/kgsl-dkms.conf similarity index 100% rename from debian/modprobe.d/kgsl-dkms.conf rename to debian/tree/usr/lib/modprobe.d/kgsl-dkms.conf diff --git a/debian/tree/usr/share/initramfs-tools/hooks/kgsl b/debian/tree/usr/share/initramfs-tools/hooks/kgsl new file mode 100755 index 0000000..9c7fb4a --- /dev/null +++ b/debian/tree/usr/share/initramfs-tools/hooks/kgsl @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +. /usr/share/initramfs-tools/hook-functions + +manual_add_modules msm_kgsl From b4954c31ee626b58d8dc8b127ab02f9d55289b2a Mon Sep 17 00:00:00 2001 From: Alexis Cellier Date: Thu, 25 Jun 2026 11:38:20 +0200 Subject: [PATCH 6/7] debian: remove useless depmod on postinst This is handle by dkms. Signed-off-by: Alexis Cellier --- debian/kgsl-dkms.postinst | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100755 debian/kgsl-dkms.postinst diff --git a/debian/kgsl-dkms.postinst b/debian/kgsl-dkms.postinst deleted file mode 100755 index eca66dd..0000000 --- a/debian/kgsl-dkms.postinst +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -set -e - -#DEBHELPER# - -if [ "$1" = "configure" ]; then - # Rebuild module dependency database for the running kernel so - # modprobe can locate msm_kgsl.ko by name. Must run after DKMS - # has installed the .ko (handled above by dh_dkms) and before - # update-initramfs so the updated modules.dep is included. - depmod -a || true -fi From 76e9a399843928c1189268307302b0c4aec7f68a Mon Sep 17 00:00:00 2001 From: Alexis Cellier Date: Thu, 25 Jun 2026 11:40:12 +0200 Subject: [PATCH 7/7] debian/control: remove useless Recommends We need some linux-headers, but not the generic one. The correct headers should already be installed (linux meta packages are here for that). Also, there is no need for grub. This avoid installing useless packages. Signed-off-by: Alexis Cellier --- debian/control | 1 - 1 file changed, 1 deletion(-) diff --git a/debian/control b/debian/control index 56f81db..a9fee23 100644 --- a/debian/control +++ b/debian/control @@ -10,7 +10,6 @@ Homepage: https://github.com/qualcomm-linux/kgsl Package: kgsl-dkms Architecture: arm64 Depends: dkms (>= 2.2), init-system-helpers (>= 1.54~), ${misc:Depends} -Recommends: linux-headers-generic, grub-efi-arm64 Description: Qualcomm KGSL GPU kernel module (DKMS) Kernel Graphics Support Layer (KGSL) driver for the Adreno family of Qualcomm GPUs. Provides GPU memory management, command submission,