summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorGerald Schaefer <gerald.schaefer@de.ibm.com>2014-02-18 19:47:17 +0100
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2014-02-21 08:48:27 +0100
commit5ec6d4918a45952e99b1b36c93372d79d6927c57 (patch)
treedbe20b17bd575cbc14cb1967b954c01686083896 /arch
parent423edb6fce67133d4524513954af943a75bb6ef5 (diff)
downloadlinux-stable-5ec6d4918a45952e99b1b36c93372d79d6927c57.tar.gz
linux-stable-5ec6d4918a45952e99b1b36c93372d79d6927c57.tar.bz2
linux-stable-5ec6d4918a45952e99b1b36c93372d79d6927c57.zip
s390/pci/dma: use correct segment boundary size
The boundary size for iommu_area_alloc() is currently set to a constant value. This is wrong, we shouldn't use a constant value but rather the return value of dma_get_seg_boundary(), since a device driver can override the default. Reviewed-by: Sebastian Ott <sebott@linux.vnet.ibm.com> Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/s390/pci/pci_dma.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/s390/pci/pci_dma.c b/arch/s390/pci/pci_dma.c
index 60c11a629d96..f91c03119804 100644
--- a/arch/s390/pci/pci_dma.c
+++ b/arch/s390/pci/pci_dma.c
@@ -206,11 +206,13 @@ static void dma_cleanup_tables(struct zpci_dev *zdev)
zdev->dma_table = NULL;
}
-static unsigned long __dma_alloc_iommu(struct zpci_dev *zdev, unsigned long start,
- int size)
+static unsigned long __dma_alloc_iommu(struct zpci_dev *zdev,
+ unsigned long start, int size)
{
- unsigned long boundary_size = 0x1000000;
+ unsigned long boundary_size;
+ boundary_size = ALIGN(dma_get_seg_boundary(&zdev->pdev->dev) + 1,
+ PAGE_SIZE) >> PAGE_SHIFT;
return iommu_area_alloc(zdev->iommu_bitmap, zdev->iommu_pages,
start, size, 0, boundary_size, 0);
}