Results 1 to 6 of 6

Thread: Unable to Use Optimus Discrete GPU After System Suspend

  1. #1

    Default Unable to Use Optimus Discrete GPU After System Suspend

    I have a functioning optimus system that works perfectly from boot. However, if I suspend the system and wake it, bumblebee fails to switch cards. Only a reboot will fix the problem, restarting bumblebeed does nothing.

    Issue seems similar to https://github.com/Bumblebee-Project...tch/issues/140 but the approved workaround kernel parameter does not resolve the issue. It seems that the issue is that the nvidia driver loading when the system goes to sleep, and then not unloading when it wakes, but it is hard to tell.

    Console output with the suspend point marked.

    Code:
    mkurtz@localhost:~> optirun glxspheres
    Polygons in scene: 62464 (61 spheres * 1024 polys/spheres)
    Visual ID of window: 0x21
    Context is Direct
    OpenGL Renderer: GeForce GT 820M/PCIe/SSE2
    71.057423 frames/sec - 79.300084 Mpixels/sec
    
    ******** SYSTEM SUSPEND ********
    
    mkurtz@localhost:~> optirun glxspheres
    [  996.152383] [ERROR]Cannot access secondary GPU - error: Could not enable discrete graphics card
    
    [  996.152474] [ERROR]Aborting because fallback start is disabled.
    
    mkurtz@localhost:~> optirun --status
    Bumblebee status: Error (3.2.1): Could not enable discrete graphics card
    
    mkurtz@localhost:~> lsmod | grep -P "(nvidia|bbswitch)"
    nvidia_drm             53248  1
    nvidia_modeset        843776  1 nvidia_drm
    nvidia              13144064  1 nvidia_modeset
    drm_kms_helper        200704  2 i915,nvidia_drm
    drm                   438272  9 i915,nvidia_drm,drm_kms_helper
    bbswitch               16384  0
    
    mkurtz@localhost:~> dmesg | tail
    [  982.106453] IPv6: ADDRCONF(NETDEV_UP): wlp2s0: link is not ready
    [  982.156866] IPv6: ADDRCONF(NETDEV_UP): wlp2s0: link is not ready
    [  985.242801] wlp2s0: authenticate with c0:ee:fb:f5:77:28
    [  985.245054] wlp2s0: send auth to c0:ee:fb:f5:77:28 (try 1/3)
    [  985.246776] wlp2s0: authenticated
    [  985.247445] wlp2s0: associate with c0:ee:fb:f5:77:28 (try 1/3)
    [  985.253662] wlp2s0: RX AssocResp from c0:ee:fb:f5:77:28 (capab=0x531 status=0 aid=7)
    [  985.255144] wlp2s0: associated
    [  985.255180] IPv6: ADDRCONF(NETDEV_CHANGE): wlp2s0: link becomes ready
    [  996.155706] bbswitch: enabling discrete graphics
    
    mkurtz@localhost:~> optirun glxspheres
    [ 1049.595096] [ERROR]Cannot access secondary GPU - error: Could not enable discrete graphics card
    [ 1049.595142] [ERROR]Aborting because fallback start is disabled.
    
    mkurtz@localhost:~> dmesg | tail
    [  985.242801] wlp2s0: authenticate with c0:ee:fb:f5:77:28
    [  985.245054] wlp2s0: send auth to c0:ee:fb:f5:77:28 (try 1/3)
    [  985.246776] wlp2s0: authenticated
    [  985.247445] wlp2s0: associate with c0:ee:fb:f5:77:28 (try 1/3)
    [  985.253662] wlp2s0: RX AssocResp from c0:ee:fb:f5:77:28 (capab=0x531 status=0 aid=7)
    [  985.255144] wlp2s0: associated
    [  985.255180] IPv6: ADDRCONF(NETDEV_CHANGE): wlp2s0: link becomes ready
    [  996.155706] bbswitch: enabling discrete graphics
    [ 1049.598424] bbswitch: enabling discrete graphics
    [ 1049.598450] nvidia 0000:03:00.0: Refused to change power state, currently in D3
    
    mkurtz@localhost:~> optirun --status
    Bumblebee status: Error (3.2.1): Could not enable discrete graphics card
    
    mkurtz@localhost:~> sudo systemctl restart bumblebeed
    
    mkurtz@localhost:~> optirun --status
    Bumblebee status: Ready (3.2.1). X inactive. Discrete video card is off.

  2. #2
    Join Date
    Jun 2008
    Location
    Groningen, Netherlands
    Posts
    20,925
    Blog Entries
    14

    Default Re: Unable to Use Optimus Discrete GPU After System Suspend

    Don't have an Optimus laptop no more, but you should have a .conf file for bbswitch in /etc/modprobe.d/ . Can you post the content of that file ( something like 50-bbswitch.conf )
    ° Appreciate my reply? Click the star and let me know why.

    ° Perfection is not gonna happen. No way.

    http://en.opensuse.org/User:Knurpht
    http://nl.opensuse.org/Gebruiker:Knurpht

  3. #3

    Default Re: Unable to Use Optimus Discrete GPU After System Suspend

    /etc/modprobe.d/50-bbswitch.conf

    Code:
    options bbswitch load_state=0 unload_state=1
    /etc/bumblebee/bumblebee.conf

    Code:
    # Configuration file for Bumblebee. Values should **not** be put between quotes
    
    ## Server options. Any change made in this section will need a server restart
    # to take effect.
    [bumblebeed]
    # The secondary Xorg server DISPLAY number
    VirtualDisplay=:8
    # Should the unused Xorg server be kept running? Set this to true if waiting
    # for X to be ready is too long and don't need power management at all.
    KeepUnusedXServer=false
    # The name of the Bumbleblee server group name (GID name)
    ServerGroup=bumblebee
    # Card power state at exit. Set to false if the card shoud be ON when Bumblebee
    # server exits.
    TurnCardOffAtExit=false
    # The default behavior of '-f' option on optirun. If set to "true", '-f' will
    # be ignored.
    NoEcoModeOverride=false
    # The Driver used by Bumblebee server. If this value is not set (or empty),
    # auto-detection is performed. The available drivers are nvidia and nouveau
    # (See also the driver-specific sections below)
    Driver=nvidia
    # Directory with a dummy config file to pass as a -configdir to secondary X
    XorgConfDir=/etc/bumblebee/xorg.conf.d
    
    ## Client options. Will take effect on the next optirun executed.
    [optirun]
    # Acceleration/ rendering bridge, possible values are auto, virtualgl and
    # primus.
    Bridge=auto
    # The method used for VirtualGL to transport frames between X servers.
    # Possible values are proxy, jpeg, rgb, xv and yuv.
    VGLTransport=proxy
    # List of paths which are searched for the primus libGL.so.1 when using
    # the primus bridge
    PrimusLibraryPath=/usr/lib64/primus:/usr/lib/primus
    # Should the program run under optirun even if Bumblebee server or nvidia card
    # is not available?
    AllowFallbackToIGC=false
    
    
    # Driver-specific settings are grouped under [driver-NAME]. The sections are
    # parsed if the Driver setting in [bumblebeed] is set to NAME (or if auto-
    # detection resolves to NAME).
    # PMMethod: method to use for saving power by disabling the nvidia card, valid
    # values are: auto - automatically detect which PM method to use
    #         bbswitch - new in BB 3, recommended if available
    #       switcheroo - vga_switcheroo method, use at your own risk
    #             none - disable PM completely
    # https://github.com/Bumblebee-Project/Bumblebee/wiki/Comparison-of-PM-methods
    
    ## Section with nvidia driver specific options, only parsed if Driver=nvidia
    [driver-nvidia]
    # Module name to load, defaults to Driver if empty or unset
    KernelDriver=nvidia_drm
    PMMethod=auto
    # colon-separated path to the nvidia libraries
    LibraryPath=/usr/lib64/nvidia:/usr/lib/nvidia
    # comma-separated path of the directory containing nvidia_drv.so and the
    # default Xorg modules path
    XorgModulePath=/usr/lib64/nvidia/xorg/,/usr/lib64/xorg/modules
    XorgConfFile=/etc/bumblebee/xorg.conf.nvidia
    
    ## Section with nouveau driver specific options, only parsed if Driver=nouveau
    [driver-nouveau]
    KernelDriver=nouveau
    PMMethod=auto
    XorgConfFile=/etc/bumblebee/xorg.conf.nouveau
    /etc/bumblebee/Xorg.conf.nvidia

    Code:
    Section "ServerLayout"
        Identifier  "Layout0"
        Option      "AutoAddDevices" "false"
        Option      "AutoAddGPU" "false"
    EndSection
    
    Section "Device"
        Identifier  "DiscreteNvidia"
        Driver      "nvidia"
        VendorName  "NVIDIA Corporation"
    
    #   If the X server does not automatically detect your VGA device,
    #   you can manually set it here.
    #   To get the BusID prop, run `lspci | egrep 'VGA|3D'` and input the data
    #   as you see in the commented example.
    #   This Setting may be needed in some platforms with more than one
    #   nvidia card, which may confuse the proprietary driver (e.g.,
    #   trying to take ownership of the wrong device). Also needed on Ubuntu 13.04.
    #   BusID "PCI:01:00:0"
    
    #   Setting ProbeAllGpus to false prevents the new proprietary driver
    #   instance spawned to try to control the integrated graphics card,
    #   which is already being managed outside bumblebee.
    #   This option doesn't hurt and it is required on platforms running
    #   more than one nvidia graphics card with the proprietary driver.
    #   (E.g. Macbook Pro pre-2010 with nVidia 9400M + 9600M GT).
    #   If this option is not set, the new Xorg may blacken the screen and
    #   render it unusable (unless you have some way to run killall Xorg).
        Option "ProbeAllGpus" "false"
    
        Option "NoLogo" "true"
        Option "UseEDID" "false"
        Option "UseDisplayDevice" "none"
    EndSection

  4. #4
    Join Date
    Jun 2008
    Location
    Groningen, Netherlands
    Posts
    20,925
    Blog Entries
    14

    Default Re: Unable to Use Optimus Discrete GPU After System Suspend

    Those were not what I asked for.
    Code:
    cat /etc/modprobe.d/*bbswitch.conf
    Another workaround this issue would be to create a systemd unit, that does nothing more than switch the card on at resume.
    ° Appreciate my reply? Click the star and let me know why.

    ° Perfection is not gonna happen. No way.

    http://en.opensuse.org/User:Knurpht
    http://nl.opensuse.org/Gebruiker:Knurpht

  5. #5

    Default Re: Unable to Use Optimus Discrete GPU After System Suspend

    I forgot to copy it in the initial post, I edited it in right after. Just the one line.

  6. #6

    Default Re: Unable to Use Optimus Discrete GPU After System Suspend

    I have the very same problem using openSUSE Leap 42.3. I am using NVIDIA GTX960m.
    and I have some other infomation that may be useful.
    Code:
    # lspci -s 01:00.0 -vv
    01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev ff) (prog-if ff)
            !!! Unknown header type 7f
            Kernel modules: nouveau, nvidia_drm, nvidia
    # lsmod | grep nouveau
    # LANG=C journalctl -n 20
    -- Logs begin at Sat 2018-01-20 01:06:00 CST, end at Thu 2018-01-25 02:56:33 CST. --
    ...skipping...
    Jan 25 02:56:33 shigure-pc.lan kernel: bbswitch: enabling discrete graphics
    Jan 25 02:56:33 shigure-pc.lan bumblebeed[979]: [64994.284258] [ERROR]Could not enable discrete graphics card
    Jan 25 02:56:33 shigure-pc.lan kernel: pci 0000:01:00.0: Refused to change power state, currently in D3
    BTW: I am not a native english speaker, so please excuse me for my poor english grammar, and feel free to point out my mistakes. thx

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •