It's not a kernel option. They mean enable the IOMMU option in the system(GBT) BIOS and the enabling will use 64MB.
Chances are high with GBT that there is no such option.
So you just have to ignore the message. There is no way to get 4096MB available. It does not matter cuz if you actually need 4096MB then having 4GB is not enough anyway.
As contrast, MS Win systems can report 4096 but MS Win* reserves almost a GB for itself and you get the rest. Linux will use 64MB; ... if the IOMMU is not used, somewhat more.
I have 3968 out of 4096; 128MB used. I did some calculations a few years back and the number was correct. IIRC, I 'found' where all but about 2 or 4MB were used. ...that was close enuf for me. I have a GBT 2cewh and it does not have the IOMMU option in the Phoenix BIOS. (GBT and Phoenix suk...). Tomorrow, ihope, I'll have the SuperMicro running and it does have the IOMMU option. 64MB ...woo, woo.
The technical explanation is lengthy and a little difficult but it boils down to, as simply as I can, some memory is needed for OS to manage all those devices that are on the mainboard.
it is possible, and you do NOT have AGP, set the IOMMU GART for 64MB
. That is what Linux needs ...
Then, out of the 4096 there will be 4033MB available and at boot you will get messages something like:
kernel: DMAR: parse DMAR table failure.
kernel: PCI-DMA: Disabling AGP.
kernel: PCI-DMA: aperture base @ b4000000 size 65536 KB
kernel: last_map_addr: b8000000 end: b8000000
kernel: PCI-DMA: using GART IOMMU.
kernel: PCI-DMA: Reserving 64MB of IOMMU area in the AGP aperture
(use something like " less /var/log/messages |grep DMAR -A 6 " to retreive, depending on distro)
free will report similar to:
#> free -m
total used free shared buffers cached
4033 814 3218 0 3 379
Of course your used, free, shared, buffers & cached will probably differ.
I was able to do the above because I dumped the Gigabyte board and ** Phoenix BIOS for a Supermicro and AMI BIOS & OH, what a difference it has made!( GBT s u k s... )