https://lkml.org/lkml/2011/7/14/238 Currently, it is necessary to load the kvm module with allow_unsafe_assigned_interrupts=1 in order to do PCI Passthrough on AMD hardware, which can cause the guest to crash the host OS. We should modify the kernel component to use the IOMMU for interrupt remapping to fix this.
What you're looking for here is the VFIO branch where this work is happening. It looks like it has some potential to land in Linux 3.6 and QEMU 1.2. But until then, the current stuff in the kernel is totally wrong and busted because AMD actually implements a PCIe<->PCI bridge and as such the IOMMU can't really see beyond the bridge and deal with IRQs correctly. The result is a complicated solution that is slowly taking shape but should really be discussed upstream.