On 05/03/2018 10:11, Liu, Yi L wrote: >> Do you really need VTDDeviceNode? I think can you simply put the >> QLIST_ENTRY in VTDAddressSpace (named e.g. next_by_pasid), since >> VTDAddressSpace already includes a (bus, devfn). > Existing VTDAddressSpace is actaully per-device. While for PASID tagged > address space, it is possible to have multiple devices tied to a single > PASID tagged address space.
Yes, that's the purpose of VTDPASIDAddressSpace. > Reuse VTDAddressSpace could be a choice since > it is a per-device structure, but it may be missleading since there is > other fileds in VTDAddressSpace. This is why I proposed to have VTDDeviceNode. I think it's okay to put all per-device setup in VTDAddressSpace. Later if it makes sense VTDAddressSpace could become a union, according to whether the IOMMU is configured for PASID or requester ID operation, and could be renamed to VTDDeviceInfo. But for now it's not needed. Paolo > But consolidation is possible here.