This problem certainly is elusive. I have now gone through every single public source file that changed between 11.2 and 11.3, the entirety of both the kernel binaries, and the binaries (and, where possible, sources) of all the seemingly-relevant kexts, and I have yet to find anything that yields consistently good results. The one thing that seems to work reasonably well on my system (the gNVRAMSystemList patch) doesn't seem to do anything positive for anyone else. I identified a few other items that were promising (in that they were (1) clear changes between 11.2 and 11.3, and (2) probably represented a startup timing difference that could plausibly explain the symptoms we see), but patching those yielded only moderate (or no) gain. Interestingly, combining those with the gNVRAMSystemList patch actually made things worse on my system. I have rebooted so many times that I'm now planning to replace my BootROM chip, just to be safe.
My current thinking is this: the NVRAM is accessed through an EFI runtime service. Is it possible that supported machines have a newer EFI runtime that behaves just a little differently (especially for timing-sensitive operations)? The MP3,1 seems to use a M50FW016-class FWH flash, while the 4,1 uses an SST25VF032B-class SPI flash. The FWH interface is probably slower, but less time-sensitive than the SPI interface (although I'd guess both probably use the LPC controller for access), and that could account for why the MP3,1 seems to have a higher success rate than the MP4,1/5,1. If MacOS is expecting a fast result, or is sending commands/data too quickly, the older EFI interface (and/or the flash chip itself) could get confused, time out, or just hang.
I doubt they changed the actual EFI runtime interface, because if that were the case, I'd expect either 100% failures on older systems or runtime instability, and we don't see that.
So, given that the oldest supported systems are from 2013, my questions are:
(I wrote the above before skimming the thread and discovering that Hackintoshes are also exhibiting problems. Do we have confirmation that Hacks are seeing the same problem, boot hangs at roughly the same place? Or are they seeing something different? If it's really the same, that puts a major damper on my EFI runtime hypothesis...)
(Regarding whether or not this is deliberate - I'd have to say it's not. If Apple wanted to make it nearly impossible for an old Mac Pro to run the new OS, it would be trivial for them to make it happen, and they haven't done that. I believe what we're seeing is simply indifference to the legacy systems - as others have pointed out, why bother testing the old hardware if you're not going to support it anyway?)
My current thinking is this: the NVRAM is accessed through an EFI runtime service. Is it possible that supported machines have a newer EFI runtime that behaves just a little differently (especially for timing-sensitive operations)? The MP3,1 seems to use a M50FW016-class FWH flash, while the 4,1 uses an SST25VF032B-class SPI flash. The FWH interface is probably slower, but less time-sensitive than the SPI interface (although I'd guess both probably use the LPC controller for access), and that could account for why the MP3,1 seems to have a higher success rate than the MP4,1/5,1. If MacOS is expecting a fast result, or is sending commands/data too quickly, the older EFI interface (and/or the flash chip itself) could get confused, time out, or just hang.
I doubt they changed the actual EFI runtime interface, because if that were the case, I'd expect either 100% failures on older systems or runtime instability, and we don't see that.
So, given that the oldest supported systems are from 2013, my questions are:
- What flash chip(s) do the MP6,1/MBP11,* use?
- When did those systems last get a firmware update?
(I wrote the above before skimming the thread and discovering that Hackintoshes are also exhibiting problems. Do we have confirmation that Hacks are seeing the same problem, boot hangs at roughly the same place? Or are they seeing something different? If it's really the same, that puts a major damper on my EFI runtime hypothesis...)
(Regarding whether or not this is deliberate - I'd have to say it's not. If Apple wanted to make it nearly impossible for an old Mac Pro to run the new OS, it would be trivial for them to make it happen, and they haven't done that. I believe what we're seeing is simply indifference to the legacy systems - as others have pointed out, why bother testing the old hardware if you're not going to support it anyway?)