Bug 106271
Summary: | Switch between AMD hybrid graphics (HD 8650G / HD 8970M) makes hardware reset. | ||
---|---|---|---|
Product: | Drivers | Reporter: | Aneroid (aneroid) |
Component: | Video(DRI - non Intel) | Assignee: | drivers_video-dri |
Status: | NEW --- | ||
Severity: | normal | CC: | alexdeucher, lukas |
Priority: | P1 | ||
Hardware: | x86-64 | ||
OS: | Linux | ||
Kernel Version: | 4.2.3 | Subsystem: | |
Regression: | No | Bisected commit-id: | |
Attachments: |
lspci -vvv
glxinfo dmesg dmesg after Xorg fall Xorg.log Kernel crash log |
Created attachment 190541 [details]
glxinfo
Created attachment 190551 [details]
dmesg
The pitcairn GPU says "No connectors reported connected with modes". I suppose that's the discrete GPU? Does this machine have a hardware mux at all? If not, the discrete GPU can only be used to offload rendering and switching won't work. I guess the only thing that can be improved in this case is to make radeon_atpx_switchto() a no-op on muxless machines. If on the other hand the machine *does* have a mux, the question is why the pitcairn GPU didn't find any modes. Are there none in VBT? If so, the issue can probably be solved by temporarily switching DDC to the discrete GPU on probe. I'm working on patches to do that with apple-gmux on the MacBook Pro. According to the log, the dGPU has a single VGA port. I doubt it's muxed, just about all AMD PX laptops have been muxless for a while now. It's probably a VGA port on a docking station. As Lukas mentioned, if you want to use the dGPU, you can only use it for offscreen rendering. See this page for how to utilize that functionality: http://nouveau.freedesktop.org/wiki/Optimus/ Yes, I try to do that. xrandr --listproviders Providers: number : 2 Provider 0: id: 0x7e cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 4 outputs: 4 associated providers: 0 name:radeon Provider 1: id: 0x46 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 6 outputs: 1 associated providers: 0 name:radeon xrandr --setprovideroffloadsink 0x7e 0x46 And it ruined my xorg completely. X fall out in to the shell without any errors. I could switch between graphics card on flgrx driver with "aticonfig --px-dgpu" and "aticonfig --px-igpu". It worked well. But now, it seems that I stuck in low power graphics mode and I can't switch to my power card. ' glxinfo always show me AMD ARUBA chip: glxinfo | grep "OpenGL renderer" OpenGL renderer string: Gallium 0.4 on AMD ARUBA (DRM 2.43.0, LLVM 3.7.0) DRI_PRIME=1 glxinfo | grep "OpenGL renderer" OpenGL renderer string: Gallium 0.4 on AMD ARUBA (DRM 2.43.0, LLVM 3.7.0) DRI_PRIME=0 glxinfo | grep "OpenGL renderer" OpenGL renderer string: Gallium 0.4 on AMD ARUBA (DRM 2.43.0, LLVM 3.7.0) (In reply to Aneroid from comment #5) > Yes, I try to do that. > > xrandr --listproviders > Providers: number : 2 > Provider 0: id: 0x7e cap: 0xf, Source Output, Sink Output, Source Offload, > Sink Offload crtcs: 4 outputs: 4 associated providers: 0 name:radeon > Provider 1: id: 0x46 cap: 0xf, Source Output, Sink Output, Source Offload, > Sink Offload crtcs: 6 outputs: 1 associated providers: 0 name:radeon > > xrandr --setprovideroffloadsink 0x7e 0x46 You've got the arguments reversed; the first is the offload device, the second is the display device. Try: xrandr --setprovideroffloadsink 0x46 0x7e > > And it ruined my xorg completely. X fall out in to the shell without any > errors. Can you attach your dmesg output and xorg log when you do that? Does adding amdgpu.runpm=0 to the kernel command line in grub help? (In reply to Alex Deucher from comment #6) > > You've got the arguments reversed; the first is the offload device, the > second is the display device. Try: > > xrandr --setprovideroffloadsink 0x46 0x7e Ok. [an@GX60 ~]$ xrandr --setprovideroffloadsink 0x46 0x7e [an@GX60 ~]$ DRI_PRIME=0 glxinfo | grep "OpenGL renderer" OpenGL renderer string: Gallium 0.4 on AMD ARUBA (DRM 2.43.0, LLVM 3.7.0) [an@GX60 ~]$ DRI_PRIME=1 glxinfo | grep "OpenGL renderer" OpenGL renderer string: Gallium 0.4 on AMD ARUBA (DRM 2.43.0, LLVM 3.7.0) But in that case nothing happend at all. > > > > And it ruined my xorg completely. X fall out in to the shell without any > > errors. > > Can you attach your dmesg output and xorg log when you do that? > > Does adding amdgpu.runpm=0 to the kernel command line in grub help? This line does not change anything either. Created attachment 191621 [details]
dmesg after Xorg fall
Created attachment 191631 [details]
Xorg.log
Created attachment 191771 [details]
Kernel crash log
Very strange things happend.
Kernel crash on every reboot now.
It looks like kernel switch on pitcairin card, but can't boot from it.
I remove any kernel options.
May be the root of that problem is that Radeon HD 8970M is not a Pitcairn card ? It is a Neptune XT, some kind of mobile version: http://www.techpowerup.com/gpudb/1966/radeon-hd-8970m.html (In reply to Aneroid from comment #11) > May be the root of that problem is that Radeon HD 8970M is not a Pitcairn > card ? > > It is a Neptune XT, some kind of mobile version: > http://www.techpowerup.com/gpudb/1966/radeon-hd-8970m.html Neptune is the just the code name for mobile Pitcairn chips. Ok. But this strange error: "radeon 0000:01:00.0: VCE init error (-22)." What does it mean ? (In reply to Aneroid from comment #13) > Ok. > > But this strange error: "radeon 0000:01:00.0: VCE init error (-22)." > What does it mean ? The video encoding engine failed to initialize. This is a known issue on certain SI parts, but is harmless unless you need to use the encoding engine. |
Created attachment 190531 [details] lspci -vvv Hello, Hardware: MSI GX60 with two graphic cards, integrated inside A10 GPU and discrete AMD R9 M290X. Integrated card is the main card by default: sudo cat /sys/kernel/debug/vgaswitcheroo/switch 0:IGD:+:Pwr:0000:00:01.0 1:DIS: :DynOff:0000:01:00.0 If I try to swich to discrete card: sudo echo DIS > /sys/kernel/debug/vgaswitcheroo/switch Hardware reboot happend and BIOS starting.