--- init.d-pciparm.orig 2008-10-11 01:34:04.000000000 +0100 +++ init.d-pciparm 2008-10-11 02:08:06.000000000 +0100 @@ -22,40 +22,48 @@ do_setpci() { #ewarn "do_setpci: /usr/sbin/setpci $SETPCI_OPT $@" - SWITCH=$1 - case "$SWITCH" in - -d) DESC="(vendor)" ;; - -s) DESC="(bus)" ;; - *) eerror "Unknown setpci type!" ; return 1 ;; - esac - shift - SPEC_ID=$1 - shift - if [[ -z "$SPEC_ID" ]]; then - eerror "Missing device specifier!" + x= + case "$1" in + -d) DESC=vendor + ;; -s) DESC=bus + ;; -x) [ -n "$SWITCH" -a -n "$DESC" ] || { eerror "Bad array call, Switch: ${SWITCH:-Empty!} Desc: ${DESC:-Empty!}"; return 1; } + x=1; false + ;; *) eerror 'Unknown setpci type!'; return 1 +;; esac && SWITCH=$1 + [ -z "$2" ] && { + eerror "Missing $DESC device specifier!" return 1 - fi - if [[ -z "$@" ]]; then + } + SPEC_ID=$2 + shift 2 + [ -z "$*" ] && { eerror "Missing configuration to set for $DESC $SPEC_ID!" return 1 - fi - ebegin "Setting PCI params for $DESC $SPEC_ID to $@" + } + ebegin "Setting PCI params for ($DESC) $SPEC_ID to $*" /usr/sbin/setpci $SETPCI_OPT $SWITCH $SPEC_ID "$@" - eend $? - SWITCH="" - SPEC_ID="" + r=$? + [ -n "$x" ] && unset -v x SPEC_ID || unset -v x SWITCH SPEC_ID + eend "$r" + return "$r" } do_setpci_array() { - name=$1 - shift + case $1 in + -d) DESC=vendor +;; -s) DESC=bus +;; *) eerror "Unknown type to: do_setpci_array $*";return 1 +;; esac + SWITCH=$1; shift + [ -z $1 ] && { eerror 'No array name to do_setpci_array!'; return 1; } i=0 while true; do - eval opt="\$${name}_$i" - [[ -z "$opt" ]] && break - do_setpci "$*" $opt + eval opt="\$${1}_$i" + [ -z "$opt" ] && break + do_setpci -x $opt # || return 1 i=$(($i+1)) done + unset -v opt i SWITCH } start() { @@ -65,8 +73,13 @@ fi checkconfig || return 1 - - [[ -n "$PCIPARM_ALL" ]] && \ + + if [ "$VERBOSE" = yes ]; then + SETPCI_OPT=' -v' + else SETPCI_OPT= + fi + + [ -n "$PCIPARM_ALL" ] && \ do_setpci -d '*:*' $PCIPARM_ALL do_setpci_array PCIPARM_BUS -s