Hacking 16GB Into An Old PC That Doesn’t Want That Much

From the title, you might think this post is going to be some lame story about someone plugging in some RAM and maybe updating a BIOS. That’s where you’d be wrong. [Downtown Doug Brown] has a much more interesting and instructive story.

[Doug] found his motherboard was rated for 8 GB maximum and decided he’d make 16 GB of RAM work despite the limitation. He updated the BIOS and it worked — in Linux. He was able to see all the memory and it tested good. If that was it, you wouldn’t be reading about it here. The story gets interesting when he tried to boot Windows 10 and it refused, showing its kinder and gentler blue screen of death. For many people, that would be the end of the story, especially since Windows 10 doesn’t give you much information about why it crashed.

Like so many problems, this one had to be peeled back like an onion. The first thing to do was to change the Windows registry to allow the blue screen to output some technical information that was present in older versions of Windows. The error code indicated that the issue had to do with the BIOS reporting overlapping memory regions.

With some investigating in Linux, whose log files get a lot more BIOS information, [Doug] realized the E820 interface was returning a memory region that conflicted with ACPI’s information. It seems as though the motherboard was reserving space at the top of the 8 GB range for PCI operations which was punching a hole in the system’s (now larger) memory. Turning off a setting in the BIOS fixed the problem, but only because it makes Linux and Windows both see only 4GB of memory. That also wouldn’t be a very interesting story. [Doug] theorized that if he could move the mapping area to the top of the 16 GB range, things would work.

What follows is a great exposition of the Linux tools for reading and changing system information. Did he get it to work? Read the post and find out. But we will tell you that he did manage to have grub patch his system information.

Most of the motherboard hacks we’ve seen relate to hardware, not software. Of course, you could just buy a new motherboard. If you need ideas for what to do with the old one, here you go.

23 thoughts on “Hacking 16GB Into An Old PC That Doesn’t Want That Much

    1. Its a damn clever and determined bit of sleuthing.
      It also says, don’t use windoze unless you 100% have to. If there had been useful debugging info on the blue screen a large portion of the saga could be cut out. I mean seriously a non-techie will get flustered by the blue screen no matter how devoid of scary words and meaning it is.. But the techie wants to see this stuff so they may be able to fix it! I’ve spent more time with getting useful debugging data out of windon’t than I have fixing the problem most of the time (though as I don’t use windoze anymore myself some of that is the oh crap where did they move this part of control panel type stuff to now)

      1. >”It also says, don’t use windoze unless you 100% have to.”

        How do you reckon? Windows refused to work when there was a serious problem in the system that would have caused issues later on, while Linux “worked” because it ignored some crucial information that the system was giving.

        1. Its not about if it works right now or not its about being able to understand what is going on so when something goes wrong it can be fixed. Rather than throwing out perfectly good hardware because windoze won’t give useful debugging info.

          Though I’d be willing to bet you wouldn’t run into trouble at all with that issue in linux as the kernel is aware so as the error message shows. so would never be trying to use the wrong space.

        2. Windows panicked, didn’t give anything useful information on the issue. Linux worked, gave useful info about the issue, but how cruisial was the ACPI data anyway? Would it have caused anything to fail anyway?

          1. The way I see it, Linux “worked” and didn’t give any indication of a problem, the Windows failed, and then the guy changed the registry settings to make windows report what was wrong, which then yielded the necessary information to correct the issue – meanwhile, Linux would have just rolled with it, until at some later time there would have been inexplicable crashes and no indication as to why they’re happening.

          2. Linux is surprisingly resilient when compared to windows.
            My brother had a computer with a Intel chipset that’s known for S-ata suddenly croaking and BSoD galore followed by bootloops.
            Meanwhile Linux managed to work around the issues with no end-user input, albeit with noticeable reduced disk I/O speeds, sort of like the ECU of a newish car going into limp mode because of a potentially serious problem instead of outright shutting down.

          3. @Luke what you are failing to do is read the article then. Almost all the debugging and fixing information came from the Linux install. Because Linux actually gives you that info.

            There would be no inexplicable crashes as Linux already told you of the error, and odds are would work through and give further debugging info if something did happen. As mentioned in these comments adding a PCI device is now a little dubious. I suspect it wouldn’t bother the linux install the device just wouldn’t work as it wouldn’t leave ‘off’ state but I’ve never had a situation like that to need to find out. It could well come down to the PCI device not everything implements the standards in the same way or correctly for weird edge cases – so a device might cause errors in that memory space.

        3. Euhm, no.
          I did not read the whole linked article, but the quote below sums it up nicely:

          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.

          1. yea it ignores the conflict and hums along nicely, till it shits the bed and your surfing endless log files, windows on the other hand says

            hey diptard, you did something, you knew you did something, its screwed up, fix it cause I am not going to figure out why you think adding 2x the supported ram was a good idea

          2. >and ignores the conflicting PCI range that ACPI provides

            Which was a most likely a result of not having power management enabled in the system.

            I like the fact that Linux usually “just works”, because it doesn’t really do anything until you spend ages configuring it to enable features that are usually taken as granted in other operating systems. Like closing the lid of your laptop and going to sleep mode automatically. ACPI is kinda shunned by Linux kernel developers anyways, who call it a “trojan horse”.

  1. Linux worked around a buggy implementation of the ACPI tables, and gave useful information.

    Windows crashed.

    Linux is coded to “fail gracefullyl” on sub-standard hardware, and not take the users data with it, or at least provide some logs.

    Windows patches around hardware, most of which is tested to laughable “Microsoft” “standards”, which usually mean, it boots/compiles, ship it!

  2. He’ll probably have troubles when adding other PCI cards. He changed the location the system uses to talk to the device, not where the device is actually mapped. So a PCI card will be inaccessible by the system but could corrupt memory contents. Very bad.

  3. all that effort for a board that is almost 10 years old , time to upgrade stop being so cheap… find it amazing you will dish out money for the ram and go through all this, it’s cool you did it I guess but really I would have just left it alone or upgrade.

  4. i faced roughly this same problem, and i noticed auxilliary symptoms of only 2 cores (in 2019!), poor single-thread performance, and a SATA interface that was slower than my SSD. for $300 i got a new MB + CPU + 16GB. i feel like i made the right choice.

  5. Ha! i’m I the only one amazed here?
    That is awesome, I didn’t you could do that. simply thought it was a hardware limitation of the chipset (only X address bits) and that you couldn’t do anything about it. That is really cool!

    About hardware windows VS linux I had a funny story recently:
    Purchased a cheap mushkin 500GB, a benchmark from tom’s hardware or maybe anandtech basically said SURE! they used to sucked now there as good as the samsung / intel one!1!1
    Yeah, no. It was a new ryzen 2700x build everyting new. Win10. It was meant to be a gaming-only PC.
    Except it did random stutter. HARD. Games, even chrome would freeze for a solid 30 sec. could be every 2 hours, or every 15 minutes random. Task monitor would show that DISK maxed out at 100%.
    After many test I just gave up and use a plain 5400rpm 2TB hard disk I had around.
    Later after some major fuck-up with win10 updates (yeah…) I decided to use only linux and wine since it was good enough and gave the SSD another shot. Didn’t stutter even once in a year even in games I used to play on windoze.

  6. Somewhat related, I have an old antique Samsung that will not work with more than 4GB. C2D supports 16, but only ever had it working reliably with 2×2 or 4×1. 8 didn’t even POST in either slot. BSOD happens if I try 2×4 or 4+2 though it did boot initially.
    Older boards with DDR2 and socket P seem to have similar issues with more than 3GB but it is not clear why.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.