I have been doing the same on the MBP 10,1 (15" Retina HD4000/GT650M) to get HD4000 working on Windows 8.1. Setting pci registers (exacly same as you mentioned) will not work to switch the graphics card. I think HD4000 needs more complicated initialization than just switching output and powering down discrete graphics on GMUX registers.I recently bought a MBP 15" Haswell Retina...
You have to boot to OSX, install gfxCardStatus and switch to "Integrated only" then restart. Do not swith off machine! After restart you will have internal graphics enabled. To be sure you can boot to EFI shell and check that GMUX registers are set to internal graphics, except register 750 has value 03 which means that NVIDIA power is still on.
You can turn NVIDIA off using:
And your screen shall not go black. After these commands it will not appear in Windows Device Manager. But this is quite optional - windows will use internal card anyway (actually a GOP protocol provided by EFI).echo Power down discrete graphics
mm 7C2 1 ;IO :1
stall 100000
mm 7D4 1 ;IO :50
stall 100000
mm 7C2 1 ;IO :0
stall 100000
mm 7D4 1 ;IO :50
So now you can boot to Windows 8.1 and your internal graphics card will be used for output with "Basic Display Driver".
You can reboot, but not power off MBP - after power off or NVRAM reset discrete card will be used as default again.
I want to go further and install Intell HD4000 graphics drivers and this turned to real problem. After some expirements I've got the following results:
Prerequsites:
1. Applied image of Windows 8.1 Pro /sources/install.wim on GPT-partitioned USD-SSD using WAIK tools - I only would mention that you need EFI partition size of 1536MB if you installing on USB drive, otherwise you will get "Windows can not install on this configuration..." during setup. I dont know the exact reason for that.
2. Run OS X and set gfxCardStatus to use "Internal graphics only" then restart.
3. Hold option at startup to run Windows 8.1 setup from connected USB-HHD EFI partition.
3. Windows setup finishes OK and you can see that Intel graphics is enabled and running OK in Device Manager using "Basic Display Driver". Discrete NVIDIA card will have exclamation mark, its OK.
After that I try to install Intel HD graphics driver (tried both Bootcamp and latest from Intel website with the same result) - screen goes black and windows produces bugcheck then reboots. After that your windows installation is garbaged - it will boot then produce bugcheck again or will not boot at all. I did not use to boot safe mode because after some reboots it gives sporadic error with BCD etc. My point was to get memory dump from USD-SSD.
Bugcheck analisys of MEMORY.DMP gives:
6: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
VIDEO_TDR_FAILURE (116)
Attempt to reset the display driver and recover from timeout failed.
Arguments:
Arg1: ffffe0000233e010, Optional pointer to internal TDR recovery context (TDR_RECOVERY_CONTEXT).
Arg2: fffff80001a43dc0, The pointer into responsible device driver module (e.g. owner tag).
Arg3: 0000000000000000, Optional error code (NTSTATUS) of the last failed operation.
Arg4: 000000000000000d, Optional internal context dependent data.
Debugging Details:
------------------
FAULTING_IP:
igdkmd64+fdc0
fffff800`01a43dc0 4889542410 mov qword ptr [rsp+10h],rdx
DEFAULT_BUCKET_ID: GRAPHICS_DRIVER_TDR_FAULT
BUGCHECK_STR: 0x116
PROCESS_NAME: System
CURRENT_IRQL: 0
ANALYSIS_VERSION: 6.3.9600.16384 (debuggers(dbg).130821-1623) amd64fre
STACK_TEXT:
ffffd000`22d0d738 fffff800`01727854 : 00000000`00000116 ffffe000`0233e010 fffff800`01a43dc0 00000000`00000000 : nt!KeBugCheckEx
ffffd000`22d0d740 fffff800`01727128 : fffff800`01a43dc0 ffffe000`0233e010 ffffd000`22d0d829 00000000`0000008e : dxgkrnl!TdrBugcheckOnTimeout+0xec
ffffd000`22d0d780 fffff800`01916516 : ffffe000`0233e010 ffffd000`22d0d829 00000000`00000000 00000000`000007fe : dxgkrnl!TdrIsRecoveryRequired+0x18c
ffffd000`22d0d7b0 fffff800`01948ae8 : 00000000`00000006 ffffd000`22d0d8b0 00000000`00000102 00000000`00000002 : dxgmms1!VidSchiReportHwHang+0x3ca
ffffd000`22d0d890 fffff800`01930a8c : ffffd000`00000002 00000000`00000102 00000000`00000002 ffffe000`02a6e000 : dxgmms1! ?? ::NNGAKEGL::`string'+0x4fc8
ffffd000`22d0d920 fffff800`01905df7 : ffffffff`ff676980 00000000`00000000 ffffd000`22d0dac0 00000000`00000000 : dxgmms1!VidSchiWaitForSchedulerEvents+0x26c
ffffd000`22d0d9c0 fffff800`0193da7a : ffffe000`02a6e000 ffffe000`02a6e000 ffffe000`038f54f0 ffffe000`00000000 : dxgmms1!VidSchiScheduleCommandToRun+0x437
ffffd000`22d0db70 fffff800`0193da4d : ffffe000`02a6e000 00000000`00000080 ffffe000`0034a080 ffffe000`0034a000 : dxgmms1!VidSchiRun_PriorityTable+0x2a
ffffd000`22d0dbc0 fffff803`32d73664 : fffff803`32fd5a80 ffffe000`0034a080 ffffd000`22d0dc90 fffff803`32ddf47d : dxgmms1!VidSchiWorkerThread+0x8d
ffffd000`22d0dc00 fffff803`32de26c6 : fffff803`32f7d180 ffffe000`0034a080 fffff803`32fd5a80 ffffe000`02abce48 : nt!PspSystemThreadStartup+0x58
ffffd000`22d0dc60 00000000`00000000 : ffffd000`22d0e000 ffffd000`22d08000 00000000`00000000 00000000`00000000 : nt!KiStartSystemThread+0x16
STACK_COMMAND: .bugcheck ; kb
FOLLOWUP_IP:
igdkmd64+fdc0
fffff800`01a43dc0 4889542410 mov qword ptr [rsp+10h],rdx
SYMBOL_NAME: igdkmd64+fdc0
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: igdkmd64
IMAGE_NAME: igdkmd64.sys
DEBUG_FLR_IMAGE_TIMESTAMP: 50b7cf1b
FAILURE_BUCKET_ID: 0x116_IMAGE_igdkmd64.sys
BUCKET_ID: 0x116_IMAGE_igdkmd64.sys
ANALYSIS_SOURCE: KM
FAILURE_ID_HASH_STRING: km:0x116_image_igdkmd64.sys
FAILURE_ID_HASH: {2dd455a7-a731-ffcb-c3fd-14ce7783fc02}
Followup: MachineOwner
---------
IGD driver not responding. So now I am trying to figure out the problem. The same driver works on models without discrete GPU and not on models that have it. Will try to play with registry TdrLevel/TdrDelay etc...
P.S. I dont see any reason to use oWindows 8.1 with "Basic Display Driver" on intel hd graphics - no 3D and perfomance is degrated. In such case I would better have OS X parallels virtual machine running Windows 8.1 with power saving enabled that exacly utilizes internal graphics.