On Mon, 2009-05-18 at 13:51 +0800, Yu Zhao wrote: > Enable the device IOTLB (i.e. ATS) for both the bare metal and KVM > environments. Hmmm. Your iommu_flush_dev_iotlb() function takes the _global_ spinlock 'device_domain_lock'. And you do this unconditionally -- you aren't even calling it only for domains which have ATS-capable devices attached. How about using a flag similar to iommu_snooping, which is recalculated only when you add or remove a device? And only calling iommu_flush_dev_iotlb() if that's set? -- David Woodhouse Open Source Technology Centre David.Woodhouse@xxxxxxxxx Intel Corporation -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html