Hi Peter, I blacklisted both nvidia and nouveau during boot and did exactly these eight steps. I used dd to save the config space, if that is of any importance (e.g. "dd if=/sys/bus/pci/devices/0000:01:00.0/config of=7-restored").
Because I'm not sure wether the pci_save/restore_state functions work I did the test twice. You can find the results for the run with pci_save/restore_state at http://andreas.meetr.de/nouveau/pcs/ and the one without at http://andreas.meetr.de/nouveau/pcs-2. Both lead to the same result, the vbios is not accessible. http://andreas.meetr.de/nouveau/nouveau.dmesg shows how a normal boot with nouveau looks like. Cheers, Andreas Am 08.03.2012 um 21:31 schrieb Lekensteyn: > Hi Andreas, > > What about nouveau? The blob sometimes do not get completely unloaded > (/dev/nvidia* devices then still > exist). > > What if the following steps are followed: > > 1. ensure that the blob has not been loaded (reboot if necessary) > 2. unload nouveau if necessary > 3. save pci configuration space > 4. disable card > 5. save pci configuration space, it should be all 1's (ff in xxd) > 6. enable card > 7. save pci configuration space, it should be similar to (3) > 8. load the nouveau driver, does it work? > > Regards, > Peter > > On Thu, Mar 8, 2012 at 7:17 PM, Andreas Heider <andr...@meetr.de> wrote: > Hi Peter, > > I'm already saving the pci configuration space with pci_save/restore_state > and I've also tried manually changing it through /sys/bus/pci/..., but I > still have the problem that the blob can't load the vbios. > > I've uploaded dumps of it, maybe you can spot something thats obviously wrong > with it: > 1. After boot: http://andreas.meetr.de/gmux/nv.config > 2. After one powercycle: http://andreas.meetr.de/gmux/nv.bad.config > 3. After one powercycle and copying the first config space back: > http://andreas.meetr.de/gmux/nv.bad.config_restored > > Unfortunately this still gives me the NVRM: RmInitAdapter failed! > (0x30:0xffffffff:858) error. > > Thanks, > Andreas > > > Am 08.03.2012 um 12:38 schrieb Lekensteyn: > >> Hi Andreas, >> >> I've documented about the PCI configuration space issue on >> http://wiki.bumblebee-project.org/ACPI-for-Developers. Bumblebee also saves >> and restores the PCI configuration space before enabling/after disabling. >> >> Regards, >> Peter >> >> On Thu, Mar 8, 2012 at 2:47 AM, Andreas Heider <andr...@meetr.de> wrote: >> Hi everyone, >> >> I'll just continue using this mailing list as a blog. After a lot of >> wild guesses in all directions I now have a setup that could be a base >> for useful graphics switching on Macbook Pros. It's not completely >> reliable yet but hopefully that will improve in the future. >> >> Switching between two running GPUs works pretty well and just needs a >> bit more work. But that shouldn't be a big issue. >> >> The main problem I fought with is that after powering down the external >> GPU the vbios vanishes and it's impossible to load the proprietary >> nvidia driver: >> >> [ 214.505208] NVRM: failed to copy vbios to system memory. >> [ 214.507347] NVRM: RmInitAdapter failed! (0x30:0xffffffff:858) >> [ 214.507357] NVRM: rm_init_adapter(0) failed >> >> The same problem exists with nouveau, after the first power cycle >> nouveau doesn't load again if I unload it. I guess this is actually a >> BIOS/EFI/firmware bug, since Apple's switching driver just keeps the >> driver loaded. >> >> So it's necessary to load the driver once and keep it loaded. This works >> well with nouveau+vga_switcheroo but is a bit problematic with the >> blob. >> >> At the moment I have the blob running with the patch from my first mail >> and noticed that it survives a powercycle if X _is_ loaded while the GPU >> is powered down. If I shutdown X I get this error when I try to start it >> again afterwards: >> >> [ 144.390920] NVRM: RmInitAdapter failed! (0x26:0xffffffff:1170) >> [ 144.390930] NVRM: rm_init_adapter(0) failed >> >> I'm not 100% certain that this really works but at the moment it's the >> only possibility for getting full switching support with the blob. >> >> Speaking of nvidia bugs, I also had problems with the blob not reliably >> loading when I boot with EFI. >> Luckily it's possible to also enable the integrated card in BIOS >> emulation mode. After staring a lot at the output of lspci -xxx from >> both EFI and BIOS boot I noticed that this just requires flipping one >> bit in the pci configuration space. This can be done by adding "setpci >> -d 8086:0044 54.b=0b" in grub. This value will most likely only work for >> this exact model, a MBP 6,2. For more information see >> http://download.intel.com/design/processor/datashts/322813.pdf page 62. >> >> If anyone has some hints how to better deal with the blob that would be >> greatly appreciated. >> >> On Wed, 2012-02-29 at 10:33 +0100, Lekensteyn wrote: >> > Hi Andreas, >> > >> > I'm using nouveau + bbswitch (switcheroo also works, but not after >> > resume), not on >> > a mac, but a Clevo B7130 (branded as "BTO P-BOOK 17CL34"). >> > >> > The restoration of the PCI configuration space is a hack to allow the >> > driver to load >> > in case it was accidentally loaded while the card was off. This is >> > especially necessary >> > for the nvidia blob driver which loads itself if you try to >> > access /dev/nvidia* devices. >> > >> > In the case of switcheroo, no driver is attempted to be unloaded (see >> > the second field >> > of the switching_method struct and line 30 of src/switch/switching.c. >> >> Sorry, that was my fault. I changed that for testing purposes and then >> forgot about it. >> >> > >> > gmux can be integrated into BB. Writing a new switcher module >> > (src/switch/gmux.c) >> > which also takes care of loading the switcheroo module (only if that >> > is a safe operation!) >> > should do the trick. Just be careful not to conflict with switcheroo. >> > The other way is leave >> > BB as it and require users to load gmux before BB. >> >> Because of vbios situation and nouveau already working pretty well with >> switcheroo I'd prefer to keep using that. >> > >> > Regards, >> > Peter >> >> Cheers, >> Andreas >> >> > >> > On Wed, Feb 29, 2012 at 12:25 AM, Andreas Heider <andr...@meetr.de> >> > wrote: >> > Hi Peter, >> > >> > I took another look at bumblebee today and got it running with >> > nouveau! >> > Bumblebee automatically powers the nvidia card down when it's >> > not in >> > use and starting programs with optirun works well. >> > >> > This required a dirty hack to bumblebee which you can find >> > here: >> > >> > https://github.com/ah-/Bumblebee/commit/c5ab6f0e7f841045cee6905bb367c79091b0eb6b >> > >> > The problem is that bumblebee wants to save/restore the pci >> > configuration >> > space, which is already done by nouveau. (See >> > https://gist.github.com/1935992) >> > >> > It also shouldn't try to unload the driver. >> > >> > Do you think this could somehow be integrated into bumblebee? >> > >> > Cheers, >> > Andreas >> > >> > On Tue, 2012-02-28 at 16:14 +0100, Lekensteyn wrote: >> > > Hi Andreas, >> > > >> > > vga_switcheroo is a supported method since Bumblebee 3.0, >> > but I >> > > assumed that >> > > it would not be used for the nvidia driver. If you wish to >> > use the >> > > nvidia blob with >> > > switcheroo, you have to recompile Bumblebee and apply commit >> > > 85636d1f21b0644e7dd47e3931479860c55b7a05 (or use the develop >> > branch). >> > > The >> > > next version will have this change too. >> > > >> > > One shortcoming of vga_switcheroo now is that the state is >> > messed up >> > > after >> > > suspend: switcheroo remembered that the card was off, but in >> > reality >> > > the card >> > > is on. The module bbswitch worked around this by enabling >> > the card >> > > before >> > > suspend and disabling the card on resume. >> > > >> > > In some cases, while the card was turned off with switcheroo >> > caused >> > > the machine >> > > to lock when the card is tried to be accessed. If switcheroo >> > is not an >> > > option for >> > > Bumblebee, you can write your own switching code. See the >> > src/switch/ >> > > directory >> > > for examples. >> > > >> > > Regards, >> > > Peter >> > > (Bumblebee and bbswitch developer) >> > > >> > > On Tue, Feb 28, 2012 at 3:16 PM, Andreas Heider >> > <andr...@meetr.de> >> > > wrote: >> > > Hello everybody, >> > > >> > > I'm developing a vga_switcheroo driver for the Apple >> > Macbook >> > > Pro models >> > > with switchable graphics and have a few questions >> > about how to >> > > integrate >> > > it with the current linux hybrid graphics >> > infrastructure. >> > > >> > > >> > > Apple implemented the switching using a "chip" >> > dubbed the >> > > "gmux" (probably short for graphics multiplexer or >> > something >> > > similar). >> > > The gmux can power down the external graphics card, >> > switch the >> > > DDC, >> > > internal and external display connections >> > (individually) >> > > between both >> > > cards and set the backlight brightness. Unlike most >> > newer >> > > laptops with >> > > hybrid graphics, Apple's Macbook Pros use a physical >> > mux. >> > > >> > > Luckily the gmux has remained mostly the same >> > between all >> > > models with >> > > switchable graphics, so it should be possible to >> > develop one >> > > driver that >> > > supports all of them. >> > > >> > > >> > > This driver has actually been lying around in >> > unfinished state >> > > for some >> > > time now, until Seth Forshee from Canonical recently >> > rewrote >> > > it into a >> > > clean, backlight-only driver that will hopefully >> > find it's way >> > > into >> > > mainline soon. >> > > >> > > My goal is to use Seth's work as a base and add the >> > other >> > > features back >> > > again and make it work well. A first version is >> > already >> > > working and up >> > > at https://github.com/ah-/gmux >> > > >> > > This driver supports all vga_switcheroo operations >> > (discrete >> > > power >> > > on/off, display switching) and they all work on my >> > MBP 6,2 >> > > using the >> > > intel and nouveau drivers. >> > > >> > > But unfortunately, it doesn't work with bumbleebee >> > and/or the >> > > proprietary >> > > nvidia driver yet. >> > > >> > > >> > > Because I'm using CUDA in other projects, getting >> > the >> > > proprietary NVIDIA >> > > driver running well is very interesting to me. The >> > setup >> > > bumblebee plus >> > > intel + nvidia_current without power management >> > works well on >> > > my laptop >> > > if I switch to the intel card in grub. (It's just >> > three >> > > outbs). But that >> > > breaks suspend and uses 10W more power than >> > necessary. >> > > >> > > Does/should bumblebee work with a vga_switcheroo >> > driver just >> > > for ON/OFF? >> > > >> > > One thing I stumbled upon is a patch for the >> > proprietary >> > > NVIDIA >> > > driver originally written by "Kayo >> > <k...@illumium.org>" which >> > > adds >> > > some kind of vga_switcheroo support to it. I >> > modified it to >> > > just register >> > > with switcheroo (patch is attached), and that part >> > works well. >> > > Turning >> > > off the card works, but turning it on afterwards >> > doesn't. Any >> > > Ideas? >> > > >> > > >> > > Ultimately I'd like to get two scenarios/workflows >> > to work >> > > well: >> > > >> > > 1. Real switching, by disabling one card completely >> > and only >> > > using >> > > the other one, requiring a logout/login. >> > > Preferably using the NVIDIA driver. >> > > >> > > 2. Bumblebee switching with working power management >> > when the >> > > NVIDIA >> > > GPU is not in usw. >> > > >> > > >> > > I'd appreciate any comments and thoughts on how to >> > implement >> > > this and >> > > how to integrate it with the current hybrid graphics >> > > environment. >> > > >> > > Cheers, >> > > Andreas >> > > >> > > _______________________________________________ >> > > Mailing list: >> > https://launchpad.net/~hybrid-graphics-linux >> > > Post to : >> > hybrid-graphics-linux@lists.launchpad.net >> > > Unsubscribe : >> > https://launchpad.net/~hybrid-graphics-linux >> > > More help : https://help.launchpad.net/ListHelp >> > > >> > > >> > >> > >> > >> > >> > >> >> >> > >
_______________________________________________ Mailing list: https://launchpad.net/~hybrid-graphics-linux Post to : hybrid-graphics-linux@lists.launchpad.net Unsubscribe : https://launchpad.net/~hybrid-graphics-linux More help : https://help.launchpad.net/ListHelp