VirtualBox

Changeset 48036 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Aug 23, 2013 5:52:07 PM (11 years ago)
Author:
vboxsync
Message:

Solaris/Installer: Fudge to handle thread-context hooks causing vboxdrv to be busy until all R0 threads are completely freed.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Installer/solaris/vboxconfig.sh

    r47894 r48036  
    490490}
    491491
    492 # unload_module(modname, moddesc, [fatal])
     492# unload_module(modname, moddesc, retry, [fatal])
    493493# failure: fatal
    494494unload_module()
     
    506506    modname=$1
    507507    moddesc=$2
    508     fatal=$3
     508    retry=$3
     509    fatal=$4
    509510    modid=`$BIN_MODINFO | grep "$modname " | cut -f 1 -d ' ' `
    510511    if test -n "$modid"; then
     
    513514            subprint "Unloaded: $moddesc module"
    514515        else
    515             subprint "Unloading: $moddesc module ...FAILED!"
    516             if test "$fatal" = "$FATALOP"; then
    517                 exit 1
     516            #
     517            # Hack for vboxdrv. Delayed removing when VMM thread-context hooks are used.
     518            # Our automated tests are probably too quick... Fix properly later.
     519            #
     520            result=$?
     521            if test "$retry" -eq 1; then
     522                cmax=15
     523                cslept=0
     524                while test "$result" -ne 0;
     525                do
     526                    subprint "Unloading: $moddesc module ...FAILED! Busy? Retrying in 3 seconds..."
     527                    sleep 3
     528                    cslept=`expr $cslept + 3`
     529                    if test "$cslept" -ge "$cmax"; then
     530                        break
     531                    fi
     532                    $BIN_MODUNLOAD -i $modid
     533                    result=$?
     534                done
     535            fi
     536   
     537            if test "$result" -ne 0; then
     538                subprint "Unloading: $moddesc module ...FAILED!"
     539                if test "$fatal" = "$FATALOP"; then
     540                    exit 1
     541                fi
     542            else
     543                subprint "Unloaded: $moddesc module"
    518544            fi
    519545            return 1
     
    708734    fi
    709735
    710     unload_module "$MOD_VBOXUSB" "$DESC_VBOXUSB" "$fatal"
     736    unload_module "$MOD_VBOXUSB" "$DESC_VBOXUSB" 0 "$fatal"
    711737    rem_driver "$MOD_VBOXUSB" "$DESC_VBOXUSB" "$fatal"
    712738
    713     unload_module "$MOD_VBOXUSBMON" "$DESC_VBOXUSBMON" "$fatal"
     739    unload_module "$MOD_VBOXUSBMON" "$DESC_VBOXUSBMON" 0 "$fatal"
    714740    rem_driver "$MOD_VBOXUSBMON" "$DESC_VBOXUSBMON" "$fatal"
    715741
    716     unload_module "$MOD_VBOXFLT" "$DESC_VBOXFLT" "$fatal"
     742    unload_module "$MOD_VBOXFLT" "$DESC_VBOXFLT" 0 "$fatal"
    717743    rem_driver "$MOD_VBOXFLT" "$DESC_VBOXFLT" "$fatal"
    718744
    719     unload_module "$MOD_VBOXBOW" "$DESC_VBOXBOW" "$fatal"
     745    unload_module "$MOD_VBOXBOW" "$DESC_VBOXBOW" 0 "$fatal"
    720746    rem_driver "$MOD_VBOXBOW" "$DESC_VBOXBOW" "$fatal"
    721747
    722     unload_module "$MOD_VBOXNET" "$DESC_VBOXNET" "$fatal"
     748    unload_module "$MOD_VBOXNET" "$DESC_VBOXNET" 0 "$fatal"
    723749    rem_driver "$MOD_VBOXNET" "$DESC_VBOXNET" "$fatal"
    724750
    725     unload_module "$MOD_VBOXDRV" "$DESC_VBOXDRV" "$fatal"
     751    unload_module "$MOD_VBOXDRV" "$DESC_VBOXDRV" 1 "$fatal"
    726752    rem_driver "$MOD_VBOXDRV" "$DESC_VBOXDRV" "$fatal"
    727753
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette