On 01/03/2018 11:33, Liu, Yi L wrote: > +struct VTDDeviceNode { > + PCIBus *bus; > + uint8_t devfn; > + QLIST_ENTRY(VTDDeviceNode) next; > +};
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). Thanks, Paolo > +struct VTDPASIDAddressSpace { > + AddressSpace as; > + IOMMUSVAContext sva_ctx; > + IntelIOMMUState *iommu_state; > + /* list of devices binded to a pasid tagged address space */ > + QLIST_HEAD(, VTDDeviceNode) device_list; > +}; > +