This is a resend of the iommu series, mostly from Eduard and David with the following changes:
- Replaced the _zero functions with _set functions to provide memset-like semantics and re-implemented in term of cpu_physical_memory_rw() with a small local buffer - Removed the tracking of maps, instead added callbacks for the iommu backend to optionally provide its own map and unmap callbacks (to do its own tracking and synchronization) with a default implementation based on using translate. We still add the optional "cancel" argument to map, it will be used by subsequent iommu backend implementations. The initial TCE implementation uses the default implementation. I removed David's previous "wait" mechanism. - Removed the memory barrier patch for now, we'll discuss it separately