On Fri, May 29, 2015 at 06:44:40PM +1000, Alexey Kardashevskiy wrote: > Modern IBM POWERPC systems support multiple (currently two) TCE tables > per IOMMU group (a.k.a. PE). This adds a iommu_table_group container > for TCE tables. Right now just one table is supported. > > This defines iommu_table_group struct which stores pointers to > iommu_group and iommu_table(s). This replaces iommu_table with > iommu_table_group where iommu_table was used to identify a group: > - iommu_register_group(); > - iommudata of generic iommu_group; > > This removes @data from iommu_table as it_table_group provides > same access to pnv_ioda_pe. > > For IODA, instead of embedding iommu_table, the new iommu_table_group > keeps pointers to those. The iommu_table structs are allocated > dynamically. > > For P5IOC2, both iommu_table_group and iommu_table are embedded into > PE struct. As there is no EEH and SRIOV support for P5IOC2, > iommu_free_table() should not be called on iommu_table struct pointers > so we can keep it embedded in pnv_phb::p5ioc2. > > For pSeries, this replaces multiple calls of kzalloc_node() with a new > iommu_pseries_alloc_group() helper and stores the table group struct > pointer into the pci_dn struct. For release, a iommu_table_free_group() > helper is added. > > This moves iommu_table struct allocation from SR-IOV code to > the generic DMA initialization code in pnv_pci_ioda_setup_dma_pe and > pnv_pci_ioda2_setup_dma_pe as this is where DMA is actually initialized. > This change is here because those lines had to be changed anyway. > > This should cause no behavioural change. > > Signed-off-by: Alexey Kardashevskiy <aik@xxxxxxxxx> > [aw: for the vfio related changes] > Acked-by: Alex Williamson <alex.williamson@xxxxxxxxxx> Reviewed-by: David Gibson <david@xxxxxxxxxxxxxxxxxxxxx> -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
Attachment:
pgp90bOrkr8oJ.pgp
Description: PGP signature