I just confirmed that, at least on Mac OS X, 256 MB is definitely reserved by the system, likely for use with the 9400M even when the 9600M GT is in use. All you have to do to test this theory is compile and execute the program located here:
http://my.safaribooksonline.com/0321278542/ch06lev1sec3?portal=oreilly
When I booted up with no maxmem parameter or maxmem=4100, and ran host
basicinfo, I got a max_mem value of 3840. Since there is 4096 MB of physical RAM, that leaves 256 MB RAM (4096 - 3840) unavailable to the OS.
When I booted up with a maxmem parameter of maxmem=3456, I got the expected max_mem value of 3456. This means, that with the maxmem=3456 workaround, you're effectively giving up 384 MB of RAM, not 640 MB as you might expect. It still kind of ***** that Apple reserves 256 MB of RAM regardless of what card is in use, but there you have it.
Note that memory_size will always say 2048 MB only because it is a 32-bit value (I'm guessing it is used in the kernel in legacy code).
Interestingly enough, I ran host
basicinfo on a Mac Mini with integrated GMA 950 graphics. It has 2 GB installed and the maxmem value was 2048 MB. Seeing as how 64 MB of this memory is definitely used by the Intel GMA 950 integrated graphics, I'm thinking that Apple has done something significantly different with the Nvidia platform that they're not even letting the OS get at 256 MB of the memory. Significantly different doesn't mean incorrect, but if it is different
new code (either in drivers or in firmware), then perhaps it has yet to have all of the bugs worked out of it.