From f6e4640ceb74258b5a44f6a845d991a98161fe92 Mon Sep 17 00:00:00 2001 From: Zeckmathederg Date: Tue, 24 Jun 2025 13:34:45 -0600 Subject: [PATCH] NVIDIA: Add SysV powerd framework. --- Makefile | 29 +------- .../NVIDIA/NVIDIA-sysv-bootscripts-1.tar.xz | Bin 0 -> 1584 bytes .../NVIDIA/NVIDIA-sysv-bootscripts/Makefile | 42 +++++++++++ .../NVIDIA-sysv-bootscripts/nvidia-powerd | 66 ++++++++++++++++++ .../NVIDIA-sysv-bootscripts/nvidia-sleep | 48 +++++++++++++ .../NVIDIA/NVIDIA-sysv-bootscripts/version | 1 + download/NVIDIA/tar-bs.sh | 6 ++ packages.ent | 1 + shareddeps/drivers/nvidia.xml | 34 ++++++++- 9 files changed, 198 insertions(+), 29 deletions(-) create mode 100644 download/NVIDIA/NVIDIA-sysv-bootscripts-1.tar.xz create mode 100644 download/NVIDIA/NVIDIA-sysv-bootscripts/Makefile create mode 100644 download/NVIDIA/NVIDIA-sysv-bootscripts/nvidia-powerd create mode 100755 download/NVIDIA/NVIDIA-sysv-bootscripts/nvidia-sleep create mode 100644 download/NVIDIA/NVIDIA-sysv-bootscripts/version create mode 100644 download/NVIDIA/tar-bs.sh diff --git a/Makefile b/Makefile index 9f27d69c3d..4370cf2ee2 100644 --- a/Makefile +++ b/Makefile @@ -245,33 +245,6 @@ $(BASEDIR)/test-links: $(RENDERTMP)/$(GLFSFULL) version $(Q)$(CLEAN) -bootscripts: - $(Q)trap '$(CLEAN)' EXIT - @VERSION=`grep "bootscripts-version " general.ent | cut -d\" -f2`; \ - BOOTSCRIPTS="glfs-bootscripts-$$VERSION"; \ - if [ ! -e $$BOOTSCRIPTS.tar.xz ]; then \ - rm -rf $(RENDERTMP)/$$BOOTSCRIPTS; \ - mkdir $(RENDERTMP)/$$BOOTSCRIPTS; \ - cp -a ../bootscripts/* $(RENDERTMP)/$$BOOTSCRIPTS; \ - rm -rf ../bootscripts/archive; \ - tar -cJhf $$BOOTSCRIPTS.tar.xz -C $(RENDERTMP) $$BOOTSCRIPTS; \ - fi - - $(Q)$(CLEAN) - -systemd-units: - $(Q)trap '$(CLEAN)' EXIT - @VERSION=`grep "systemd-units-version " general.ent | cut -d\" -f2`; \ - UNITS="glfs-systemd-units-$$VERSION"; \ - if [ ! -e $$UNITS.tar.xz ]; then \ - rm -rf $(RENDERTMP)/$$UNITS; \ - mkdir $(RENDERTMP)/$$UNITS; \ - cp -a ../systemd-units/* $(RENDERTMP)/$$UNITS; \ - tar -cJhf $$UNITS.tar.xz -C $(RENDERTMP) $$UNITS; \ - fi - - $(Q)$(CLEAN) - test-options: $(Q)trap '$(CLEAN)' EXIT $(Q)xsltproc --xinclude --nonet stylesheets/test-options.xsl index.xml @@ -287,7 +260,7 @@ $(DUMPDIR): $(RENDERTMP)/$(GLFSFULL) version $(Q)$(CLEAN) .PHONY: glfs all world html validate profile-html wget-list test-links \ - dump-commands bootscripts systemd-units version test-options + dump-commands version test-options version: $(Q)REV=$(REV) STAB=$(STAB) ./git-version.sh diff --git a/download/NVIDIA/NVIDIA-sysv-bootscripts-1.tar.xz b/download/NVIDIA/NVIDIA-sysv-bootscripts-1.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..9b313ee040d7f6ba0abae6508d9ce3c2505a24cf GIT binary patch literal 1584 zcmV-02G9BZH+ooF000E$*0e?h!0roxP$2;p000000000v@I#8=C;tWJT>vK)g*1eo z);IW|!O;fGJMV509Bq;=ZEaJ$5Yl$Fxut!67;&$G#qYLDYjb-i=%XT!4qjaC8Rb(! zcvo@DpgP6*+Vc~f*Z}OGAtx_zZ#5JX>&=GyoV^%d@K@rg-Rq0!^+a4M|!3&ZuKIt%cux_zu6ooxA|D7)(;}+Ma-aK(W7rA%R%#6Jg$*WW`m@ ztPOlq5$83^Z87;xQt26y1h$kpsqy`3zSx+i#_lS`GWUK*Iyc18TDx){rWaqEVy(*i z)BKt|ZXW4yi6#{hX^}KG*fK?*Zfv8w~!NS$<#Vu@DOK^_4n7EkKwZO+)sgfIWXe`8;6Y#Y~9ZjJ@kFI*4Q! zc9@T^H0*ZQPFPqvG3-Na^VB`D8!+?7*C$YM&mc={`&H=?^$J6FCw}HOei^lN@_ICK(Q-{m5-1L3bm?s_mSsXReV$caiLmPQ- ztUnO*$(4MJDL6yB9Shi1ldW=}3SZ9Eh6d(%$X*K_L4XciZR=t?!a82hWs~R58tD|q zF+7am&Pfe5N)5Q6_=osUZ}8WSH5GW(u!EO)(69h^1Ba5i8{1$i#A_+<2)1e$VQVqj zt~QOjd!^pDh#+g2b7UFI(LG_Q!cbx8JL(1ZOn{69dt^XM%^YvkW9%f;+#gbYo|=us zuiUh6sZJn1_iVyJA0k9z2CrECU8blpr)WFj3`7RhT-)R`VI7kFeZ}i`!!IZadndDy z^s)7fsKfQKmAa04?*UX%8-`3(OB!0u7OVY}r*qIA_J>$5BCG?7Tgy0}UHTOB+QfOR zsgnu$8AXKH1kd*Q3R(3$5w9hEQ58H1F->r(o3q~ zN(7cIh#DbY@xccgI5=fQ!t}i{TyDj*bU-DKHQu@I#D#M;5u81n z@*KNzCFgKAEy*6v`~6cNqId(*+K4F3K)n{&UfnL_F!{Y74p&-M5;u(QMNNbkO};hV zU7z#0me#&~>V7Nyr&$@e#NCrt#oXdS-xOt^EZf-Pn83CC2ZO0L+!=MxN}J5<;==Gl z#w);;E^)T+bMg^GK)XLP!i$ueu92O-q;^h2zjnsvB%{;_i_Uu(p}!hCm#36Ab^VPD zd3(Q2OZmcYHiTjTF#Q3t@Y69F_MbkYUwlZbU>=>gD1p=WcDF6G2{#M>-jf zco`dx1~<^D6O6Aw&{Bgr_CRX0N{*k!=8QY7G3{sa=Z>qTs9WTo4S>C?G-L#?XqbCsxz-W}Fj$AgFcL z<)f4=%cp(%~F@quX9%3yD^_MesnhcnSA8{D{%z?0002& iq7d$$Gq&LX0g4QOPyhhwmTNe%#Ao{g000001X)_}5Cr)E literal 0 HcmV?d00001 diff --git a/download/NVIDIA/NVIDIA-sysv-bootscripts/Makefile b/download/NVIDIA/NVIDIA-sysv-bootscripts/Makefile new file mode 100644 index 0000000000..e60e9b6cf1 --- /dev/null +++ b/download/NVIDIA/NVIDIA-sysv-bootscripts/Makefile @@ -0,0 +1,42 @@ +SHELL=/bin/bash + +ETCDIR=/etc +LIBDIR=${DESTDIR}/lib/services +EXTDIR=${DESTDIR}${ETCDIR} +MODE=754 +DIRMODE=755 +CONFMODE=644 + +all: + @grep "^install" Makefile | cut -d ":" -f 1 + @echo "Select an appropriate install target from the above list" + +create-dirs: + install -d -m ${DIRMODE} ${EXTDIR}/rc.d/rc{0,1,2,3,4,5,6,S}.d + install -d -m ${DIRMODE} ${EXTDIR}/rc.d/init.d + install -d -m ${DIRMODE} ${EXTDIR}/sysconfig + +create-service-dir: + install -d -m ${DIRMODE} ${LIBDIR} + +install-nvidia-powerd: + install -m755 nvidia-sleep /usr/bin + install -m ${MODE} nvidia-powerd ${EXTDIR}/rc.d/init.d/ + ln -sf ../init.d/nvidia-powerd ${EXTDIR}/rc.d/rc0.d/K22nvidia-powerd + ln -sf ../init.d/nvidia-powerd ${EXTDIR}/rc.d/rc1.d/K22nvidia-powerd + ln -sf ../init.d/nvidia-powerd ${EXTDIR}/rc.d/rc2.d/S36nvidia-powerd + ln -sf ../init.d/nvidia-powerd ${EXTDIR}/rc.d/rc3.d/S36nvidia-powerd + ln -sf ../init.d/nvidia-powerd ${EXTDIR}/rc.d/rc4.d/S36nvidia-powerd + ln -sf ../init.d/nvidia-powerd ${EXTDIR}/rc.d/rc5.d/S36nvidia-powerd + ln -sf ../init.d/nvidia-powerd ${EXTDIR}/rc.d/rc6.d/K22nvidia-powerd + +uninstall-nvidia-powerd: + rm -f /usr/bin/nvidia-sleep + rm -f ${EXTDIR}/rc.d/init.d/nvidia-powerd + rm -f ${EXTDIR}/rc.d/rc0.d/K22nvidia-powerd + rm -f ${EXTDIR}/rc.d/rc1.d/K22nvidia-powerd + rm -f ${EXTDIR}/rc.d/rc2.d/S36nvidia-powerd + rm -f ${EXTDIR}/rc.d/rc3.d/S36nvidia-powerd + rm -f ${EXTDIR}/rc.d/rc4.d/S36nvidia-powerd + rm -f ${EXTDIR}/rc.d/rc5.d/S36nvidia-powerd + rm -f ${EXTDIR}/rc.d/rc6.d/K22nvidia-powerd diff --git a/download/NVIDIA/NVIDIA-sysv-bootscripts/nvidia-powerd b/download/NVIDIA/NVIDIA-sysv-bootscripts/nvidia-powerd new file mode 100644 index 0000000000..a698c4f612 --- /dev/null +++ b/download/NVIDIA/NVIDIA-sysv-bootscripts/nvidia-powerd @@ -0,0 +1,66 @@ +#!/bin/sh +######################################################################## +# Begin nvidia-powerd +# +# Description : nvidia-powerd Boot Script +# +# Authors : Zeckma - zeckma.tech@gmail.com +# +# Version : GLFS #779fd +# +######################################################################## + +### BEGIN INIT INFO +# Provides: nvidia-powerd +# Required-Start: $local_fs dbus +# Should-Start: $syslog +# Required-Stop: $local_fs +# Should-Stop: $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: NVIDIA power management +# Description: NVIDIA power management +# X-LFS-Provided-By: GLFS +### END INIT INFO + +. /lib/lsb/init-functions + +case "${1}" in + start) + log_info_msg "Starting the NVIDIA-Powerd Daemon" + start_daemon /usr/bin/nvidia-powerd + evaluate_retval + +# log_info_msg "Enabling NVIDIA sleep" +# start_daemon /usr/bin/nvidia-sleep "sleep" +# evaluate_retval + log_info_msg "Enabling NVIDIA suspend" + start_daemon /usr/bin/nvidia-sleep "suspend" + evaluate_retval + log_info_msg "Enabling NVIDIA hibernate" + start_daemon /usr/bin/nvidia-sleep "hibernate" + evaluate_retval + log_info_msg "Enabling NVIDIA resume" + start_daemon /usr/bin/nvidia-sleep "resume" + evaluate_retval + ;; + + stop) + log_info_msg "Stopping the NVIDIA-Powerd Daemon" + if pidofproc nvidia-powerd >/dev/null; then + /usr/bin/killall nvidia-powerd + fi + evaluate_retval + ;; + + status) + statusproc nvidia-powerd + ;; + + *) + echo "Usage: ${0} {start|stop|status}" + exit 1 + ;; +esac + +# End /etc/init.d/nvidia-powerd diff --git a/download/NVIDIA/NVIDIA-sysv-bootscripts/nvidia-sleep b/download/NVIDIA/NVIDIA-sysv-bootscripts/nvidia-sleep new file mode 100755 index 0000000000..d83ae3ad95 --- /dev/null +++ b/download/NVIDIA/NVIDIA-sysv-bootscripts/nvidia-sleep @@ -0,0 +1,48 @@ +#!/bin/bash + +if [ ! -f /proc/driver/nvidia/suspend ]; then + exit 0 +fi + +RUN_DIR="/var/run/nvidia-sleep" +XORG_VT_FILE="${RUN_DIR}"/Xorg.vt_number + +PATH="/usr/bin" + +RestoreVT() { + # Check if Xorg was determined to be running at the time + # of suspend, and whether its VT was recorded. If so, + # attempt to switch back to this VT. + if [[ -f "${XORG_VT_FILE}" ]]; then + XORG_PID=$(cat "${XORG_VT_FILE}") + rm "${XORG_VT_FILE}" + chvt "${XORG_PID}" + fi +} + +case "$1" in + suspend|hibernate) + mkdir -p "${RUN_DIR}" + fgconsole > "${XORG_VT_FILE}" + chvt 63 + if [[ $? -ne 0 ]]; then + exit $? + fi + echo "$1" > /proc/driver/nvidia/suspend + RET_VAL=$? + # + # If suspend/hibernate entry fails, switch back to the active VT + # + if [[ $RET_VAL -ne 0 ]]; then + RestoreVT + fi + exit $RET_VAL + ;; + resume) + echo "$1" > /proc/driver/nvidia/suspend + RestoreVT + exit 0 + ;; + *) + exit 1 +esac diff --git a/download/NVIDIA/NVIDIA-sysv-bootscripts/version b/download/NVIDIA/NVIDIA-sysv-bootscripts/version new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/download/NVIDIA/NVIDIA-sysv-bootscripts/version @@ -0,0 +1 @@ +1 diff --git a/download/NVIDIA/tar-bs.sh b/download/NVIDIA/tar-bs.sh new file mode 100644 index 0000000000..2e89e9d48c --- /dev/null +++ b/download/NVIDIA/tar-bs.sh @@ -0,0 +1,6 @@ +#!/bin/sh +bs_version=$(cat NVIDIA-sysv-bootscripts/version) +cp -vR NVIDIA-sysv-bootscripts{,-$bs_version} +tar -cJvf ./NVIDIA-sysv-bootscripts-$bs_version.tar.xz \ + NVIDIA-sysv-bootscripts-$bs_version +rm -rf NVIDIA-sysv-bootscripts-$bs_version diff --git a/packages.ent b/packages.ent index ea0e009041..b954a42319 100644 --- a/packages.ent +++ b/packages.ent @@ -155,6 +155,7 @@ listed was released --> + diff --git a/shareddeps/drivers/nvidia.xml b/shareddeps/drivers/nvidia.xml index 7cb9c24e1c..c63d44bab0 100644 --- a/shareddeps/drivers/nvidia.xml +++ b/shareddeps/drivers/nvidia.xml @@ -61,6 +61,12 @@ + + + Recommended SysVinit bootscripts for NVIDIA-Powerd: + + + NVIDIA Dependencies @@ -83,6 +89,12 @@ page) + + + and (for + NVIDIA-Powerd suppport) + + GTK-3 (for @@ -351,6 +363,27 @@ install -vm644 ../manifest-NVIDIA-&nv-manifest-version; \ + + Installation of NVIDIA-Powerd @@ -398,7 +431,6 @@ done done - Configuring NVIDIA