diff --git a/Makefile b/Makefile index 7a7d48bf2..4b1dbaa1d 100644 --- a/Makefile +++ b/Makefile @@ -163,6 +163,9 @@ print_gopath: prepare GOPATH="${CURDIR}/${GOPATH_DIR}:${GOPATH}" install: build install-dde-data install-icons + mkdir -pv ${DESTDIR}${PREFIX}/libexec + install -Dm755 misc/thp/dde-thp-disable ${DESTDIR}${PREFIX}/libexec/dde-thp-disable + mkdir -pv ${DESTDIR}${PREFIX}/lib/deepin-daemon cp -f out/bin/* ${DESTDIR}${PREFIX}/lib/deepin-daemon/ diff --git a/debian/dde-daemon.install b/debian/dde-daemon.install index 1ca628e64..e75b3947d 100644 --- a/debian/dde-daemon.install +++ b/debian/dde-daemon.install @@ -1 +1,2 @@ debian/reconfigure-dde-daemon /etc/kernel/postinst.d/ +misc/thp/dde-thp-disable usr/libexec/ diff --git a/misc/systemd/services/system/dde-lock-service.service b/misc/systemd/services/system/dde-lock-service.service index fb29e5f98..2072123ee 100644 --- a/misc/systemd/services/system/dde-lock-service.service +++ b/misc/systemd/services/system/dde-lock-service.service @@ -7,6 +7,7 @@ Type=dbus User=lightdm Group=lightdm BusName=org.deepin.dde.LockService1 +ExecStartPre=-/usr/libexec/dde-thp-disable ExecStart=/usr/lib/deepin-daemon/dde-lockservice # 通过设置/var/lib/lightdm/目录的lightdm组权限,lockservice可以安全地以lightdm用户运行 StandardOutput=journal diff --git a/misc/systemd/services/system/dde-system-daemon.service b/misc/systemd/services/system/dde-system-daemon.service index 8f006c303..5bc36f7d3 100644 --- a/misc/systemd/services/system/dde-system-daemon.service +++ b/misc/systemd/services/system/dde-system-daemon.service @@ -9,6 +9,7 @@ Wants=nss-user-lookup.target fprintd.service [Service] User=root +ExecStartPre=-/usr/libexec/dde-thp-disable ExecStart=/usr/lib/deepin-daemon/dde-system-daemon StandardOutput=null StandardError=journal diff --git a/misc/systemd/services/user/org.dde.session.Daemon1.service b/misc/systemd/services/user/org.dde.session.Daemon1.service index 31c0b7f74..175e46c29 100644 --- a/misc/systemd/services/user/org.dde.session.Daemon1.service +++ b/misc/systemd/services/user/org.dde.session.Daemon1.service @@ -13,6 +13,7 @@ After=treeland-xwayland.service [Service] Type=dbus BusName=org.deepin.dde.Daemon1 +ExecStartPre=-/usr/libexec/dde-thp-disable ExecStart=/usr/lib/deepin-daemon/dde-session-daemon Slice=app.slice Restart=on-failure diff --git a/misc/thp/dde-thp-disable b/misc/thp/dde-thp-disable new file mode 100755 index 000000000..30e22b533 --- /dev/null +++ b/misc/thp/dde-thp-disable @@ -0,0 +1,19 @@ +#!/bin/bash + +# SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. +# +# SPDX-License-Identifier: GPL-3.0-or-later + +CG=$(awk -F: '$1=="0"{print $3}' /proc/self/cgroup | head -n1) + +[ -n "${CG:-}" ] || exit 0 + +FILE="/sys/fs/cgroup${CG}/memory.thp_mode" + +if [ -e "$FILE" ]; then + if ! echo disable > "$FILE" 2>/dev/null; then + logger -t thp-disable "failed to write disable to $FILE" + fi +fi + +exit 0