Linux - HardwareThis forum is for Hardware issues.
Having trouble installing a piece of hardware? Want to know if that peripheral is compatible with Linux?
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
the date on this thread is old, but it is still one of the top hits when googling for this error message.
I have an IOMMU bios option on my Tyan S2882 system board. The manual says this option is specifically for Linux, and allows the kernel to perform I/O mapping between 32 bit and 64 bit addresses. Also, this Tyan S2882 does not have AGP.
Some additional reading on AMD's implementation of IOMMU for Linux:
Distribution: openSuSE Tumbleweed-KDE, Mint 21, MX-21, Manjaro
Posts: 4,629
Rep:
Further digging in /var/log/boot.msg revealed this:
Code:
...
<6>[ 0.000000] Checking aperture...
<6>[ 0.000000] No AGP bridge found
<6>[ 0.000000] Node 0: aperture @ a0000000 size 32 MB
<6>[ 0.000000] Aperture pointing to e820 RAM. Ignoring.
<6>[ 0.000000] Your BIOS doesn't leave a aperture memory hole
<6>[ 0.000000] Please enable the IOMMU option in the BIOS setup
<6>[ 0.000000] This costs you 64 MB of RAM
<6>[ 0.000000] Mapping aperture over 65536 KB of RAM @ a0000000
<6>[ 0.000000] PM: Registered nosave memory: 00000000a0000000 - 00000000a4000000
...
<6>[ 0.731050] PCI-DMA: Disabling AGP.
<6>[ 0.731166] PCI-DMA: aperture base @ a0000000 size 65536 KB
<6>[ 0.731168] PCI-DMA: using GART IOMMU.
<6>[ 0.731170] PCI-DMA: Reserving 64MB of IOMMU area in the AGP aperture
...
If this is what I think it is, all is well...
P.S.: kernel boot parameter "iommu=noapg" switched off the integrated Radeon HD 4290, "iommu=soft" halted the integrated Radeon HD 4290, "iommu=memaper=2" doubled the reserved window size without other changes...
I get the impression people are too focussed on getting rid of a warning message while not fully understanding the implications. I know *I* was too focussed on getting rid of that warning message :-) I am using a system (ASUS M5A87) with an AMD Phenom II X4 955, AMD Radeon HD 6570 (PCIe) and 4GB of memory. I am currently using Fedora 16, but the effect of iommu=noaperture is the same on Fedora 15.
While using iommu=noaperture ("ask the IOMMU not to touch the aperture for AGP") makes the following section of the kernel messages go from:
Code:
Dec 7 01:55:49 Odin kernel: [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
Dec 7 01:55:49 Odin kernel: [ 0.000000] Checking aperture...
Dec 7 01:55:49 Odin kernel: [ 0.000000] No AGP bridge found
Dec 7 01:55:49 Odin kernel: [ 0.000000] Node 0: aperture @ 0 size 32 MB
Dec 7 01:55:49 Odin kernel: [ 0.000000] Your BIOS doesn't leave a aperture memory hole
Dec 7 01:55:49 Odin kernel: [ 0.000000] Please enable the IOMMU option in the BIOS setup
Dec 7 01:55:49 Odin kernel: [ 0.000000] This costs you 64 MB of RAM
Dec 7 01:55:49 Odin kernel: [ 0.000000] Mapping aperture over 65536 KB of RAM @ c4000000
Dec 7 01:55:49 Odin kernel: [ 0.000000] PM: Registered nosave memory: 00000000c4000000 - 00000000c8000000
Dec 7 01:55:49 Odin kernel: [ 0.000000] Memory: 3964892k/4980736k available (4873k kernel code, 787416k absent, 228428k reserved, 6776k data, 944k init)
Dec 7 01:55:49 Odin kernel: [ 1.423749] Freeing initrd memory: 16048k freed
Dec 7 01:55:49 Odin kernel: [ 1.428945] PCI-DMA: Disabling AGP.
Dec 7 01:55:49 Odin kernel: [ 1.429066] PCI-DMA: aperture base @ c4000000 size 65536 KB
Dec 7 01:55:49 Odin kernel: [ 1.429068] PCI-DMA: using GART IOMMU.
Dec 7 01:55:49 Odin kernel: [ 1.429071] PCI-DMA: Reserving 64MB of IOMMU area in the AGP aperture
to:
Code:
Dec 7 02:06:32 Odin kernel: [ 1.413799] Freeing initrd memory: 16048k freed
Dec 7 02:06:32 Odin kernel: [ 1.419009] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
Dec 7 02:06:32 Odin kernel: [ 1.419013] Placing 64MB software IO TLB between ffff8800cbf7e000 - ffff8800cff7e000
Dec 7 02:06:32 Odin kernel: [ 1.419015] software IO TLB at phys 0xcbf7e000 - 0xcff7e000
In other words, where first on-chip hardware was used (GART IOMMU), after using the kernel option iommu=noaperture a software implementation will be used. I guess (but I'm not sure) this is not what I and with me, other people want. That is, compared to losing 64MB of memory. However, that appears to apply only to systems with an AMD 64-bits processor, because they contain an IOMMU. AFAIK systems with an Intel processor will always use a software implementation. My system will lose 64MB either way, because at address range 0xcbf7e000 - 0xcff7e000 there is memory according to the BIOS-provided physical RAM map.
Using the option iommu=noagp ("don't initialize the AGP driver and use full aperture") seems appropriate for a PCIe system, although I don't see any difference in the sections I referred to above (compared to not specifying the kernel argument iommu). So, this brings us back to "Please enable the IOMMU option in the BIOS setup". I don't know how to do that on my system...
To add to tredegar's explanation about where to specify kernel arguments: On Fedora 16 you would have to modify the file /boot/grub2/grub.cfg.
Last edited by dbjh; 12-10-2011 at 07:56 AM.
Reason: Changed incorrect statement about Intel processors.
Exactly. But as you can see from this thread alone, there are no fast and easy explanations either, not to mention your
Excuse me, but my what?
It depends on the level of understanding and knowledge of the reader whether it is easy of course. As far as I understand the problem it is basically a shortcoming in BIOS implementations that do not offer the option to map part of the memory outside the 32-bit address space (to create a "hole" in the address space that can be used to communicate with the video card without eclipsing memory). To reach optimal performance (perhaps to make things work at all) all video memory should be accessible within the 32-bit address space of the processor (probably while also using a bank switching technique). A BIOS written for 64-bit AMD processors *should* offer that option. An explanation for not implementing it might be that the cost of doing so is thought of as being higher than the lost sales due to the lack of that feature. The problem does not show itself if you have at least 64MB less than 4GB in a system. If you have exactly 4GB in your system you lose 1.6% of your usable memory. That percentage gets lower as you install more memory.
Quote:
Originally Posted by JZL240I-U
Obviously nobody does. But I still hate "errors" with no chance of mitigating them.
I understand that :-) I meant it more like it is impossible to do that on my system. That people, including me even note and try to solve this problem is also because of the wording of the kernel log message. For example, I quoted this part of my /var/log/messages:
Code:
Dec 7 02:06:32 Odin kernel: [ 1.419013] Placing 64MB software IO TLB between ffff8800cbf7e000 - ffff8800cff7e000
Dec 7 02:06:32 Odin kernel: [ 1.419015] software IO TLB at phys 0xcbf7e000 - 0xcff7e000
I missed this before I read your post where you quoted part of your /var/log/boot.msg. Here 64MB is also being wasted without making it explicit to the casual reader. I guess we would have seen a thread on this site if a kernel message was added that said "This costs you 64 MB of RAM".
And yes, I also dislike warning or error messages without being able to do anything about it.
Quote:
Originally Posted by JZL240I-U
Oh, and thanks for your post and explanations .
You are welcome. Thank you too for your posts :-) Thanks to you I realised there is a cost to using iommu=noaperture and that I cannot avoid losing 64MB on my system.
Distribution: openSuSE Tumbleweed-KDE, Mint 21, MX-21, Manjaro
Posts: 4,629
Rep:
Quote:
Originally Posted by dbjh
Excuse me, but my what?...
Your next snippet of text I quoted immediately following my "..., not to mention your" -> So, this brings us back to "Please enable the IOMMU option in the BIOS setup". I don't know how to do that on my system....
Sorry, I found this self-explaining when I wrote it, I had no intention to be obscure.
Quote:
Originally Posted by dbjh
It depends on the level of understanding and knowledge of the reader whether it is easy of course...?
Woe unto me .
Quote:
Originally Posted by dbjh
[more detailed explanations here]
...
...I cannot avoid losing 64MB on my system.
My first Atari MegaST computer had 1 (one!) MB, 360 kB more than the then biggest PC-memory available, and so it seemed huge at that time. I still have a bone-feeling of waste, when I read about the casual loss of 64 MB even though my system now has 4 GB ... must be getting old .
I found this thread, because I noticed for the first time that warning about "BIOS does not leave an aperture memory hole...this costs you 64 MB of RAM". Well, it is November 2012 and I am surprised that since 2008 this thread exists, yet, the kernel has not been touched at all, it seems. I courrently run 3.2.0-23-lowlatency #31-Ubuntu SMP PREEMPT Wed Apr 11 02:24:03 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux. I blame, yessir, the BIOS of my laptop for being so crapy simple, that does not allow me to do "advanced" settings. But again, something is got to be done to the kernel, isn't it? like, an update or something. I also dislike to loose memory resources for nothing, even if I got 4GB installed. Taxes?
Out of all of the "change your kernel" responses, I never once found the "what to change" being given.
Hi, all!
I am from the future and from the Gentoo world.
The following annoying message
[0.000000] AGP: Checking aperture...
[0.000000] AGP: No AGP bridge found
[0.000000] AGP: Node 0: aperture [bus addr 0xb4000000-0xb5ffffff] (32MB)
[0.000000] Aperture pointing to e820 RAM. Ignoring.
[0.000000] AGP: Your BIOS doesn't leave an aperture memory hole
[0.000000] AGP: Please enable the IOMMU option in the BIOS setup
[0.000000] AGP: This costs you 64MB of RAM
[0.000000] AGP: Mapping aperture over RAM [mem 0xb4000000-0xb7ffffff] (65536KB)
disappeared from my dmesg after I switched off all AGP- and IOMMU-related options from my kernel config and recompiled the kernel.
After doing so, my kernel became more lightweight (on about 82K) and I still can play video in a full-screen mode.
If you do not have (or use) AGP and cannot switch on IOMMU in your BIOS, most probable that you do not need AGP- and IOMMU-related options in your kernel. So, why to keep them at all?
Quote:
Originally Posted by H_TeXMeX_H
I think Emerson also posted a reasonable solution, simply disable AGP in the kernel.
Simply disabling AGP in the kernel was not enough to get rid of the message above, at least in my case.
Quote:
Originally Posted by dbjh
While using iommu=noaperture ("ask the IOMMU not to touch the aperture for AGP") makes the following section of the kernel messages go from:
Dec 7 01:55:49 Odin kernel: [0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
Dec 7 01:55:49 Odin kernel: [0.000000] Checking aperture...
Dec 7 01:55:49 Odin kernel: [0.000000] No AGP bridge found
Dec 7 01:55:49 Odin kernel: [0.000000] Node 0: aperture @ 0 size 32 MB
Dec 7 01:55:49 Odin kernel: [0.000000] Your BIOS doesn't leave a aperture memory hole
Dec 7 01:55:49 Odin kernel: [0.000000] Please enable the IOMMU option in the BIOS setup
Dec 7 01:55:49 Odin kernel: [0.000000] This costs you 64 MB of RAM
Dec 7 01:55:49 Odin kernel: [0.000000] Mapping aperture over 65536 KB of RAM @ c4000000
Dec 7 01:55:49 Odin kernel: [0.000000] PM: Registered nosave memory: 00000000c4000000 - 00000000c8000000
Dec 7 01:55:49 Odin kernel: [0.000000] Memory: 3964892k/4980736k available (4873k kernel code, 787416k absent, 228428k reserved, 6776k data, 944k init)
to:
Dec 7 02:06:32 Odin kernel: [0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
Dec 7 02:06:32 Odin kernel: [0.000000] Memory: 4030428k/4980736k available (4873k kernel code, 787416k absent, 162892k reserved, 6776k data, 944k init)
It also makes the following section go from:
Dec 7 01:55:49 Odin kernel: [1.423749] Freeing initrd memory: 16048k freed
Dec 7 01:55:49 Odin kernel: [1.428945] PCI-DMA: Disabling AGP.
Dec 7 01:55:49 Odin kernel: [1.429066] PCI-DMA: aperture base @ c4000000 size 65536 KB
Dec 7 01:55:49 Odin kernel: [1.429068] PCI-DMA: using GART IOMMU.
Dec 7 01:55:49 Odin kernel: [1.429071] PCI-DMA: Reserving 64MB of IOMMU area in the AGP aperture
to:
Dec 7 02:06:32 Odin kernel: [1.413799] Freeing initrd memory: 16048k freed
Dec 7 02:06:32 Odin kernel: [1.419009] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
Dec 7 02:06:32 Odin kernel: [1.419013] Placing 64MB software IO TLB between ffff8800cbf7e000 - ffff8800cff7e000
Dec 7 02:06:32 Odin kernel: [1.419015] software IO TLB at phys 0xcbf7e000 - 0xcff7e000
Well. No warning message any more.
Quote:
Originally Posted by dbjh
In other words, where first on-chip hardware was used (GART_IOMMU), after using the kernel option iommu=noaperture a software implementation will be used. I guess (but I'm not sure) this is not what I and with me, other people want. That is, compared to losing 64MB of memory.
But now these 64MB are not lost. They are used.
Quote:
Originally Posted by dbjh
However, that appears to apply only to systems with an AMD 64-bits processor, because they contain an IOMMU.
I am very much doubt that my AMD Athlon 64 X2 5000+ “contains an IOMMU”. At least, there is not a single word about it here.
Quote:
Originally Posted by dbjh
My system will lose 64MB either way, because at address range 0xcbf7e000 - 0xcff7e000 there is memory according to the BIOS-provided physical RAM map.
Using the option iommu=noagp ("don't initialize the AGP driver and use full aperture") seems appropriate for a PCIe system, although I don't see any difference in the sections I referred to above (compared to not specifying the kernel argument iommu). So, this brings us back to "Please enable the IOMMU option in the BIOS setup".
After disabling all AGP- and IOMMU-related options in my kernel, I still get
[0.635881] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
[0.635917] software IO TLB [mem 0xbbee0000-0xbfee0000] (64MB) mapped at [ffff8eaefbee0000-ffff8eaeffedffff]
at my dmesg but no message saying that I am loosig 64MB of RAM and no “Please enable the IOMMU option in the BIOS setup.”
Still wonder if I should disable SWIOTLB in my kernel as well.
P.S. I have Gigabyte GA-MA69GM-S2H mother board with only integrated in the north bridge AMD 690G [ATI Radeon X1250] graphic card.
P.P.S. You can still benefit from enabling IOMMU in kernel, if you are going to ran it inside some virtual machine that simulates IOMMU.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.