HP DC5750 not showing all memory
I installed PFSense on a new HP DC5750 microtower PC, and I kept getting the "expect unusual performance" message related to insufficient RAM. I checked DMESG and, sure enough, only 64MB of the 1GB of physical memory was being detected. Knowing nothing of FreeBSD, I started researching and I found a fix that worked well for me. Under "Diagnostics", I chose "Edit File" and opened a file called "/boot/loader.conf". At the bottom of this file, I pasted in the following string:
Once I rebooted, DMESG reported that I now have 766MB of real memory. I suspect I could set hw.physmem to an even larger value and have access to most or all of my 1GB, but I got this value from a post on FreeBSD.org that discussed this exact model of PC, so I'll probably just keep it the way it is. The post also provided the following value for those of you who have 4GB of RAM:
I also found that this particular model would NOT boot PFSense with ACPI enabled, so I added another line to the "/boot/loader.conf" file to disable ACPI:
After that, I had absolutely NO problems with PFSense on this box.
The BIOS will normally provide a data structure showing the operating system what areas of physical memory the operating system can use. It appears this mechanism is broken on your system. I suspect you will need to specify a physical memory size somewhat less than real memory size to account for the possibility the onboard graphics (I'm assuming the system has onboard graphics - that's common on mass produced "big name" systems) will also be using some physical memory. The BIOS probably also wants to reserve memory for ACPI but since FreeBSD can't correctly tell what areas of physical memory the BIOS wants to reserve you probably have to disable FreeBSD's use ACPI since you can't really guarantee that FreeBSD is going to preserve the BIOS ACPI data structures.
It seems a pretty basic BIOS function is broken. Maybe there is a BIOS update that fixes this or maybe someone is working on a fix.
I had hoped a BIOS update would fix this, but it did not. My research led me to much the same conclusion as you. I'm guessing the SMAP that the DC5750 BIOS provides is not compatible with FreeBSD in some way, so ACPI can't work, and the OS is forced to assume 64MB just to attempt to boot. I'm sure you're correct about the graphics subsystem using some of the system RAM, which is why I don't intend to increase the hw.physmem value beyond it's current setting. For all I know, I'd be telling the OS that it can use memory that is already being allocated to the video adapter.
It does seem like HP should step up and address a BIOS shortcoming like this, but I'm happy with my 766MB of RAM and I don't need ACPI anyway. I'm just glad I didn't have to scrap this box and rebuild the system on another machine with a better BIOS.
Thanks for your feedback. Hopefully the next PFSense user who finds most of his RAM being stolen from him will find this post and be able to easily sidestep the problem.
It would probably be a good thing to file a FreeBSD problem report (PR) on this and hope it comes to the attention of John Baldwin. John used to work for Compaq/HP (and still does as far as I know) and has been quite attentive to issues like this in the past. You can lodge a FreeBSD problem report at http://www.freebsd.org/send-pr.html and use category kern for kernel problems.