Linux »

IOMMU

Some AMD64 computers, like the Dell Dimension E521, have a problem not enabling the IOMMU correctly. This way the PCI DMA memory is going to be very limited, resulting in the kernel call dma_alloc_coherent() only being able to allocate a few megabytes of memory all-in-all.

For some purposes this can be quite limiting. ALSA and asfxload (and sfxload) may load MIDI synthesizer soundfont files in the PCI DMA memory (e.g. the emu10k1 driver for Soundblaster(tm) cards), and they can be quite large. A General MIDI (GM) soundfont can be 100MB in size.

$ asfxload gmsoundfont.sf2
sfxload: no memory left

This despite of allocating the driver enough memory ("options snd-emu10k1 max_buffer_size=128" in /etc/modeprobe.conf) and "asfxload -M" shows more than adequate memory left.

The workaround is to force IOMMU enabled with a kernel boot option;

iommu=force,memaper=3

This not only forces the IOMMU on, but also allocates 256MB PCI DMA memory.

References

Home

Ping site


















Page last modified 2012-11-21 14:40Z

^