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, 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 deleted file mode 100755 index e39f101..0000000 --- a/debian/kgsl-dkms.postinst +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash -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 - # 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 - - # 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 diff --git a/debian/kgsl-dkms.prerm b/debian/kgsl-dkms.prerm deleted file mode 100755 index e4a5920..0000000 --- a/debian/kgsl-dkms.prerm +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -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 - if [ -f "$INITRAMFS_MODULES" ]; then - sed -i '/^msm_kgsl$/d' "$INITRAMFS_MODULES" - fi -fi - -#DEBHELPER# 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 06351d6..2270fe6 100755 --- a/debian/rules +++ b/debian/rules @@ -8,21 +8,6 @@ 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)/ - # 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 - # 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 + 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)/ override_dh_auto_clean override_dh_auto_build override_dh_auto_test override_dh_auto_install: 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(/|$) 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