On 15/05/2018 18:28, Peter Maydell wrote: > > Presumably we also want a way for notifier users like vfio to > detect "I'm dealing with an IOMMU that is txattrs aware in a > way I can't deal with" so they can usefully bail out rather than > not working. > > Unfortunately I don't really know enough about our two current > users of notifiers (vhost and vfio) to know what they actually > need the iommu notifications for...
As you guessed on IRC, they basically establish a shadow IOMMU page table or TLB. My proposal would be to add two MemTxAttrs arguments to the IOMMUNotify typedef and to memory_region_notify_one, respectively to indicate which attributes matter (0 = indifferent, 1 = matter) and their value. So far so good. Perhaps memory_region_register_iommu_notifier can also get an argument with the supported attributes. The function would then fail if there are fewer bits set in that argument than what the IOMMU supports... The only problem with that is that memory_region_register_iommu_notifier is called late from VFIO, and in a place that really cannot fail (a MemoryListener's region_add callback). So I would not be sure about how to deal with failure in the VFIO code. Thanks, Paolo