Hello, I used to work at Apple 6 years ago, and have a MP3,1 that I used there mostly for OS X development (among other things), and the one thing I never was involved in was the boot ROM development, but I have been curious about a few things. While I don't mind some of the limitations of the boot ROM, namely using UGA instead of GOP (despite having an MSI GTX-1050 Ti installed), since I usually use the CSM only these days and only run Windows 10, I am however curious about fixing some of the bugs in the boot ROM.
These "bugs" as I would call it is lack of AHCI and VT-x. Now for AHCI I'm just using the good 'ol patchedcode.bin MBR which works, and I have Hibernation and S1-S3 states disabled via a GPO, to prevent BSOD's (also I disabled Fast Boot on Windows 10 because that always tends to cause an initial power on power off symptom as it utilizes hibernation). This works honestly well for me, since I only just have a simple SATA SSD, so I don't mind a non NVMe patched boot ROM. However I would like to have my boot ROM set the SATA controller to 2681 rather than 2680. It would solve those sleep and hibernation issues instantly, and not require basically a shim in my bootloader to work.
Second is VT-x. These machines simply don't have VT-x enabled at boot time when using the CSM, but the MSR's can be changed for both CPU's since it isn't locked. VirtualBox does this usually, but my Android development kit of course complains. I have enabled NX and turned off the hypervisor in bcdedit while also installing Intel's haxm software, but first boot never works. Once it boots I have to do a reboot, then vt-x enables. This of course is just extra time wasted. This could be solved by simply having the CSM in the boot rom enable those MSR's. I also feel this was a bug, but by the time I was working at Apple 9 years ago, no one was developing newer boot ROM's for the MP3,1. I take that back, there were several other BETA boot ROM's, but my development machine never got it (I just have your bog standard MP31.88Z.006C.B05.0802291410 boot ROM, and I'm fairly 99% certain it's just a retail machine and nothing special. Willing to run any tests though to determine if it has any differences compared to a retail machine). AIDA64 report on the mainboard: https://i.imgur.com/S9J1XkA.jpg
Anyway, I know that the MP3,1 is an easily brickable machine due to it's quirky flash layout and is why I'm hoping maybe someone can chime in. If I can solve those two issues, my need to get GOP in the boot ROM for native Windows booting with PC graphics card simply won't be required anymore since legacy boot works just fine for my needs.
These "bugs" as I would call it is lack of AHCI and VT-x. Now for AHCI I'm just using the good 'ol patchedcode.bin MBR which works, and I have Hibernation and S1-S3 states disabled via a GPO, to prevent BSOD's (also I disabled Fast Boot on Windows 10 because that always tends to cause an initial power on power off symptom as it utilizes hibernation). This works honestly well for me, since I only just have a simple SATA SSD, so I don't mind a non NVMe patched boot ROM. However I would like to have my boot ROM set the SATA controller to 2681 rather than 2680. It would solve those sleep and hibernation issues instantly, and not require basically a shim in my bootloader to work.
Second is VT-x. These machines simply don't have VT-x enabled at boot time when using the CSM, but the MSR's can be changed for both CPU's since it isn't locked. VirtualBox does this usually, but my Android development kit of course complains. I have enabled NX and turned off the hypervisor in bcdedit while also installing Intel's haxm software, but first boot never works. Once it boots I have to do a reboot, then vt-x enables. This of course is just extra time wasted. This could be solved by simply having the CSM in the boot rom enable those MSR's. I also feel this was a bug, but by the time I was working at Apple 9 years ago, no one was developing newer boot ROM's for the MP3,1. I take that back, there were several other BETA boot ROM's, but my development machine never got it (I just have your bog standard MP31.88Z.006C.B05.0802291410 boot ROM, and I'm fairly 99% certain it's just a retail machine and nothing special. Willing to run any tests though to determine if it has any differences compared to a retail machine). AIDA64 report on the mainboard: https://i.imgur.com/S9J1XkA.jpg
Anyway, I know that the MP3,1 is an easily brickable machine due to it's quirky flash layout and is why I'm hoping maybe someone can chime in. If I can solve those two issues, my need to get GOP in the boot ROM for native Windows booting with PC graphics card simply won't be required anymore since legacy boot works just fine for my needs.