Nvidia Optimus

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
Procopio
Linux 3.x
Linux 3.x
Messaggi: 844
Iscritto il: ven 29 lug 2011, 11:50
Nome Cognome: Matteo Micheletto Oddino
Slackware: 14.2
Kernel: 4.4.14
Desktop: Awesome
Località: Torino

Re: Nvidia Optimus

Messaggio da Procopio »

Codice: Seleziona tutto

root /home/vrso # cat /etc/modprobe.d/bbswitch.conf
options bbswitch load_state=1 unload_state=-1
devo avere fatto qualche pasticcio prima perchè la dir /sys/module non c'era e ti avevo anche postato l'output, ora c'è...

Codice: Seleziona tutto

root /home/vrso # ls /sys/module/bbswitch/
coresize  holders  initsize  initstate  notes  parameters  refcnt  sections  srcversion  taint  uevent  version
root /home/vrso # ls /sys/module/bbswitch/parameters/
load_state  skip_optimus_dsm  unload_state
root /home/vrso # cat /sys/module/bbswitch/parameters/
load_state        skip_optimus_dsm  unload_state      
root /home/vrso # cat /sys/module/bbswitch/parameters/load_state 
1
root /home/vrso # cat /sys/module/bbswitch/parameters/skip_optimus_dsm 
N
root /home/vrso # cat /sys/module/bbswitch/parameters/unload_state 
-1

allora elimino quei tre files in /sys/module/bbswitch/parameters così da fargli prendere le impostazioni solo da /etc/modprobe.d/bbswitch.conf e riavvio?

rik70
Iper Master
Iper Master
Messaggi: 2559
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 7.2.x-rt
Desktop: Openbox
Distribuzione: Arch Linux

Re: Nvidia Optimus

Messaggio da rik70 »

Procopio ha scritto:allora elimino quei tre files in /sys/module/bbswitch/parameters così da fargli prendere le impostazioni solo da /etc/modprobe.d/bbswitch.conf e riavvio?
No no, non toccare nulla per ora.
I parametri li ha presi, bene così. La directory /sys/module e il suo contenuto vengono ricreati ad ogni avvio, metterci le mani non serve. C'interessa solo per vedere i parametri del modulo.

Adesso fai un reboot lasciando le cose come stanno e incolla di nuovo un dmesg senza toccare optirun. Abbi pazienza ancora.

Avatar utente
Procopio
Linux 3.x
Linux 3.x
Messaggi: 844
Iscritto il: ven 29 lug 2011, 11:50
Nome Cognome: Matteo Micheletto Oddino
Slackware: 14.2
Kernel: 4.4.14
Desktop: Awesome
Località: Torino

Re: Nvidia Optimus

Messaggio da Procopio »

no, grazie a te per la pazienza! ecco l'ultimo dmesg, primo comando all'avvio


EDIT comunque il bbswitch quei parametri non li ascolta minimamente perchè ho provato per verifica a cambiarli sui vari possibili valori in /etc/modprobe.d/bbswitch.conf e venivano tutti presi correttamente in /sys/module/bbswitch/parameters, eppure bbswitch continuava sempre a disattivarmi la scheda alla fine del suo processo

Codice: Seleziona tutto

 dmesg | grep bbswitch
[    2.284335] bbswitch: version 0.8
[    2.284338] bbswitch: Found integrated VGA device 0000:00:02.0: \_SB_.PCI0.GFX0
[    2.284343] bbswitch: Found discrete VGA device 0000:02:00.0: \_SB_.PCI0.PEG0.PEGP
[    2.284405] bbswitch: detected an Optimus _DSM function
[    2.284451] bbswitch: Succesfully loaded. Discrete card 0000:02:00.0 is on
[    3.578720] bbswitch: disabling discrete graphics


rik70
Iper Master
Iper Master
Messaggi: 2559
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 7.2.x-rt
Desktop: Openbox
Distribuzione: Arch Linux

Re: Nvidia Optimus

Messaggio da rik70 »

Codice: Seleziona tutto

[    3.549712] nvidia 0000:02:00.0: Refused to change power state, currently in D3
[    3.549784] NVRM: This is a 64-bit BAR mapped above 4GB by the system
NVRM: BIOS or the Linux kernel, but the PCI bridge
NVRM: immediately upstream of this GPU does not define
NVRM: a matching prefetchable memory window.
[    3.549787] NVRM: This may be due to a known Linux kernel bug.  Please
NVRM: see the README section on 64-bit BARs for additional
NVRM: information.
Quindi: 'power state, currently in D3'. La scheda è completamente spenta e non si riesce a "svegliarla". Può essere roba dovuta al BIOS? Stai lavorando con o senza batteria? Nel Bios/Firmware UEFI non c'è nulla riguardo a sta GPU nvidia?

Nel log c'è un riferimento a un possibile Bug del kernel.... ma procediamo a carponi.

A questo punto - almeno per ora - puoi riportare tutto a default commentando o eliminando il contenuto del file /etc/modprobe.d/bbswitch.conf.

Mi sa che abbiamo finito le munizioni, sorry.

Avatar utente
Procopio
Linux 3.x
Linux 3.x
Messaggi: 844
Iscritto il: ven 29 lug 2011, 11:50
Nome Cognome: Matteo Micheletto Oddino
Slackware: 14.2
Kernel: 4.4.14
Desktop: Awesome
Località: Torino

Re: Nvidia Optimus

Messaggio da Procopio »

allora del bug dell'ultimo kernel avevo letto anch io (e arch sai che è sempre in "current") quindi potrebbe essere.

sto lavorando con l'alimentazione attaccata! la batteria non posso neanche toglierla

da windows comunque l'accelerazione 3D funziona quindi è solo di qua che non si riesce a svegliare la discrete GPU

rik70
Iper Master
Iper Master
Messaggi: 2559
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 7.2.x-rt
Desktop: Openbox
Distribuzione: Arch Linux

Re: Nvidia Optimus

Messaggio da rik70 »

Procopio ha scritto:allora del bug dell'ultimo kernel avevo letto anch io (e arch sai che è sempre in "current") quindi potrebbe essere.
Uhm....
Su arch se ricordo bene c'è un kernel 'longterm/lts', adesso non so a che versione sono arrivati ma potresti provare con quello. Ti dovrai ricompilare il modulo bbswitch. Magari te lo installi prendendolo da github, alla maniera slackware. Se hai problemi fischia che ti sa da una mano.
Almeno ti togli e ci togliamo ogni dubbio.

Il problema sarà nvidia, c'è sicuramente un pacchetto lts... ma l'installazione? Speriamo non faccia casini

Avatar utente
Procopio
Linux 3.x
Linux 3.x
Messaggi: 844
Iscritto il: ven 29 lug 2011, 11:50
Nome Cognome: Matteo Micheletto Oddino
Slackware: 14.2
Kernel: 4.4.14
Desktop: Awesome
Località: Torino

Re: Nvidia Optimus

Messaggio da Procopio »

comunque riassumendo quello che abbiamo visto fino ad ora:

Sembra che non ci sia verso di tenere accesa la scheda dedicata, ma non ho capito se il problema è di bumblebee, del modulo del kernel che non viene caricato correttamente, del kernel stesso oppure del bios (quest'ultimo, così come la scheda video stessa, tendo ad escluderli perchè su windows l'accelerazione 3D funziona perfettamente)

Seguendo il wiki ho impostato i parametri di bbswitch in maniera che la scheda dovrebbe essere lasciata accesa una volta accesa(guardate nel link all'interno del wiki che rimanda alla documentazione di bbswitch)

Codice: Seleziona tutto

root /home/vrso # cat /etc/modprobe.d/bbswitch.conf
options bbswitch load_state=1 unload_state=-1
e infatti da dmesg vedo che se la VGA dedicata non è utilizzata viene spenta da bbswitch

Codice: Seleziona tutto

root /home/vrso #dmesg | grep -i bbswitch
[    2.284154] bbswitch: version 0.8
[    2.284157] bbswitch: Found integrated VGA device 0000:00:02.0: \_SB_.PCI0.GFX0
[    2.284161] bbswitch: Found discrete VGA device 0000:02:00.0: \_SB_.PCI0.PEG0.PEGP
[    2.284224] bbswitch: detected an Optimus _DSM function
[    2.284268] bbswitch: Succesfully loaded. Discrete card 0000:02:00.0 is on
[    3.650239] bbswitch: disabling discrete graphics
e ovviamente la scheda rimane morta

Codice: Seleziona tutto

dmesg | grep -i nvidia
[    3.651871] nvidia: module license 'NVIDIA' taints kernel.
[    3.662393] nvidia 0000:02:00.0: Refused to change power state, currently in D0
[    3.669057] nvidia 0000:02:00.0: Refused to change power state, currently in D3
[    3.669127] nvidia: probe of 0000:02:00.0 failed with error -1
[    3.669322] NVRM: The NVIDIA probe routine failed for 1 device(s).
[    3.669324] NVRM: None of the NVIDIA graphics adapters were initialized!
[    3.669436] NVRM: NVIDIA init module failed!
questo ad ogni modo è il dmesg completo: http://pastebin.com/QN0SithP

se faccio il test con optirun mi da:

Codice: Seleziona tutto

root /home/vrso # optirun glxspheres64 -info
[  690.403014] [ERROR]Cannot access secondary GPU - error: [XORG] (EE) systemd-logind: failed to get session: PID 791 does not belong to any known session

[  690.403039] [ERROR]Aborting because fallback start is disabled.
che è anche segnalato nel wiki di bumblebee come errore, ma ovviamente il workaround che suggerisce il wiki non me lo fixa.

ora però la scheda dovrebbe rimanere accesa, e infatti il bbswitch me la lascia accesa:

Codice: Seleziona tutto

dmesg | grep -i bbswitch
[    2.284154] bbswitch: version 0.8
[    2.284157] bbswitch: Found integrated VGA device 0000:00:02.0: \_SB_.PCI0.GFX0
[    2.284161] bbswitch: Found discrete VGA device 0000:02:00.0: \_SB_.PCI0.PEG0.PEGP
[    2.284224] bbswitch: detected an Optimus _DSM function
[    2.284268] bbswitch: Succesfully loaded. Discrete card 0000:02:00.0 is on
[    3.650239] bbswitch: disabling discrete graphics
[  683.492485] bbswitch: enabling discrete graphics
[  684.121245]  rtsx_pci_ms snd_timer rfkill memstick mei_me snd lpc_ich mei tpm_tis soundcore shpchp tpm usbhid thermal fan hid processor evdev wmi int3403_thermal battery mac_hid dell_smo8800 ac btrfs xor raid6_pq sd_mod crc_t10dif crct10dif_common rtsx_pci_sdmmc mmc_core atkbd libps2 ahci libahci xhci_hcd ehci_pci libata ehci_hcd crc32c_intel usbcore scsi_mod rtsx_pci usb_common i8042 serio bbswitch(O) i915 button intel_gtt i2c_algo_bit video drm_kms_helper drm i2c_core
però la scheda continua a rimanere morta, sembra a causa del modulo

Codice: Seleziona tutto

dmesg | grep -i nvidia
[    3.651871] nvidia: module license 'NVIDIA' taints kernel.
[    3.662393] nvidia 0000:02:00.0: Refused to change power state, currently in D0
[    3.669057] nvidia 0000:02:00.0: Refused to change power state, currently in D3
[    3.669127] nvidia: probe of 0000:02:00.0 failed with error -1
[    3.669322] NVRM: The NVIDIA probe routine failed for 1 device(s).
[    3.669324] NVRM: None of the NVIDIA graphics adapters were initialized!
[    3.669436] NVRM: NVIDIA init module failed!
[  684.121216] proc_dir_entry 'driver/nvidia' already registered
[  684.121217] Modules linked in: nvidia(PO+) uvcvideo ecb videobuf2_vmalloc videobuf2_memops videobuf2_core btusb v4l2_common bluetooth videodev smsc75xx media usbnet hid_multitouch 6lowpan_iphc hid_generic mii joydev mousedev arc4 ext4 crc16 mbcache jbd2 nls_iso8859_1 nls_cp437 coretemp vfat hwmon intel_rapl fat snd_hda_codec_hdmi x86_pkg_temp_thermal intel_powerclamp iwlmvm pn544_mei mei_phy kvm_intel pn544 hci mac80211 nfc kvm iTCO_wdt iTCO_vendor_support snd_hda_codec_realtek dell_wmi snd_hda_codec_generic mxm_wmi sparse_keymap crct10dif_pclmul crc32_pclmul ghash_clmulni_intel iwlwifi dell_laptop aesni_intel led_class dcdbas aes_x86_64 lrw gf128mul snd_hda_intel glue_helper ablk_helper cryptd snd_hda_controller cfg80211 snd_hda_codec microcode psmouse i2c_i801 serio_raw pcspkr snd_hwdep snd_pcm
[  684.121330]  [<ffffffffa0f2df9c>] nv_register_procfs+0x4c/0x1d0 [nvidia]
[  684.121353]  [<ffffffffa13be2a5>] nvidia_init_module+0x2a5/0x7c5 [nvidia]
[  684.121375]  [<ffffffffa13be7da>] ? nv_drm_init+0x15/0x15 [nvidia]
[  684.121398]  [<ffffffffa13be85f>] nvidia_frontend_init_module+0x85/0x826 [nvidia]
[  684.121690] [drm] Initialized nvidia-drm 0.0.0 20130102 for 0000:02:00.0 on minor 1
[  684.121693] NVRM: loading NVIDIA UNIX x86_64 Kernel Module  340.32  Tue Aug  5 20:58:26 PDT 2014
[  684.289959] nvidia 0000:02:00.0: irq 54 for MSI/MSI-X
[  690.027718] NVRM: nvidia_frontend_open: minor 0, module->open() failed, error -5


come vedete alla fine bbswitch me la abilita la discrete GPU, ma questa mi continua a non funzionare, ad ogni modo qui c'è il dmesg completo dopo aver lanciato optirun glxspheres64 -info.
a fronte di quel

Codice: Seleziona tutto

[  683.492485] bbswitch: enabling discrete graphics
continuo ad avere

Codice: Seleziona tutto

cat /proc/acpi/bbswitch 
0000:02:00.0 OFF
quindi non sono poi neanche sicuro che bbswitch funzioni correttamente


In conclusione il fatto che bbswitch alla fine mi abiliti la scheda mi fa pensare che il problema stia nel modulo del kernel o nel kernel stesso.

Ora l'ho anche scritto sul foro di arch, vediamo se sta volta almeno una risposta mi arriva :)

rik70
Iper Master
Iper Master
Messaggi: 2559
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 7.2.x-rt
Desktop: Openbox
Distribuzione: Arch Linux

Re: Nvidia Optimus

Messaggio da rik70 »

Infatti potrebbe essere un bug del driver ACPI.
Premesso che ne capisco quanto te, però il sospetto viene se si guarda il log:

Codice: Seleziona tutto

[  684.289959] nvidia 0000:02:00.0: irq 54 for MSI/MSI-X
[  684.291994] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20140424/nsarguments-95)
[  684.292035] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20140424/nsarguments-95)
[  684.292057] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20140424/nsarguments-95)
[  684.292079] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20140424/nsarguments-95)
[  684.292100] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20140424/nsarguments-95)
[  684.292121] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20140424/nsarguments-95)
[  684.292153] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20140424/nsarguments-95)
[  684.292174] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20140424/nsarguments-95)
[  689.985348] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20140424/nsarguments-95)
[  690.010023] NVRM: GPU at 0000:02:00.0 has fallen off the bus.
[  690.010031] NVRM: GPU at 0000:02:00.0 has fallen off the bus.
[  690.027694] NVRM: RmInitAdapter failed! (0x25:0x28:1196)
[  690.027701] NVRM: rm_init_adapter failed for device bearing minor number 0
[  690.027718] NVRM: nvidia_frontend_open: minor 0, module->open() failed, error -5
Vedi quel warning sull'ACPI? Viene ripetuto fino a quando salta fuori l'errore NVRM GPU.

L'ultima è provare ad aggiungere anche unload_state=1.
Quindi:

Codice: Seleziona tutto

options bbswitch load_state=1 unload_state=1
Comunque vada, hai buone info per fare un bug report sul sito del progetto bbswitch.
Ultima modifica di rik70 il gio 4 set 2014, 14:19, modificato 1 volta in totale.

Avatar utente
Procopio
Linux 3.x
Linux 3.x
Messaggi: 844
Iscritto il: ven 29 lug 2011, 11:50
Nome Cognome: Matteo Micheletto Oddino
Slackware: 14.2
Kernel: 4.4.14
Desktop: Awesome
Località: Torino

Re: Nvidia Optimus

Messaggio da Procopio »

con quello cambia il dmesg, non di poco, rispetto ai parametri 1,-1: prima di dare l'optirun: http://pastebin.com/YmJA0m6Z

dopo aver dato optirun glxspheres64 -info: http://pastebin.com/T5ubnSZL

rik70
Iper Master
Iper Master
Messaggi: 2559
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 7.2.x-rt
Desktop: Openbox
Distribuzione: Arch Linux

Re: Nvidia Optimus

Messaggio da rik70 »

Son tutte informazioni interessanti, ma noi a questo punto possiamo farci poco.

Codice: Seleziona tutto

[    3.491560] ACPI: Battery Slot [BAT1] (battery present)
[    3.495661] bbswitch: disabling discrete graphics
[    3.495674] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20140424/nsarguments-95)
[    3.497001] nvidia: module license 'NVIDIA' taints kernel.
[    3.497003] Disabling lock debugging due to kernel taint
[    3.508182] nvidia 0000:02:00.0: Refused to change power state, currently in D0
[    3.511811] ieee80211 phy0: Selected rate control algorithm 'iwl-mvm-rs'
[    3.514810] nvidia 0000:02:00.0: Refused to change power state, currently in D3
[    3.514904] NVRM: This is a 64-bit BAR mapped above 4GB by the system
NVRM: BIOS or the Linux kernel, but the PCI bridge
NVRM: immediately upstream of this GPU does not define
NVRM: a matching prefetchable memory window.
[    3.514908] NVRM: This may be due to a known Linux kernel bug.  Please
NVRM: see the README section on 64-bit BARs for additional
NVRM: information.
[    3.514914] nvidia: probe of 0000:02:00.0 failed with error -1
ACPI trova la batteria inserita, subito dopo bbswitch prova a disabilitare la scheda discreta, appare quel WARNING ACPI di prima, viene caricato il modulo nvidia - da chi: udev o bbswitch? - e fallisce dicendo che non può modificare il 'powerstate' della scheda.

Vuoi fare un tentativo estremo? Tanto poi è reversibile.
Crea un file /etc/modprobe.d/nvidia.conf e metteci dentro:

Codice: Seleziona tutto

blacklist nvidia
In questo modo udev viene fatto fuori per quanto riguarda il caricamento del modulo nvidia. Vediamo che succede.
Ci stai?
Vai: reboot e poi dmesg prima e dopo optirun.
Come sempre a tuo rischio.

rik70
Iper Master
Iper Master
Messaggi: 2559
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 7.2.x-rt
Desktop: Openbox
Distribuzione: Arch Linux

Re: Nvidia Optimus

Messaggio da rik70 »

P.s
Vai tranquillo che 'blacklistare' un modulo non ha mai ucciso nessuno.

Avatar utente
Procopio
Linux 3.x
Linux 3.x
Messaggi: 844
Iscritto il: ven 29 lug 2011, 11:50
Nome Cognome: Matteo Micheletto Oddino
Slackware: 14.2
Kernel: 4.4.14
Desktop: Awesome
Località: Torino

Re: Nvidia Optimus

Messaggio da Procopio »

fatto, questo è il dimesg prima: http://pastebin.com/4XvMVjZY

e questo il dmesg dopo optirun: http://pastebin.com/QBgwSUuh

rik70
Iper Master
Iper Master
Messaggi: 2559
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 7.2.x-rt
Desktop: Openbox
Distribuzione: Arch Linux

Re: Nvidia Optimus

Messaggio da rik70 »

Ahia. c'hai il nouveau in mezzo ai co...siddetti.

Codice: Seleziona tutto

NVRM: nouveau, rivafb, nvidiafb or rivatv 
NVRM: was loaded and obtained ownership of the NVIDIA device(s).
E' in blacklist il nouveau?

Avatar utente
Procopio
Linux 3.x
Linux 3.x
Messaggi: 844
Iscritto il: ven 29 lug 2011, 11:50
Nome Cognome: Matteo Micheletto Oddino
Slackware: 14.2
Kernel: 4.4.14
Desktop: Awesome
Località: Torino

Re: Nvidia Optimus

Messaggio da Procopio »

nope, ma io l'avevo proprio disinstallato! ora basta metterlo in blacklist?

rik70
Iper Master
Iper Master
Messaggi: 2559
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 7.2.x-rt
Desktop: Openbox
Distribuzione: Arch Linux

Re: Nvidia Optimus

Messaggio da rik70 »

Procopio ha scritto:nope, ma io l'avevo proprio disinstallato! ora basta metterlo in blacklist?
E di brutto anche. Fai come hai fatto con nvidia
/etc/modprobe.d/nouveau.conf

Codice: Seleziona tutto

blacklist nouveau
e riprova.

Rispondi