Bug 26349

Summary: nouveau_hybrid_setup: disables a discrete NVS 3100m on ThinkPad T410
Product: xorg Reporter: Pavel S. <pav_s>
Component: Driver/nouveauAssignee: Nouveau Project <nouveau>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium CC: mjg59
Version: git   
Hardware: All   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
acpidump
none
lspci before loading nouveau
none
acpidump
none
Fix nouveau state detection none

Description Pavel S. 2010-01-31 07:53:46 UTC
steps to reproduce:
 load the nouveau module (e.g. start fedora install, or so)

result:
 black screen & garbage in lspci

expected result:
 kms init + hi-res cnsole

explanation:

the module fails with the message
  [drm] nouveau 0000:01:00.0: _DSM hardware status gave 0x30040e3
  [drm] nouveau 0000:01:00.0: Unsupported chipset 0xffffffff

after a failed probe of the card, that disables the card:

01:00.0 VGA compatible controller: nVidia Corporation Device 0a6c (rev a2) (prog-if 00 [VGA controller])
	Subsystem: Lenovo Device 2142
	Flags: bus master, fast devsel, latency 0, IRQ 11
	Memory at cc000000 (32-bit, non-prefetchable) [size=16M]
	Memory at d0000000 (64-bit, prefetchable) [size=256M]
	Memory at ce000000 (64-bit, prefetchable) [size=32M]
	I/O ports at 2000 [size=128]
	[virtual] Expansion ROM at cd000000 [disabled] [size=512K]
	...


turns into 

01:00.0 VGA compatible controller: nVidia Corporation Device 0a6c (rev ff) (prog-if ff)
	!!! Unknown header type 7f


After changing  (result & 0x1) to (!(result & 0x1)) in nouveau_hybrid_setup everything works as expected.
Comment 1 Matthew Garrett 2010-01-31 15:26:04 UTC
Is this a hybrid graphics system?
Comment 2 Pavel S. 2010-02-01 03:49:37 UTC
(In reply to comment #1)
> Is this a hybrid graphics system?
> 

Im' sorry, I forgot that last part of my post...

As far as I know it is something in between a real hybrid an just the discrete graphics: the NVS 3100m is built on the mainboard, while there is Intel's GPU on the Arrandale CPU (connected through QPI AFAIK). At lest it should be there -  I have neither seen it in the device manager in windows, nor in lspci. Windows 7 can switch to "low power graphics" though...

( Does anybody know about these Arrandale GPU's? )
Comment 3 Matthew Garrett 2010-02-01 04:52:44 UTC
Ok - can you install the pmtools package and run the acpidump command as root, then attach the output?
Comment 4 Pavel S. 2010-02-01 05:28:22 UTC
Created attachment 32966 [details]
acpidump
Comment 5 Pavel S. 2010-02-01 05:30:26 UTC
Created attachment 32967 [details]
lspci before loading nouveau
Comment 6 Pavel S. 2010-02-01 06:03:55 UTC
Created attachment 32969 [details]
acpidump

I screwed my BIOS configuration with VT-d (and did no notice it), so the fist dump was probably no the right one...
Comment 7 Matthew Garrett 2010-02-01 15:30:56 UTC
Created attachment 32984 [details] [review]
Fix nouveau state detection

Can you try this patch?
Comment 8 Pavel S. 2010-02-04 14:26:48 UTC
(In reply to comment #7)
> Created an attachment (id=32984) [details]
> Fix nouveau state detection
> 
> Can you try this patch?
> 

I tested it on 2.6.33-rc6 and it worked for me, thanks!
(should I test it on git too?)
Comment 9 Matthew Garrett 2010-02-04 14:29:01 UTC
No, that should be fine. I'll test it on the machine I have here and then send it upstream.
Comment 10 Pavel S. 2010-02-09 01:57:24 UTC
(In reply to comment #9)
> No, that should be fine. I'll test it on the machine I have here and then send
> it upstream.
> 

I have some news, which prove some assumptions about T410:
although there is that Intel GPU on the CPU, it is not activated, and cannot be used in any way (AFAIK it is not connected to the mainboard so it cannot output anything). This means that this Thinkpad does not have hybrid graphics.
Comment 11 Ben Skeggs 2010-02-09 20:12:09 UTC
I've also tested this on T410, and after talking to Matthew, committed the fix.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.