From da265060d3a1f33bb521b1a6e90d1d243498beb6 Mon Sep 17 00:00:00 2001 From: hasufell Date: Sun, 9 Aug 2015 20:09:23 +0200 Subject: [PATCH] saving uncommitted changes in /etc prior to emerge run --- init.d/._cfg0000_pciparm | 80 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100755 init.d/._cfg0000_pciparm diff --git a/init.d/._cfg0000_pciparm b/init.d/._cfg0000_pciparm new file mode 100755 index 0000000..d7973bf --- /dev/null +++ b/init.d/._cfg0000_pciparm @@ -0,0 +1,80 @@ +#!/sbin/runscript +# Copyright 1999-2004 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +depend() { + before bootmisc hdparm + after localmount +} + +checkconfig() { + if [ ! -f /etc/conf.d/pciparm ]; then + ewarn "/etc/conf.d/pciparm does not exist, skipping" + return 1 + fi + + if [ -z "${PCIPARM_ALL}" -a -z "${PCIPARM_BUS_0}" -a -z "${PCIPARM_VENDOR_0}" ]; then + ewarn "None of PCIPARM_ALL, PCIPARM_BUS_* or PCIPARM_VENDOR_* set in /etc/conf.d/pciparm" + return 1 + fi +} + +do_setpci() { + #ewarn "do_setpci: /usr/sbin/setpci $SETPCI_OPT $@" + SWITCH=$1 + SPEC_ID=$2 + shift 2 + case "$SWITCH" in + -d) DESC=vendor ;; + -s) DESC=bus ;; + *) eerror "Unknown setpci type: $SWITCH" ; return 1 ;; + esac + + if [ -z "$SPEC_ID" ]; then + eerror "Missing device specifier!" + return 1 + fi + if [ -z "$*" ]; then + eerror "Missing configuration to set for ($DESC) $SPEC_ID!" + return 1 + fi + + ebegin "Setting PCI params for ($DESC) $SPEC_ID to $@" + /usr/sbin/setpci $SETPCI_OPT $SWITCH $SPEC_ID "$@" + rc=$? + eend $rc + return $rc +} + +do_setpci_array() { + name=$1 + shift + i=0 + while true; do + eval opt="\$${name}_$i" + # End of loop + [ -z "${opt}" ] && break + # Pass in all other parameters here, in case we want to use multiple + # arguments later. + do_setpci "$@" $opt #|| return 1 + i=$(($i+1)) + done +} + +start() { + if get_bootparam "nopciparm" ; then + ewarn "Skipping pciparm init as requested in kernel cmdline" + return 0 + fi + + checkconfig || return 1 + + # We do not exit after any errors presently, because it might be a + # stability-related fix after a failure. + [ -n "$PCIPARM_ALL" ] && \ + do_setpci -d '*:*' $PCIPARM_ALL #|| return 1 + + do_setpci_array PCIPARM_BUS -s #|| return 1 + do_setpci_array PCIPARM_VENDOR -d #|| return 1 +}