s390x/pci: fix failures of dma map/unmap
In commit d78c19b5cf, vfio code stores
the IOMMU's offset_within_address_space and adjusts the IOVA before
calling vfio_dma_map/vfio_dma_unmap. But s390_translate_iommu already
considers the base address of an IOMMU memory region.
Thus we use pal as the size and 0x0 as the base address to initialize
IOMMU memory subregion.
Signed-off-by: Yi Min Zhao <zyimin@linux.vnet.ibm.com>
Reviewed-by: Pierre Morel <pmorel@linux.vnet.ibm.com>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
			
			
This commit is contained in:
		
				
					committed by
					
						 Cornelia Huck
						Cornelia Huck
					
				
			
			
				
	
			
			
			
						parent
						
							b804e8a62a
						
					
				
				
					commit
					f7c40aa1e7
				
			| @@ -498,11 +498,9 @@ static const MemoryRegionOps s390_msi_ctrl_ops = { | ||||
|  | ||||
| void s390_pci_iommu_enable(S390PCIBusDevice *pbdev) | ||||
| { | ||||
|     uint64_t size = pbdev->pal - pbdev->pba + 1; | ||||
|  | ||||
|     memory_region_init_iommu(&pbdev->iommu_mr, OBJECT(&pbdev->mr), | ||||
|                              &s390_iommu_ops, "iommu-s390", size); | ||||
|     memory_region_add_subregion(&pbdev->mr, pbdev->pba, &pbdev->iommu_mr); | ||||
|                              &s390_iommu_ops, "iommu-s390", pbdev->pal + 1); | ||||
|     memory_region_add_subregion(&pbdev->mr, 0, &pbdev->iommu_mr); | ||||
|     pbdev->iommu_enabled = true; | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user