This is the story of Doug Brown, looking to put 16 GB of RAM into a computer using a Foxconn P55MX motherboard with a Core i5 750. The motherboard doesn’t officially support 16 GB of RAM in its two slots.
I made sure the BIOS was completely updated (version 946F1P06) and put in my two 8 gig sticks. Then, I booted it up into my Ubuntu 16.04 install and everything worked perfectly. I decided that my theory about the motherboard actually supporting more RAM than the documentation claimed was correct and forgot about it.
Then, a few months later, I tried to boot into Windows 10. I mostly use this computer in Linux. I only occasionally need to boot into Windows to check something out.
When GRUB came up, I navigated to the Windows 10 menu choice and hit enter. The Windows boot screen briefly showed up, and then I was immediately greeted with a Blue Screen of Death.
Doug was pretty sure there was some kind of memory mapping issue going on and decided to look more into the ACPI_BIOS_ERROR code and what causes it, stumbling upon this excellent Microsoft driver debugging document that explains the ACPI_BIOS_ERROR bug check.
The reason Linux works with 16 GB is because it notices the conflict and ignores the conflicting PCI range that ACPI provides, whereas Windows throws up its hands in disgust and pukes out a blue screen that says, “your BIOS has a problem!” I can’t blame Windows. There is definitely an overlap, so it makes sense that it gets confused.
I was also excited because I discovered that GRUB has the ability to replace your ACPI tables with new versions. So if I could figure out which table was involved, I could install a new version of that table using GRUB and theoretically Windows would be happy.
Doug isn’t sure this is safe but it makes his system work ok. Read more in the blog post here.