[NVC1] Delays when using nouveau and switcheroo
Submitted by janh
Assigned to Nouveau Project
Description
Created attachment 85566
lspci output
First of all: you did a very good job! Actually I wanted to report an X server crash and a kernel panic in nouveau/vgaswitcheroo in Ubuntu 13.04, but now that I installed the latest version of nouveau I see that these bugs are gone! However, there are still some other bugs in the latest version that I want to report.
Kernel version: 3.11.0-031100-generic
DRM version: 1.1.0 20060810
Nouveau version: 1.1.1 20120801
I did a out-of-tree compilation using the nouveau snapshot of today.
My notebook (Medion Akoya P6624) uses a Nvidia GeForce GT 425M together with an Intel HD graphics card. X is not involved in these reports. I always booted to console and never started X. To make it clear how long a command took to execute, I used a script that logs to dmesg and syslog when a command started executing and when it was done. The commands of each report were executed directly after boot. The output of "cat /sys/kernel/debug/vgaswitcheroo/switch" after boot is always
0:IGD:+:Pwr:0000:00:02.0
1:DIS: :Pwr:0000:01:00.0
- Switching the dedicated card off takes 45 seconds and reports some errors
1.1) Switch dedicated card off:
dmesg output:
[ 109.787177] Before "echo OFF > /sys/kernel/debug/vgaswitcheroo/switch"
[ 109.787404] VGA switcheroo: switched nouveau off
[ 109.787476] ACPI Warning: \_SB_.PCI0.P0P1.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20130517/nsarguments-95)
[ 109.787830] nouveau [ DRM] suspending fbcon...
[ 109.787836] nouveau [ DRM] suspending display...
[ 109.787841] nouveau [ DRM] unpinning framebuffer(s)...
[ 109.787893] nouveau [ DRM] evicting buffers...
[ 139.807186] nouveau [ DRM] waiting for kernel channels to go idle...
[ 154.814513] nouveau E[ DRM] failed to idle channel 0xcccc0001 [DRM]
[ 154.819750] After "echo OFF > /sys/kernel/debug/vgaswitcheroo/switch"
"cat /sys/kernel/debug/vgaswitcheroo/switch" output:
0:IGD:+:Pwr:0000:00:02.0
1:DIS: :Off:0000:01:00.0
1.2) Switch dedicated card back on:
dmesg output:
[ 188.129397] Before "echo ON > /sys/kernel/debug/vgaswitcheroo/switch"
[ 188.129674] VGA switcheroo: switched nouveau on
[ 188.129765] nouveau [ DRM] re-enabling device...
[ 188.129783] nouveau [ DRM] resuming kernel object tree...
[ 188.129871] nouveau [ DRM] resuming client object trees...
[ 188.129877] nouveau [ DRM] resuming display...
[ 188.129890] nouveau E[ DRM] Could not pin/map cursor.
[ 188.129980] nouveau E[ DRM] Could not pin/map cursor.
[ 188.135706] After "echo ON > /sys/kernel/debug/vgaswitcheroo/switch"
"cat /sys/kernel/debug/vgaswitcheroo/switch" output:
0:IGD:+:Pwr:0000:00:02.0
1:DIS: :Pwr:0000:01:00.0
2) Unloading and loading nouveau takes almost a minute (~40s + ~15s) and reports some errors
2.1) Unload nouveau:
dmesg output:
[ 81.873603] Before "modprobe -r nouveau"
[ 96.894475] nouveau E[ DRM] failed to idle channel 0xcccc0000 [DRM]
[ 98.896050] nouveau E[ PFIFO][0000:01:00.0] channel 1 [DRM] kick timeout
[ 100.897626] nouveau E[ PFIFO][0000:01:00.0] playlist update failed
[ 100.897812] nouveau W[ PFIFO][0000:01:00.0] INTR 0x00000001: 0x00000003
[ 115.906124] nouveau E[ DRM] failed to idle channel 0xcccc0001 [DRM]
[ 117.907634] nouveau E[ PFIFO][0000:01:00.0] channel 0 [DRM] kick timeout
[ 119.909206] nouveau E[ PFIFO][0000:01:00.0] playlist update failed
[ 119.910780] [TTM] Finalizing pool allocator
[ 119.910790] [TTM] Finalizing DMA pool allocator
[ 119.910871] [TTM] Zone kernel: Used memory at exit: 0 kiB
[ 119.910877] [TTM] Zone highmem: Used memory at exit: 0 kiB
[ 119.910883] vga_switcheroo: disabled
[ 119.913110] [drm] Module unloaded
[ 119.941120] After "modprobe -r nouveau"
2.2) Load nouveau:
dmesg output:
[ 161.070144] Before "modprobe nouveau"
[ 161.145759] MXM: GUID detected in BIOS
[ 161.145810] ACPI Warning: \_SB_.PCI0.GFX0._DSM: Argument #4 type mismatch - Found [Integer], ACPI requires [Package] (20130517/nsarguments-95)
[ 161.146039] ACPI Warning: \_SB_.PCI0.GFX0._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20130517/nsarguments-95)
[ 161.146226] ACPI Warning: \_SB_.PCI0.P0P1.PEGP._DSM: Argument #4 type mismatch - Found [Integer], ACPI requires [Package] (20130517/nsarguments-95)
[ 161.146315] ACPI Warning: \_SB_.PCI0.P0P1.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20130517/nsarguments-95)
[ 161.146418] VGA switcheroo: detected Optimus DSM method \_SB_.PCI0.P0P1.PEGP handle
[ 161.146980] nouveau [ DEVICE][0000:01:00.0] BOOT0 : 0x0c1800a1
[ 161.146984] nouveau [ DEVICE][0000:01:00.0] Chipset: GF108 (NVC1)
[ 161.146987] nouveau [ DEVICE][0000:01:00.0] Family : NVC0
[ 161.148457] nouveau [ VBIOS][0000:01:00.0] checking PRAMIN for image...
[ 161.148466] nouveau [ VBIOS][0000:01:00.0] ... signature not found
[ 161.148468] nouveau [ VBIOS][0000:01:00.0] checking PROM for image...
[ 161.148523] nouveau [ VBIOS][0000:01:00.0] ... signature not found
[ 161.148524] nouveau [ VBIOS][0000:01:00.0] checking ACPI for image...
[ 174.524023] nouveau [ VBIOS][0000:01:00.0] ... appears to be valid
[ 174.524029] nouveau [ VBIOS][0000:01:00.0] using image from ACPI
[ 174.524253] nouveau [ VBIOS][0000:01:00.0] BIT signature found
[ 174.524258] nouveau [ VBIOS][0000:01:00.0] version 70.08.19.00.21
[ 174.525052] nouveau [ PFB][0000:01:00.0] RAM type: DDR3
[ 174.525058] nouveau [ PFB][0000:01:00.0] RAM size: 512 MiB
[ 174.525063] nouveau [ PFB][0000:01:00.0] ZCOMP: 0 tags
[ 174.557517] nouveau [ PTHERM][0000:01:00.0] FAN control: none / external
[ 174.557528] nouveau [ PTHERM][0000:01:00.0] fan management: disabled
[ 174.557533] nouveau [ PTHERM][0000:01:00.0] internal sensor: yes
[ 174.566347] vga_switcheroo: enabled
[ 174.566659] [TTM] Zone kernel: Available graphics memory: 426710 kiB
[ 174.566666] [TTM] Zone highmem: Available graphics memory: 1963648 kiB
[ 174.566669] [TTM] Initializing pool allocator
[ 174.566681] [TTM] Initializing DMA pool allocator
[ 174.566705] nouveau [ DRM] VRAM: 512 MiB
[ 174.566709] nouveau [ DRM] GART: 1048576 MiB
[ 174.566719] nouveau [ DRM] TMDS table version 2.0
[ 174.566723] nouveau [ DRM] DCB version 4.0
[ 174.566729] nouveau [ DRM] DCB outp 00: 02021300 00000000
[ 174.566735] nouveau [ DRM] DCB conn 00: 00000040
[ 174.566741] nouveau [ DRM] DCB conn 01: 00000100
[ 174.566745] nouveau [ DRM] DCB conn 02: 00002261
[ 174.568326] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[ 174.568331] [drm] No driver support for vblank timestamp query.
[ 174.568337] nouveau [ DRM] ACPI backlight interface available, not registering our own
[ 174.568543] nouveau [ DRM] 3 available performance level(s)
[ 174.568547] nouveau [ DRM] 0: core 50MHz shader 101MHz memory 135MHz voltage 830mV
[ 174.568549] nouveau [ DRM] 1: core 202MHz shader 405MHz memory 324MHz voltage 830mV
[ 174.568552] nouveau [ DRM] 3: core 560MHz shader 1120MHz memory 800MHz voltage 900mV
[ 174.568555] nouveau [ DRM] c: core 202MHz shader 405MHz memory 324MHz voltage 900mV
[ 174.586084] nouveau [ DRM] MM: using COPY0 for buffer copies
[ 174.596625] nouveau 0000:01:00.0: No connectors reported connected with modes
[ 174.596649] [drm] Cannot find any crtc or sizes - going 1024x768
[ 174.619661] nouveau E[ PBUS][0000:01:00.0] MMIO write of 0x00000401 FAULT at 0x002010 [ IBUS TIMEOUT ]
[ 174.711581] nouveau [ DRM] allocated 1024x768 fb: 0x60000, bo f653bc00
[ 174.711815] nouveau 0000:01:00.0: fb1: nouveaufb frame buffer device
[ 174.711824] [drm] Initialized nouveau 1.1.1 20120801 for 0000:01:00.0 on minor 1
[ 174.714771] After "modprobe nouveau"
3) Can't switch to dedicated graphics card
3.1) Switch to Nvidia card
Result: Screen turns off (including backlight). Everything else still works, commands entered through the keyboard and SSH are still executed.
dmesg output:
[ 82.843529] Before "echo DDIS > /sys/kernel/debug/vgaswitcheroo/switch"
[ 82.989327] nouveau E[ DRM] GPU lockup - switching to software fbcon
[ 83.196574] fbcon: Remapping primary device, fb1, to tty 1-63
[ 83.207133] i915: switched off
[ 83.688663] After "echo DDIS > /sys/kernel/debug/vgaswitcheroo/switch"
"cat /sys/kernel/debug/vgaswitcheroo/switch" output:
0:IGD: :Off:0000:00:02.0
1:DIS:+:Pwr:0000:01:00.0
3.2) Re-enable Intel card
Result: Backlight turns on again but the screen is black.
dmesg output:
[ 183.941797] Before "echo ON > /sys/kernel/debug/vgaswitcheroo/switch"
[ 183.942058] i915: switched on
[ 183.957639] i915 0000:00:02.0: setting latency timer to 64
[ 184.421649] After "echo ON > /sys/kernel/debug/vgaswitcheroo/switch"
"cat /sys/kernel/debug/vgaswitcheroo/switch" output:
0:IGD: :Pwr:0000:00:02.0
1:DIS:+:Pwr:0000:01:00.0
3.3) Switch to intel card
Result: Screen works again.
dmesg output:
[ 276.129781] Before "echo DIGD > /sys/kernel/debug/vgaswitcheroo/switch"
[ 276.434822] fbcon: Remapping primary device, fb0, to tty 1-63
[ 276.434829] VGA switcheroo: switched nouveau off
[ 276.434846] ACPI Warning: \_SB_.PCI0.P0P1.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20130517/nsarguments-95)
[ 276.435073] nouveau [ DRM] suspending fbcon...
[ 276.435077] nouveau [ DRM] suspending display...
[ 276.435080] nouveau [ DRM] unpinning framebuffer(s)...
[ 276.435128] nouveau [ DRM] evicting buffers...
[ 306.454470] nouveau [ DRM] waiting for kernel channels to go idle...
[ 321.461603] nouveau E[ DRM] failed to idle channel 0xcccc0001 [DRM]
[ 321.466829] After "echo DIGD > /sys/kernel/debug/vgaswitcheroo/switch"
"cat /sys/kernel/debug/vgaswitcheroo/switch" output:
0:IGD:+:Pwr:0000:00:02.0
1:DIS: :Off:0000:01:00.0
AFAIK the Nvidia graphics card sends its output to the Intel card, which is responsible for the graphics output to the screen. So I guess the problem is that switcheroo disables the Intel card which causes the graphics output to stop.
I would be glad if someone could take a look at these issues. Please let me know if I should supply more logs or try out a different version.
**Attachment 85566**, "lspci output":
lspci.txt