Tuesday, 6 January 2009

Linux: Getting past the "BIOS doesn't leave a aperture memory hole" error or "How to enable the IOMMU option in the BIOS setup" .

This had been a major "To Do" item for me during the last year and I have tried many times to fix it, but today it seems I got lucky.

I had been seeing this on my CentOS workstation dmesg output, since the first day I installed it, approximately one year ago.

Checking aperture...
CPU 0: aperture @ 14000000 size 32 MB
Aperture too small (32 MB)
No AGP bridge found
Your BIOS doesn't leave a aperture memory hole
Please enable the IOMMU option in the BIOS setup
This costs you 64 MB of RAM

At first I thought it was nothing serious, and I tried to fix my graphics card that would not work with the NVidia provided drivers freezing the entire graphics system each time I would install them and tried to start X. I failed that too and replaced the graphics card with one from ATI. The new card appeared to work more satisfactory, but it would also hung if I tried to load the custom drivers provided by the vendor.

When I installed Feodra 9 at home, I saw the exact same error message but my GeForce 9600 NVidia appeared to work correctly so I dropped it. Then came Fedora 10 and there we were again. At the same time I began to get tired by the sluggish performance of my CentOS graphics and decided to try once again.

But his time I was lucky : jbkt23 provided the solution at the Fedora Forums. I am only copying it here just to help others who google for it come up with one much match.

Put it simply, the solution is to add the iommu=noaperture kernel boot parameter on your grub.conf file.

In more words, you need to edit the grub configuration file located in /boot/grub/grub.conf and locate the line that boots the current kernel. On my Fedora system the line looks like this :

title Fedora (
        root (hd0,0)
        kernel /boot/vmlinuz- ro root=UUID=8a9d59ee-c401-41bf-a4e6-8fdd97
067215 rhgb quiet iommu=noaperture
        initrd /boot/initrd-

All I needed was to add the bolded text at the end of the kernel line. Then a reboot and as MSK61 from the Fedora forum put it: Thanks, jbkt23. Worked like a charm.

The same solution worked for the CentOS 5.2 machine at work. There is more to it however. After getting rid of the IOMMU error, I tried to enable the 3D driver for my ATI Radeon X1300. At some point it worked. After the first reboot however, things went back to their normal not working state so I had to switch back to the standard driver.

Tomorrow I will try an NVidia card that was also not working and see how it goes.


Quirinius said...

But did that boot option actually give you more memory? Did you check with "free -m"?

Athanassios Bakalidis said...

You are right. I did not

I did some tests in todays post and it looks like we need to do more digging.

Thank you for "waking me up" :-)