From 085dd2f27a68ce702d2a256fd6aa6a5490911581 Mon Sep 17 00:00:00 2001 From: Nishanth Aravamudan Date: Mon, 18 Oct 2010 07:27:04 +0000 Subject: [PATCH] --- yaml --- r: 229337 b: refs/heads/master c: b3c73856ae47d43d0d181f9de1c1c6c0820c4515 h: refs/heads/master i: 229335: c90de76cffa549205bcf6bbfeed0f58ecc6c0f13 v: v3 --- [refs] | 2 +- trunk/arch/powerpc/kernel/dma-iommu.c | 2 +- trunk/arch/powerpc/kernel/vio.c | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 971dc880a519..cfd6c6dffacb 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 56d8adc5695a8d3f070c8498d532389580af5611 +refs/heads/master: b3c73856ae47d43d0d181f9de1c1c6c0820c4515 diff --git a/trunk/arch/powerpc/kernel/dma-iommu.c b/trunk/arch/powerpc/kernel/dma-iommu.c index 6e54a0fd31aa..e7554154a6de 100644 --- a/trunk/arch/powerpc/kernel/dma-iommu.c +++ b/trunk/arch/powerpc/kernel/dma-iommu.c @@ -19,7 +19,7 @@ static void *dma_iommu_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t flag) { return iommu_alloc_coherent(dev, get_iommu_table_base(dev), size, - dma_handle, device_to_mask(dev), flag, + dma_handle, dev->coherent_dma_mask, flag, dev_to_node(dev)); } diff --git a/trunk/arch/powerpc/kernel/vio.c b/trunk/arch/powerpc/kernel/vio.c index b2654058f2e4..1b695fdc362b 100644 --- a/trunk/arch/powerpc/kernel/vio.c +++ b/trunk/arch/powerpc/kernel/vio.c @@ -1257,6 +1257,10 @@ struct vio_dev *vio_register_device_node(struct device_node *of_node) viodev->dev.parent = &vio_bus_device.dev; viodev->dev.bus = &vio_bus_type; viodev->dev.release = vio_dev_release; + /* needed to ensure proper operation of coherent allocations + * later, in case driver doesn't set it explicitly */ + dma_set_mask(&viodev->dev, DMA_BIT_MASK(64)); + dma_set_coherent_mask(&viodev->dev, DMA_BIT_MASK(64)); /* register with generic device framework */ if (device_register(&viodev->dev)) {