Hi Lukas ----- Mail original ----- > Hi Pierre, > > On Thu, May 28, 2015 at 10:52:56AM +0200, Pierre Moreau wrote: > > How is it supposed to work, by simply echo'ing ON or OFF to > > vga_switcheroo/switch? Then I probably forgot some stuff as > > it doesn't want to work on my laptop. > > What exactly doesn't work and which version of the MacBook Pro did > you try this on? The expected behaviour when switching GPUs on the > MBP is that the GPU that was inactive on bootup will only show a > black screen because it was unable to read the EDID (and DPCD on > retina MBPs) on bootup. In other words, it's broken. I'm trying on a mid-2009 MBP, which has a double NVidia setup with a 9400M as IGD and 9600M GT as DIS. Switching between both works (as long as do a PCI-reset of the G96, but that's another story and I should have a patch soon, hopefully). It was also tested by another user on a retina MBP and we ran into the black screen issue. I pointed him to your patches, but I don't know yet if it helped or not. > > There have been attempts to solve this by multiple folks, the last > one was submitted to dri-devel in April by yours truly: > http://lists.freedesktop.org/archives/dri-devel/2015-April/081515.html > > That initial version of my patch set turned out to only work on > pre-retina MBPs, and only if the active GPU on bootup is the > discrete one. I'm currently working on a v2 to solve all that. Cool! Looking forward to it! > > We need to get switching working before we can enable runtime PM on > MBPs, otherwise the user will be greeted by a black screen when the > Nvidia GPU goes to sleep and hands over to the integrated GPU. > So your patch is a bit premature I'm afraid. :-( It's power management++: we even save energy on the screen by "powering it off" for better battery life! ;) > > > As to the patch itself, you're checking for existence of the gmux > but we can't make use of it unless its driver is loaded. Hence it > may be easier to simply query for the existence of the driver, > using something along the lines of find_module("apple-gmux"). > I imagine this is much less code than checking for the DMI IDs. I didn't know there was such a function! Seems nice! > > Also, Dave Airlie and Matthew Garrett already wrote a patch set to > enable runtime PM for nouveau on MBPs which is more generic: It works > with any vga_switcheroo handler, not just gmux: > > http://lists.freedesktop.org/archives/dri-devel/2014-June/060927.html > http://lists.freedesktop.org/archives/dri-devel/2014-June/060928.html > http://lists.freedesktop.org/archives/dri-devel/2014-June/060942.html > http://www.codon.org.uk/~mjg59/tmp/retina_patches/0027-nouveau-enable-runtime-pm-on-apple-gmux-machines.patch > http://www.codon.org.uk/~mjg59/tmp/retina_patches/0028-nouveau-Enable-switcheroo-dynamic-PM-at-switcheroo-e.patch > > The fourth one in that list is by Dave Airlie and all the others are > by Matthew Garrett. But, as I said, we can't apply these either until > switching works. I'm working on it. ;-) I had no idea these patches existed: I should have looked around before. I'll drop the patches, apart probably from the *cleaning* ones, but I'll wait for the previously mentioned ones to first land. > > > As to your questions: > > > How is it supposed to work, by simply echo'ing ON or OFF to > > vga_switcheroo/switch? > > Echoing ON/OFF to the "switch" file will power the inactive device > up or down. If the currently active gpu is the discrete one (which > is the default when booting a MacBook Pro) Not on the mid-2009 MBP! ;) Which is great! > , this will power up/down > the integrated gpu. You can use the tool "gpu-switch" to force the > MBP to the integrated GPU on next bootup, then you can echo ON/OFFI'ddd > to change the power state of the Nvidia GPU: > https://github.com/0xbb/gpu-switch > > > If I understand it correctly, if the laptop is an Optimus one or > > has a mux, we are not "allowed" to opt-out of DynPwr/DynOff by > > powering down the card? > > If we power the GPU down manually by echoing OFF to the "switch" > file, the runtime PM code would probably get confused, I imagine > that's the reason why ON/OFF is ignored if > client->driver_power_control > is set to true. I would have guessed that runtime pm would then get disabled. > > Speaking of which, the external ports of the MBP are soldered to > the discrete GPU and can't be switched. Only the panel can be > switched. So if there are DP or HDMI connectors with status > connected, we can't suspend. That's one of the MBP's numerous > peculiarities that I haven't verified yet they're handled properly > by the code. I could check that on my MBP if you want. Best regards, Pierre > > Best regards, > > Lukas > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel