Bumblebee-Project / Bumblebee

Bumblebee daemon and client rewritten in C
http://www.bumblebee-project.org/
GNU General Public License v3.0
1.29k stars 142 forks source link

bbswitch: failed to evaluate \_SB_.PCI0.RP05.PXSX._DSM (Acer V5-573G) #460

Closed FelixLisczyk closed 10 years ago

FelixLisczyk commented 11 years ago

Hi,

I'm trying to setup Bumblebee on my new Acer Aspire V5-573G (Haswell i5-4200U, Nvidia GT 750M) running Ubuntu 13.04. Whenever I try to launch a program running optirun, I get the error message stated in the title...

felix@Felix-Laptop:~$ optirun -vv --debug bash
[  128.536692] [DEBUG]Reading file: /etc/bumblebee/bumblebee.conf
[  128.537077] [INFO]Configured driver: nvidia
[  128.537246] [DEBUG]optirun version 3.2.1 starting...
[  128.537258] [DEBUG]Active configuration:
[  128.537264] [DEBUG] bumblebeed config file: /etc/bumblebee/bumblebee.conf
[  128.537270] [DEBUG] X display: :8
[  128.537275] [DEBUG] LD_LIBRARY_PATH: /usr/lib/nvidia-325:/usr/lib32/nvidia-325
[  128.537281] [DEBUG] Socket path: /var/run/bumblebee.socket
[  128.537286] [DEBUG] Accel/display bridge: auto
[  128.537292] [DEBUG] VGL Compression: proxy
[  128.537297] [DEBUG] VGLrun extra options: 
[  128.537303] [DEBUG] Primus LD Path: /usr/lib/x86_64-linux-gnu/primus:/usr/lib/i386-linux-gnu/primus
[  128.537364] [DEBUG]Using auto-detected bridge virtualgl
[  128.690221] [INFO]Response: No - error: [XORG] (EE) NVIDIA(0): Failed to initialize the NVIDIA GPU at PCI:1:0:0.  Please

[  128.690240] [ERROR]Cannot access secondary GPU - error: [XORG] (EE) NVIDIA(0): Failed to initialize the NVIDIA GPU at PCI:1:0:0.  Please

[  128.690247] [DEBUG]Socket closed.
[  128.690267] [ERROR]Aborting because fallback start is disabled.
[  128.690273] [DEBUG]Killing all remaining processes.

My dmesg log prints some error messages regarding bbswitch:

[    2.610668] bbswitch: module verification failed: signature and/or required key missing - tainting kernel
[    2.610827] bbswitch: version 0.7
[    2.610833] bbswitch: Found integrated VGA device 0000:00:02.0: \_SB_.PCI0.GFX0
[    2.610841] bbswitch: Found discrete VGA device 0000:01:00.0: \_SB_.PCI0.RP05.PXSX
[    2.610855] bbswitch: failed to evaluate \_SB_.PCI0.RP05.PXSX._DSM {0xF8,0xD8,0x86,0xA4,0xDA,0x0B,0x1B,0x47,0xA7,0x2B,0x60,0x42,0xA6,0xB5,0xBE,0xE0} 0x100 0x0 {0x00,0x00,0x00,0x00}: AE_NOT_FOUND
[    2.610863] bbswitch: failed to evaluate \_SB_.PCI0.RP05.PXSX._DSM {0xA0,0xA0,0x95,0x9D,0x60,0x00,0x48,0x4D,0xB3,0x4D,0x7E,0x5F,0xEA,0x12,0x9F,0xD4} 0x102 0x0 {0x00,0x00,0x00,0x00}: AE_NOT_FOUND
[    2.610910] bbswitch: No suitable _DSM call found.

I already updated my nvidia driver to version 325 and my linux kernel to version 3.10.7, but the error still occurs. I'm attaching my log files below. Please let me know, if you need additional information. Thank you for your help!

Greetings Felix

dmesg: http://pastebin.com/0Thn6U02 Xorg.log: http://pastebin.com/kmFcWcXS bumblebee.conf: http://pastebin.com/XJDmXbFW

amonakov commented 11 years ago

Looks like ACPI handle issues in the kernel. Please try older release series, such as 3.7.x and 3.9.x. (Cc: @Lekensteyn )

FelixLisczyk commented 11 years ago

Hi,

thanks for your reply! Bumblebee is working fine with kernel version 3.7.10 on my laptop, the bug seems to occur with kernel version 3.8.0 and upwards. (I tested 3.8.0, 3.9.11 and 3.10.7)

I can live with this solution for the moment but I want to be able to upgrade my kernel sometime in the future. What should I do next? Is this a known issue or should I report the bug somewhere?

Lekensteyn commented 11 years ago

Ehh, wtf that looks odd. Can you try a 3.11 kernel, such as http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.11-rc6-saucy/? If you know how to build a kernel and apply a patch, you can also try 3.10 + commit 60f75b8e97daf4a39790a20d962cb861b9220af5` (conflict resolution is described at http://www.spinics.net/lists/stable/msg18351.html).

Please also use http://gist.github.com/ to post your acpidump.

FelixLisczyk commented 11 years ago

I tried kernel 3.11-rc6, the error remains the same. However, dmesg prints a new error line:

[    2.415998] bbswitch: module verification failed: signature and/or required key missing - tainting kernel
[    2.416206] bbswitch: version 0.7
[    2.416213] bbswitch: Found integrated VGA device 0000:00:02.0: \_SB_.PCI0.GFX0
[    2.416221] bbswitch: Found discrete VGA device 0000:01:00.0: \_SB_.PCI0.RP05.PXSX
[    2.416236] bbswitch: failed to evaluate \_SB_.PCI0.RP05.PXSX._DSM {0xF8,0xD8,0x86,0xA4,0xDA,0x0B,0x1B,0x47,0xA7,0x2B,0x60,0x42,0xA6,0xB5,0xBE,0xE0} 0x100 0x0 {0x00,0x00,0x00,0x00}: AE_NOT_FOUND
[    2.416244] bbswitch: failed to evaluate \_SB_.PCI0.RP05.PXSX._DSM {0xA0,0xA0,0x95,0x9D,0x60,0x00,0x48,0x4D,0xB3,0x4D,0x7E,0x5F,0xEA,0x12,0x9F,0xD4} 0x102 0x0 {0x00,0x00,0x00,0x00}: AE_NOT_FOUND
[    2.416253] ACPI Warning: \_SB_.PCI0.GFX0._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20130517/nsarguments-95)
[    2.416300] bbswitch: No suitable _DSM call found.

I created a gist containing my acpidump and my new dmesg log file on kernel 3.11:

https://gist.github.com/FelixII/6326862

I also compiled kernel 3.10.9 and applied the patch, but the error and dmesg output remains unchanged.

cbuchner1 commented 11 years ago

I own the same laptop (except with core i7-4500U), having the same problem with the bbswitch ACPI messages. I am on Ubuntu 12.04.3 LTS using the hardware enablement stack for Ubuntu's raring release (Kernel 3.8.0). I also tried specifying the PCI bus ID in the xorg.conf.nvidia, which causes a few extra messages in /var/log/kern.log

vgaarb: this pci device is not a vga device NVRM: failed to copy vbios to system memory. NVRM: RmInitAdapter failed! (0x30:0xffffffff:711) NVRM: rm_init_adapter(0) failed

the VGA arbiter message might be cause because lspci shows the nVidia device as "3D controller" and not as "VGA compatible controller".

I might try falling back to quantal's kernel (3.5) and matching xorg version to see if it solves the bbswitch API problems. UPDATE: the 3.5.0 kernel requires me to pass the nomodeset parameter from grub, otherwise it crashes after a few seconds. Furthermore I only see any kernel messages when passing vga=791 to the kernel and removing the $vt_handoff argument in grub.cfg. With nomodeset unfortunately the Intel driver fails to work.

FelixLisczyk commented 11 years ago

I'd like to mention two other ACPI-related issues although I'm not sure if they have the same cause as the bbswitch problem:

I also can't access nvidia-settings using optirun. I get the error message "You do not appear to be using the NVIDIA X driver. Please edit your X configuration file (just run nvidia-xconfig as root), and restart the X server." The "nvidia-xconfig" command doesn't exist on my machine.

I tested these issues on kernel versions 3.11.0 and 3.7.10 (where bumblebee is working fine otherwise).

@cbuchner1 Do you also experience these issues?

Thank you for your help!

ArchangeGabriel commented 11 years ago

Support for Haswell and such recent NVIDIA cards might not be supported.

Lekensteyn commented 11 years ago

Ok, I just checked the acpidump and dmesg. Reminds me never to buy acer crap.

I cannot find either the Optimus or SwitchableGraphics ("nvidia") _DSM methods. Perhaps it is the same issue as https://bugzilla.kernel.org/show_bug.cgi?id=60592. If you have that other OS, can you use RWE in that other system to retrieve ACPI tables for comparsion? See the linked bug for an example.

FelixLisczyk commented 11 years ago

I'm attaching my ACPI dump using RWE on Windows 8:

https://gist.github.com/FelixII/6388444

sebschub commented 11 years ago

Same issue with the same laptop except with a i7-4500U (and openSUSE). For completeness, here my ACPI tables also created with RW everything under Win8.

Jility commented 11 years ago

Is there actually no kernel =>3.8 that works with bumblebee on v5 573? Any workarounds?

Lekensteyn commented 11 years ago

@FelixII I just checked those tables and then looked at your previous acpidump from Linux. For some reason, acpidump only extracts three of the five SSDTs which initially confused me (I did not think of that possibility).

# assume acpidump in current directory
mkdir -p new-dat/{1..5} dat dsl
acpixtract acpidump && iasl -d *.dat
mv *.dsl dsl/ && mv *.dat dat/
# find "hidden" SSDT
awk '/^ $/{f="";}/^SSDT/{n++;f="new-dat/" n "/acpidump"}{if(f)print>f}' < acpidump
for i in new-dat/*/;do (cd "$i" && acpixtract -a acpidump);done

These two tables are not extracted:

(2)
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x00000AD8 (2776)
 *     Revision         0x01
 *     Checksum         0xB6
 *     OEM ID           "ACRSYS"
 *     OEM Table ID     "ACRPRDCT"
 *     OEM Revision     0x00003000 (12288)
 *     Compiler ID      "1025"
 *     Compiler Version 0x00040000 (262144)
 */
(4)
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x00002872 (10354)
 *     Revision         0x01
 *     Checksum         0xC4
 *     OEM ID           "ACRSYS"
 *     OEM Table ID     "ACRPRDCT"
 *     OEM Revision     0x00001000 (4096)
 *     Compiler ID      "1025"
 *     Compiler Version 0x00040000 (262144)
 */

The acpi-handle-hack can probably be modified to support your machines, but let's try to solve the real issue. Two devices both have _ADR 0, PXSX and PEGP. PEGP should have been matched, but for some reason PXSX was found to be a useful device.

Edit: acpixtract bug reported at https://bugs.acpica.org/show_bug.cgi?id=1044. Please report your laptop issue to https://bugzilla.kernel.org/

FelixLisczyk commented 11 years ago

I created a acpidump file using the working kernel 3.7.10. You can find it here:

https://gist.github.com/FelixII/6404918

Two lines are different:

$ diff 3.7.out 3.11.out 
3675c3675
<   0000: 53 53 44 54 d8 0a 00 00 01 64 41 43 52 53 59 53  SSDT.....dACRSYS
---
>   0000: 53 53 44 54 d8 0a 00 00 01 b6 41 43 52 53 59 53  SSDT......ACRSYS
3678c3678
<   0030: 05 0c 0d 43 50 55 30 49 53 54 20 00 0c 98 85 36  ...CPU0IST ....6
---
>   0030: 05 0c 0d 43 50 55 30 49 53 54 20 00 0c 98 35 34  ...CPU0IST ...54

I don't know if this helps...

@Lekensteyn I never filled a kernel bug report. What should I include there besides a problem description? Only the dmesg log files containing the bbswitch error messages? The acpidump files? Any additional information?

Thank you for your help!

Lekensteyn commented 11 years ago

@FelixII please subscribe to https://bugzilla.kernel.org/show_bug.cgi?id=60829

Jility commented 11 years ago

@Lekensteyn: you said something about modifiing the acpi-handle-hack. any clues on that one? I am really happy with 3.8 kernel and would really love to see bumblebee runing. if you could help me/us would be nice. btw my name is Felix too ;)

FelixLisczyk commented 11 years ago

@Lekensteyn Thanks for creating the bug report! I added myself to the CC list and will provide additional information if requested. :-)

Lekensteyn commented 11 years ago

@Jility See the hack-lenovo branch for a new commit.

cbuchner1 commented 11 years ago

I get a -1 No such device message when loading bbswitch from the hack-lenovo branch using modprobe or using make load.

Note also that my product name differs in that it is "Aspire V5-573PG", which is the laptop version with core i7-4500U processor and a full HD touch panel. But even after adding that dmi_match entry to acpi-handle-hack.c I don't get it to work (same -1 error).

Is there anything specific that needs to be done in order to make the bbswitch tool compatible with the GT 750M nVidia chip, maybe?

Lekensteyn commented 11 years ago

@cbuchner1 What is the error message in dmesg? dmesg | tail after loading the handle hack and bbswitch. Whitespace is significant, be sure to append/prepend it to your product name string if necessary.

bbswitch does not need changes for supporting GT 750M, it supports all laptops that provide the "standard" interfaces through _DSM.

cbuchner1 commented 11 years ago

Got it to work. Turns out I did not know that acpi-handle-hack was a separate kernel module and required separate compilation (I incorrectly assumed it was part of the updated bbswitch code)

I followed the steps detailed here for building the acpi-handle-hack kernel module. http://chakra-project.org/bbs/viewtopic.php?id=7371 Can't we automake this as part of the Makefile when checking out bbswitch from hack-lenovo branch? EDIT: should have followed README.md instead.

In line 29 of the acpi-handle-hack.c I inserted || dmi_match(DMI_PRODUCT_NAME, "Aspire V5-573PG")

line 64 of the acpi-handle-hack.c had to be changed to for my 3.8.0 kernel pdev->dev.acpi_node.handle = handle;

Now my dmesg log looks like this:

[ 3035.517967] acpi_handle_hack: Setting new ACPI handle for discrete video card [ 3055.580894] bbswitch: version 0.5 [ 3055.580908] bbswitch: Found integrated VGA device 0000:00:02.0: SB.PCI0.GFX0 [ 3055.580921] bbswitch: Found discrete VGA device 0000:01:00.0: SB.PCI0.RP05.PEGP [ 3055.581124] bbswitch: detected an Optimus _DSM function [ 3055.581143] bbswitch: Succesfully loaded. Discrete card 0000:01:00.0 is on

Poof! Success. 750 frames per second running glxgears with optirun.

Lekensteyn commented 11 years ago

@cbuchner1 I have applied two patches to acpi-handle-hack to address your issues.

Jility commented 11 years ago

@cbuchner1: can you pls list the order in which and what you installed/loaded/compiled. would be nice for me and other ppl with the same problem :) + which kernel are you on? thx

Lekensteyn commented 11 years ago

@Jility The instructions for the hack are the same as for the Lenovo laptops from #2, see the README here: https://github.com/Bumblebee-Project/bbswitch/tree/hack-lenovo#lenovo-ideapad-y470y570-and-toshiba-satellite-p870

Jility commented 11 years ago

sry, but just to be sure: 1. nvidia drivers >319.17; 2. bumblebee 3.2.1; 3. lenovo-hack ?! and all working with 3.8 kernels and higher? @cbuchner1: does this fix the shutdown freez bug?

WhiteWolf1776 commented 11 years ago

Once you hit kernel 3.10, you need 319.49 Nvidia (or whatever the current on better than that is when you read this)

Jility commented 11 years ago

is it working with nouveau as well?

Jility commented 11 years ago

weeee...it is working :) + primusrun ftw :D

mikedanese commented 11 years ago

Having the same issue on my lenovo y510p on 3.9.4 kernel running ubuntu 13.04.

here is my dmesg and acpidump. should i be looking at lenovo-hack for a solution? i've tried building the module but I haven't had luck getting it to work yet. Help would be much appreciated.

Lekensteyn commented 11 years ago

@mikedanese Your laptop is incompatible with bbswitch, it does not support any of the Optimus or SwitchableGraphics DSM methods. If I look at notebookcheck, then there does not appear to be any facility for saving power on your notebook wrt the nvidia cards.

Lekensteyn commented 11 years ago

Please test https://bugzilla.kernel.org/attachment.cgi?id=107416&action=diff

FelixLisczyk commented 11 years ago

Bumblebee (stock version from ppa) works on kernel 3.11 using the patch above. There are still some ACPI warnings that don't appear when I'm using kernel 3.7.10:

[    6.999564] bbswitch: module verification failed: signature and/or required key missing - tainting kernel
[    6.999702] bbswitch: version 0.7
[    6.999708] bbswitch: Found integrated VGA device 0000:00:02.0: \_SB_.PCI0.GFX0
[    6.999715] bbswitch: Found discrete VGA device 0000:01:00.0: \_SB_.PCI0.RP05.PEGP
[    6.999726] ACPI Warning: \_SB_.PCI0.RP05.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20130517/nsarguments-95)
[    6.999812] bbswitch: detected an Optimus _DSM function
[    6.999825] pci 0000:01:00.0: enabling device (0006 -> 0007)
[    6.999870] bbswitch: Succesfully loaded. Discrete card 0000:01:00.0 is on
[    7.002539] bbswitch: disabling discrete graphics
[    7.002553] ACPI Warning: \_SB_.PCI0.RP05.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20130517/nsarguments-95)
[    7.018770] pci 0000:01:00.0: power state changed by ACPI to D3cold

The warnings appear very often when running a program using optirun. I'm attaching a dmesg log, where I ran "optirun glxspheres" right after boot:

https://gist.github.com/FelixII/6448483

I'm also attaching my dmesg log on kernel 3.7.10 for completeness (also includes "optirun glxspheres" command):

https://gist.github.com/FelixII/6448803

Thank you for your help!

UPDATE: Booting on patched 3.11 kernel without the "nomodeset" parameter still fails. It works on kernel 3.7.10 though. Maybe this has something to do with the ACPI warnings?

cbuchner1 commented 11 years ago

Just a heads-up: Acer has published BIOS 2.20 for Acer V5-573PG, dated September 9th. Maybe there's also one for V5-375G ?

ArchangeGabriel commented 10 years ago

The ACPI warning are harmless. @Lekensteyn What is the situation on this as of today?

Lekensteyn commented 10 years ago

That bug is fixed already with 3.12.