[MSI Disable] T2 chip MacBook Pro Port Dance Workaround
 
Notifications
Clear all

[MSI Disable] T2 chip MacBook Pro Port Dance Workaround  

  RSS

Megarushing
(@megarushing)
Active Member
Joined: 1 year ago
 

TLDR: set [\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\VEN_8086&DEV_15EB&SUBSYS_00008086&REV_06\D7439D0125B3020000\Device Parameters\Interrupt Management\MessageSignaledInterruptProperties\MSISupported] to 0

Hi there, first post here.

I have for some time now been studying around attempting to achieve a possible workaround for the (very annoying) port dance need and I believe I might have found something and would like to share.

0- Create a system restore point before anything else

1- Download the intel chipset driver (I used version 1.41.1094.0) in https://downloadcenter.intel.com/download/30334/Chipset-INF-Utility

2- Type CMD in the searchbar (next to start menu), then "cd Downloads" to find the downloads folder

3- Extract Intels thunderbolt drivers from the utility using CMD with "SetupChipset.exe /extract inteldrivers"

4- Go to device manager (type it in the searchbar next to start menu) click "View" > "Devices by connection", look for the PCIe Controller (x8) there and find the thunderbolt controller (mine is Thunderbolt(TM) Controller - 15EB) within it and double click it

5- Go in Details tab and in property select "Device instance path" take note of that value, we will need it later

6- Go to "Driver" tab and "Update Driver", select the folder you just extracted intel drivers to.

I find it better to just update this driver rather than everything since doing it all made bootcamp utility disappear for some reason.

A strange fact is that, it selects the driver from SkyLake, and my processor is a CoffeLake, go figure Unamused .

I also recommend disabling dGPU and iGPU while in here for good measure for now.

After that my eGPU started cold booting, but would crash soon after it showed windows logo, but ok we can fix that:

7- Type regedit in the searchbar, and enter it

8- Navigate to \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\ and find the instance path that you took note before

9- Inside of this key go to Device Parameters > Interrupt Management > MessageSignaledInterruptProperties

10- Change the value on MSISupported from 1 to 0, if it does not exist create a DWORD 32-bit value there with that name and set it to 0

11- Reboot, please let me know if it works

PS: If your eGPU is deep asleep try booting on Mac OS before, do the port dance there to wake it up and then reboot into windows again

PS2: Updating the thunderbolt driver might not be necessary, if thats the case i will remove those steps

My current setup is:

- MacBook Pro 2019 16"

- Core i7-9750H @ 2.60 Ghz

- Intel UHD 630 iGPU

- Radeon 5300M dGPU

- Radeon 5700XT eGPU on a Razer Core X (non-Chroma)

- BootCampDrivers Dec 2020 Red Edition

- Windows 10 Build 18362.295

- EFI Loader ( https://egpu.io/forums/bootcamp/macbook-pro-16-windows-egpu-error-12-fix/)

- HackFlags Disabled

- dGPU and iGPU both disabled in Device Manager

The issue (my theory):

This always looked to me like an old school IRQ conflict as I have seen a ton of those in the past, to put simply interrupts are a way for a device to get the processors attention, sending a signal to it like: "hey I finished drawing a frame, please get the buffer from me". Bootcamp uses MSI interrupts for almost everything, you know that because the IRQs assigned for drivers are negative numbers, which signals MSI instead of plain old serial IRQ.

Yes I know IRQ conflicts aren't supposed to happen anymore as devices seem to be able to share IRQs now, but I suspect something about the T2 chip actively "blocks" those resources from access (this wouldnt allow windows to assign anything to them, if it does the driver start fails and you get an Error 12). Maybe those belong to the fingerprint scanner or something else? who knows...

This is what happens to intel iGPUs being blocked on windows, and when using EFI Loader to unlock it the resource gets used and Windows sees that its already in use and jumps to another IRQ making things fall into place. BTW: the loader is simply supposed to be an unlock for the iGPU and does nothing more than spoofing the OS name to achieve that.

The issue seems to specifically lie around the Thunderbolt controller, when the driver fails to start the eGPU is not "awakened", windows then proceeds to disable the driver. Simply disconnecting and reconnecting something to a failed driver will not force it to jump back in, so it does not wake the GPU and nothing starts.

Although, connecting the eGPU to a different port will get the driver to jump back online. This allows windows to use the plug and play event to assign a good IRQ for thunderbolt this time, now when you connect it back to the left port it re-uses the context already set from the last connection and driver setup.

I began suspecting of the thunderbolt controller when I updated the driver as explained above and the eGPU began starting on cold boot but crashing immediately afterwards.

But thats just a theory, an eGPU theory...

Disclamer: This is still experimental, I intend to start a discussion with the more veteran ppl here about the potential consequences of this tweak. So far I experienced longer reboot times

Source for registry tweak and info on how MSI works: https://forums.guru3d.com/threads/windows-line-based-vs-message-signaled-based-interrupts-msi-tool.378044/

 

 

This topic was modified 2 months ago

- MacBook Pro 2019 16"
- Core i7-9750H @ 2.60 Ghz
- Intel UHD 630 iGPU
- Radeon 5300M dGPU
- Radeon 5700XT eGPU on a Razer Core X (non-Chroma)
- Windows 10 Build 18362.295
- EFI Loader


itsage and nando4 liked
ReplyQuote
itsage
(@itsage)
Founder Admin
Joined: 5 years ago
 

@megarushing, Excellent investigation work on what Windows is doing/not doing with a Boot Camp eGPU setup on T2 Macs. I will test your solution with 2019 16-in MacBook Pro as well as other T2 Macs I have. Will try without updating Thunderbolt drivers first.

 

LinkedIn | Twitter | Facebook | Youtube | Instagram
 
external graphics card builds
best laptops for external GPU
eGPU enclosure buyer's guide

 
2018 Mac Mini [8th,4C,B] + RX Vega 56 Nano @ 32Gbps-TB3 (Gigabyte Gaming Box) + macOS 12.0 & Win11 [build link]  


ReplyQuote
mac_editor
(@mac_editor)
Famed Member Moderator
Joined: 4 years ago
 
Posted by: @megarushing

Although, connecting the eGPU to a different port will get the driver to jump back online. This allows windows to use the plug and play event to assign a good IRQ for thunderbolt this time, now when you connect it back to the left port it re-uses the context already set from the last connection and driver setup.

What a mess Windows is, unsurprisingly, along with the T2. Haven't been up to speed on the status of bootcamp + eGPUs, but back in the 2018 MBP early days post release, we needed to do something similar to bypass E12. Turned out uninstalling the GPU from the device manager (but leaving drivers as is) would allow the port to be re-usable w/o rebooting. With the same GPU, each connection to a different port would create a new device manager entry IIRC. Eventually, as Windows and T2 firmware was updated, the 2018 MBP just worked for me (plug 'n play, no EFI hacks, 15" model) for awhile.

Kudos on this analysis. I think you might be on the right track with TBT controller behavior - which has always been spotty on all TBT Macs in bootcamp actually. For example, on pre-2015 macs, TBT hot-plug was not supported in Bootcamp. Quick question though, why do you need the EFI Loader in your setup? To fix E12?

Author: kryptonitepurge-wranglertbt-flashpurge-nvdaset-eGPU
Insights Into macOS Video Editing Performance

Master Threads:
2014 15-inch MacBook Pro 750M
2018 15-inch MacBook Pro

 
2019 13" MacBook Pro [8th,4C,U] + RX Vega 64 @ 32Gbps-TB3 (Mantiz Venus) + macOS 10.14.6 & Win10 [build link]  


ReplyQuote
Megarushing
(@megarushing)
Active Member
Joined: 1 year ago
 

This is a list of consequences to the tweak I have experienced so far, will update it as I and other testers find them:

- Reboot times are much longer, specially when shutting down. I found out this is due to a DRIVER_POWER_STATE_FAILURE happening some times. Not good =\

- when the power state failure happened pc started doing a BSOD on boot and I had to do a system restore

- Hotplugging is no longer possible, eGPU display adapter appears only when cold booted and detected within EFI boot utility

- I felt the frame rate a bit lower, I confirmed it with VRMark, with port dance score on Orange room was 6900, without it is around 6000 6100ish

- Thunderbolt Controller used to take 16 negative IRQs, now it uses only 1 positive, I think this may be related to the performance problem

- Depending on the thunderbolt driver used o with this tweak windows wouldn’t start unless I unplugged the eGPU

This post was modified 2 months ago

- MacBook Pro 2019 16"
- Core i7-9750H @ 2.60 Ghz
- Intel UHD 630 iGPU
- Radeon 5300M dGPU
- Radeon 5700XT eGPU on a Razer Core X (non-Chroma)
- Windows 10 Build 18362.295
- EFI Loader


ReplyQuote
Megarushing
(@megarushing)
Active Member
Joined: 1 year ago
 

@mac_editor, you are correct. The EFI loader was needed to pass the E12 bang on the eGPU,

I imagine this is also related to windows trying to use resources that are being blocked by that iGPU and once it appears windows finds its way around.

I find it amazing how messy the whole boot camp thing is. When I had a MBP 2018 the eGPU used to work perfectly without loader and with the dGPU disabled

T2 is definitely blocking resources, if we find enough about it I suppose it’s possible to make a fake driver that requests the resources that T2 uses and does nothing just to avoid windows using them. But I don’t know if it is possible to cherry-pick resources on drivers

 

This post was modified 2 months ago

- MacBook Pro 2019 16"
- Core i7-9750H @ 2.60 Ghz
- Intel UHD 630 iGPU
- Radeon 5300M dGPU
- Radeon 5700XT eGPU on a Razer Core X (non-Chroma)
- Windows 10 Build 18362.295
- EFI Loader


ReplyQuote
mac_editor
(@mac_editor)
Famed Member Moderator
Joined: 4 years ago
 
Posted by: @megarushing

you are definitely right. The EFI loader was needed to pass the E12 bang on the dGPU

eGPU right?
Posted by: @megarushing

When I had a MBP 2018 the eGPU used to work perfectly without loader and with the dGPU disabled

Oh, I never disabled the dGPU actually. I used them in tandem.

Posted by: @megarushing

T2 is definitely blocking resources, if we find enough about it I suppose it’s possible to make a fake driver that requests the resources that T2 uses and does nothing just to avoid windows using them. But I don’t know if it possible to cherry-pick resources on drivers

Yet it works on 2018 MBP. The end goal is really to sort of control/fix Windows resource allocation to make things work. As long as large memory block (some Macs require DSDT override to get this) is available, technically I would expect things to work most of the time. But I suppose this isn't the case with the 2019 models. In that case it might be easier to look at device trees and whatnot in Windows and compare a 2018 15" vs. 2019 16". Additionally, with error 12 it should be possible to see the conflicting memory addresses/device. Grasping at straws mostly at this point though. Can't believe this is still an issue so many years later.

Author: kryptonitepurge-wranglertbt-flashpurge-nvdaset-eGPU
Insights Into macOS Video Editing Performance

Master Threads:
2014 15-inch MacBook Pro 750M
2018 15-inch MacBook Pro

 
2019 13" MacBook Pro [8th,4C,U] + RX Vega 64 @ 32Gbps-TB3 (Mantiz Venus) + macOS 10.14.6 & Win10 [build link]  


ReplyQuote
Megarushing
(@megarushing)
Active Member
Joined: 1 year ago
 
Posted by: @mac_editor
eGPU right?
Posted by: @mac_editor

Oh, I never disabled the dGPU actually. I used them in tandem.

yes, corrected to eGPU, sorry for the typo.

I was never able to use them in tandem, for some reason windows crashed whenever I had both enabled, seems like this was a driver conflict issue

- MacBook Pro 2019 16"
- Core i7-9750H @ 2.60 Ghz
- Intel UHD 630 iGPU
- Radeon 5300M dGPU
- Radeon 5700XT eGPU on a Razer Core X (non-Chroma)
- Windows 10 Build 18362.295
- EFI Loader


ReplyQuote
Megarushing
(@megarushing)
Active Member
Joined: 1 year ago
 

This is an update.

I have been using the MSI disabled for 2 weeks now to play games (recently i have been into sea of thieves), I managed to resolve the reboot issues and BSODs by:

1- Clearing GPU drivers with DDU, after doing the MSI disable, I also disabled windows update driver updates with the DDU tool

2- disabling Thunderbolt(TM) Controller - 15EB in device manager

3- Installing the latest intel iGPU drivers (mine is 630) for the iGPU

4- Re-installing BootCamp.com Dec 2020 Drivers Red Edition

5- Enabling all GPUs on device manager (iGPU, dGPU and eGPU)

My intel thunderbolt controller drivers (15EB) are version 1.41.1094.0 and disabled (bizarre but it works) as well as both devices having MSI disabled as in OP in regedit

I am still experiencing slightly lowered performance which I have been trying to diagnose and maybe improve, but just not having to port dance everytime i reboot from work (Mac OS) into gaming mode is a life changer for me

This post was modified 2 months ago

- MacBook Pro 2019 16"
- Core i7-9750H @ 2.60 Ghz
- Intel UHD 630 iGPU
- Radeon 5300M dGPU
- Radeon 5700XT eGPU on a Razer Core X (non-Chroma)
- Windows 10 Build 18362.295
- EFI Loader


ReplyQuote