Adventures of putting 16 GB RAM in a motherboard that doesn’t support it (2019)
downtowndougbrown.com
downtowndougbrown.com
Some quick searching shows that others have managed to get that CPU to use 32GB of RAM:
https://forums.overclockers.com.au/threads/p55-chipset-i5-75...
I thought he would go as far as patching the BIOS itself, which would make it a "permanent" fix. In fact one of the projects I haven't gotten around to finishing is to patch the memory init code for an old Atom processor embedded motherboard to make it recognise more combinations of RAM modules; analysis of the BIOS and leaked sources shows that it was stupidly written as "if(512MB in slot 1 and 512MB in slot 2) ... else if(1GB in slot 1 and empty slot 2) else if(1GB in slot 1 and 1GB in slot 2) ...", when the memory controller can actually be set up generally to work with many more different configurations.
I noticed the type numbers of one of my computers had RAM that was 2x the quantity advertised and indeed with some fiddling I managed to unlock the second half.
Some companies (and programs, and programming languages, and so on) make it easy to do unsupported things. Some make it hard. None will accept liability for it.
Hardware manufacturers are on the hook for so many potential problems, defects, misconfigurations and misuses that it makes sense from their perspective to support actively only those things they can guarantee will always work. Not things which the hardware can theoretically do but which might not always be the best idea, things that aren't possible now but might be in ten years, etc.
Funnily enough, like the article's author I also encountered a DSDT-related problem on that same system: if you were to dump the tables and recompile them with the standard Intel utility it straight up wouldn't work. Came to find out that there are apparently two compilers, one from Intel and another from MS and the MS one is super-lenient about accepting garbage. Eventually worked out that the logic in the stock tables was such that several features (HPET and sleep, iirc) just straight up don't work unless the OS identifies itself to ACPI as Vista (and not like Vista+, Vista exclusively). Such a pain.
For my Fujitsu there was memory soldiered on the board so you couldn’t quite double it, but you could get around half again as much memory as the manufacturer claimed was the max.
Did result in losing the power up button (which had a fingerprint mechanism in it).
On the other hand, it's funny to think that Hackintosh probably was responsible for motivating a lot of people to learn about ACPI and other complex low-level hardware details.
I just recently mastered Linux Intel DDIO for 100Gbps network card. And this is after BellCore SONET/ATM.
It's still baffling how microsoft completely broke bluescreens by hiding any useful info.
> "kernel-mode driver for device X performed an invalid memory operation, please try updating it or report this to its developer"
is a good example of a user-friendly error message either.
My experience in writing software and supporting it for end users (even highly educated users) has taught me that a large percentage of people will stop reading if they encounter any technical words or indirect statements. Honestly, I feel like the "Your computer ran into a problem and needs to restart. We'll restart it for you" message that Microsoft settled on is probably about the common denominator. It has no technical terms and it doesn't give the user an opportunity for decision paralysis.
It is not that people were smarter, of course, but they did expect to have to dirty their hands with their stuff from time to time. Nowadays, besides all of our protests at the contrary, stuff is way more reliable and ease to use, and people got used to complicated stuff just working.
Except most of the time, things aren't aware of that.
Yes, today's operating systems are more reliable thanks to memory protection and better abstractions. But that's compensated by insatiable product managers that absolutely have to keep updating a feature-complete product at any cost with features and UI redesigns no one ever asked for.
Just leave it visible all the time, Microsoft! It won't hurt, and can certainly help!
In fact, sometimes I'll get support requests like "Hey I got this error 012345 what does that mean?" and the attached screenshot will show a message like: "Invalid Password, please type your password again (Error code: 012345)"
I absolutely understand the technical utility, but I really wouldn't be surprised if they have better overall support outcomes without it.
It is not MS style. Not so long ago they were blaming sysadmins for 404 errors.
It's my idea of hell having an error handler that tries to do fancy stuff and then the error handler dies and swallows the original error condition
Also, if you happen to still have the link to that regkey description, I bet this audience would benefit from your research
(Had to crack it open because the old spinning-rust hard drive was starting to go bad, so I replaced it with an SSD, and figured I should upgrade the RAM while I had it open. I have Linux installed on it, and it's a nice media server box, running Jellyfin and a few other things. Only downside is that its support for HW video decode/encode is kinda limited -- no h265 -- due to its age.)
2020-2021: https://vimeo.com/user128699411
2019: https://www.youtube.com/channel/UCUVk2lv2h2VbP3Dx4k2axyA/vid...
I'd absolutely pay extra for a Ryzen 5000 series motherboard that I could put Coreboot on
Hopefully the Framework laptop pushes things in the right direction for mobile computing, they've at least stated an intent to add Coreboot support
For example I recently put 64GB of RAM in a mobo that only supported 32. It didn't work at first and through trial and error I found out that XMP was the only thing with a hard 32GB requirement. Once disabled it booted fine with 64GB.
:-D
> To do this, rename the AML binary to acpitabl.dat and move it to %windir%\system32. At boot time, Windows replaces tables present in the ACPI firmware with those in acpitabl.dat. [0]
[0] https://docs.microsoft.com/en-us/windows-hardware/drivers/br...
Like, my favorite thing is that circuit boards have wobbly traces on them around high-speed interfaces (RAM, PCI, etc) so all the bits in parallel signals arrive at the same time. The clock speeds are specced right up at the edges of the speed electrons can stably flow at.
And this sort of thing is awesome, but like... quite a fair bit beyond the point I'm practically able to engage at.
I guess I'm trying to figure out how to leap without missing anything lol :D which is impossible now I phrase it like that...
Is this memory-mapped by an address decoder on the motherboard (or north/south bridge)? Or is it a hint to the OS that they should map it here?
Maybe the PCI I/Os are really there, hardwired on the motherboard, but use a higher impedance, though that would be very hacky.
Or maybe they're mapped from that address, and the highest bits do not count, as address decoding is only performed on the lower bits? With physical memory shadowing parts of the physical address space?
Or maybe this is just virtual address space shenanigans? In that case, how does the OS figure how to talk to PCI or the RAM based on the provided mappings?
I might be able to find that information by looking at the specifications and whatever ACPI docs I can find, but if someone already knows how it works, I'd really appreciate a few pointers.
This cannot be so hard to do. See my recent adventures: https://twitter.com/KaliszAd/status/1462940387916582915
Works just fine on 800MHz using 4GB total.
Needed to use 667MHz DIMMS so it would handle 8GB.
Almost worked with 800 but was unstable.
Some previous discussion: