apple-gmux: Assign apple_gmux_data before registering
authorMatthew Garrett <matthew.garrett@nebula.com>
Mon, 16 Nov 2015 20:38:40 +0000 (21:38 +0100)
committerDarren Hart <dvhart@linux.intel.com>
Tue, 19 Jan 2016 23:49:34 +0000 (15:49 -0800)
commitc1e1655bb892c6800af82c2d88c8063fce7b5c98
tree5832516de5516f2bf7758344c4e48c7a25073238
parent65e3cf9c0f05877f76eefcb4f005944dc5379fbf
apple-gmux: Assign apple_gmux_data before registering

Registering the handler after both GPUs will trigger a DDC switch for
connector reprobing. This will oops if apple_gmux_data hasn't already
been assigned. Reorder the code to do that.

[Lukas: More generally, this commit fixes a race condition that
is triggered by invoking a handler callback between the call to
vga_switcheroo_register_handler() and the assignment of
apple_gmux_data.]

Tested-by: Pierre Moreau <pierre.morrow@free.fr>
    [MBP  5,3 2009  nvidia MCP79 + G96        pre-retina  15"]
Tested-by: Paul Hordiienko <pvt.gord@gmail.com>
    [MBP  6,2 2010  intel ILK + nvidia GT216  pre-retina  15"]
Tested-by: Lukas Wunner <lukas@wunner.de>
    [MBP  9,1 2012  intel IVB + nvidia GK107  pre-retina  15"]
Tested-by: William Brown <william@blackhats.net.au>
    [MBP  8,2 2011  intel SNB + amd turks     pre-retina  15"]
Tested-by: Bruno Bierbaumer <bruno@bierbaumer.net>
    [MBP 11,3 2013  intel HSW + nvidia GK107  retina      15"]

Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
Reviewed-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
drivers/platform/x86/apple-gmux.c