On Sat, 29 Apr 2017 22:37:07 +1000 Alexey Kardashevskiy <a...@ozlabs.ru> wrote:
> This defines new QOM object - IOMMUMemoryRegion - with MemoryRegion > as a parent. > > This moves IOMMU-related fields from MR to IOMMU MR. However to avoid > dymanic QOM casting in fast path (address_space_translate, etc), > this adds an @is_iommu boolean flag to MR and provides new helper to > do simple cast to IOMMU MR - memory_region_get_iommu. The flag > is set in the instance init callback. This defines > memory_region_is_iommu as memory_region_get_iommu()!=NULL. > > This switches MemoryRegion to IOMMUMemoryRegion in most places except > the ones where MemoryRegion may be an alias. > > This defines memory_region_init_iommu_type() to allow creating > IOMMUMemoryRegion subclasses. In order to support custom QOM type, > this splits memory_region_init() to object_initialize() + > memory_region_do_init. > > Signed-off-by: Alexey Kardashevskiy <a...@ozlabs.ru> > /** > + * memory_region_init_iommu_type: Initialize a memory region of a custom type > + * that translates addresses > + * > + * An IOMMU region translates addresses and forwards accesses to a target > + * memory region. > + * > + * @typename: QOM class name > + * @iommumr: the #IOMMUMemoryRegion to be initialized <bikeshed> I find "iommumr" terribly hard to read. Maybe iommu_mr is better? (Lots of times in this patch.) </bikeshed> The s390 parts look fine.