apple-gmux: lock iGP IO to protect from vgaarb changes
authorBruno Prémont <bonbons@linux-vserver.org>
Wed, 11 Mar 2015 21:34:45 +0000 (22:34 +0100)
committerDarren Hart <dvhart@linux.intel.com>
Thu, 19 Mar 2015 03:44:44 +0000 (20:44 -0700)
commit4eebd5a4e72697aac25a8a57d3f888a9d5f80370
treea2c2b9a03f8a38596b3362022e1a804de96c71e9
parent0a63ca11b42b4fc9ece395f611679d0d3985cd4d
apple-gmux: lock iGP IO to protect from vgaarb changes

As GMUX depends on IO for iGP to be enabled and active, lock the IO at
vgaarb level. This should prevent GPU driver for dGPU to disable IO for
iGP while it tries to own legacy VGA IO.

This fixes usage of backlight control combined with closed nvidia
driver on some Apple dual-GPU (intel/nvidia) systems.

On those systems loading nvidia driver disables intel IO decoding,
disabling the gmux backlight controls as a side effect.
Prior to commits moving boot_vga from (optional) efifb to less optional
vgaarb this mis-behavior could be avoided by using right kernel config
(efifb enabled but vgaarb disabled).

This patch explicitly does not try to trigger vgaarb changes in order
to avoid confusing already running graphics drivers. If IO has been
mis-configured by vgaarb gmux will thus fail to probe.
It is expected to load/probe gmux prior to graphics drivers.

Fixes: ce027dac592c0ada241ce0f95ae65856828ac450 # nvidia interaction
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=86121
Reported-by: Petri Hodju <petrihodju@yahoo.com>
Tested-by: Petri Hodju <petrihodju@yahoo.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Matthew Garrett <matthew.garrett@nebula.com>
Signed-off-by: Bruno Prémont <bonbons@linux-vserver.org>
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
drivers/platform/x86/apple-gmux.c