Re: [PATCH 00/20] iommu/amd: Use generic IOVA allocator

From: Wan Zongshun
Date: Tue Jul 12 2016 - 05:03:24 EST

On 2016å07æ08æ 19:44, Joerg Roedel wrote:

here is a patch-set to make the AMD IOMMU driver use the
generic IOVA allocator, which is already used in the Intel
VT-d driver and a few other places.

The main reason for the conversion is to make the driver
benefit from the recent scalability improvements to the IOVA
code. Some of these improvements happened in the Intel VT-d
driver, these are not re-used but, for now, re-implemented.

This leaves more room for merging things together into
common code for the future.

The allocator that was previously used will be removed with
these patches.

Please review.


Currently, those patches can not work at my eCarrizo board.
When I merged your patches, boot failed, and no any info print to me.
I set iommu=pt, it also does not work; set iommu=soft, boot ok.

When I removed those patches, kernel boot ok.

This eCarrizo board uart doesnot work, so I can not get useful information from kernel by uart console, I also set 'text' in boot option, but still cannot print any log.




Joerg Roedel (20):
iommu: Add apply_dm_region call-back to iommu-ops
iommu/amd: Select IOMMU_IOVA for AMD IOMMU
iommu/amd: Allocate iova_domain for dma_ops_domain
iommu/amd: Create a list of reserved iova addresses
iommu/amd: Implement apply_dm_region call-back
iommu/amd: Pass gfp-flags to iommu_map_page()
iommu/amd: Remove special mapping code for dma_ops path
iommu/amd: Make use of the generic IOVA allocator
iommu/amd: Remove other remains of old address allocator
iommu/amd: Remove align-parameter from __map_single()
iommu/amd: Set up data structures for flush queue
iommu/amd: Allow NULL pointer parameter for domain_flush_complete()
iommu/amd: Implement flush queue
iommu/amd: Implement timeout to flush unmap queues
iommu/amd: Introduce dir2prot() helper
iommu/amd: Optimize map_sg and unmap_sg
iommu/amd: Use dev_data->domain in get_domain()
iommu/amd: Handle IOMMU_DOMAIN_DMA in ops->domain_free call-back
iommu/amd: Flush iova queue before releasing dma_ops_domain
iommu/amd: Use container_of to get dma_ops_domain

drivers/iommu/Kconfig | 1 +
drivers/iommu/amd_iommu.c | 976 ++++++++++++++++------------------------
drivers/iommu/amd_iommu_types.h | 1 -
drivers/iommu/iommu.c | 3 +
include/linux/iommu.h | 3 +
5 files changed, 387 insertions(+), 597 deletions(-)