powerpc: Add proper reference to dma_mask

Subsystems: linux for powerpc (32-bit and 64-bit), the rest

4 messages, 3 authors, 2008-07-08 · open the first message on its own page

powerpc: Add proper reference to dma_mask

From: Vitaly Bordug <hidden>
Date: 2008-07-07 23:13:07

There is dma_mask in of_device that is being filled upon
of_platform_device_create() but we don't properly set the struct device
in there to point back to it. coherent_dma_mask wasn't set up either -
these caused weird lock-ups and behavior of USB subsystem using
of_device USB host drivers.

Signed-off-by: Vitaly Bordug <redacted>
---

 arch/powerpc/kernel/of_platform.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/arch/powerpc/kernel/of_platform.c b/arch/powerpc/kernel/of_platform.c
index e79ad8a..2bf4c04 100644
--- a/arch/powerpc/kernel/of_platform.c
+++ b/arch/powerpc/kernel/of_platform.c
@@ -76,6 +76,9 @@ struct of_device* of_platform_device_create(struct device_node *np,
 		return NULL;
 
 	dev->dma_mask = 0xffffffffUL;
+	dev->dev.dma_mask = &dev->dma_mask;
+	dev->dev.coherent_dma_mask = DMA_32BIT_MASK;
+
 	dev->dev.bus = &of_platform_bus_type;
 
 	/* We do not fill the DMA ops for platform devices by default.

Re: powerpc: Add proper reference to dma_mask

From: Stephen Rothwell <hidden>
Date: 2008-07-08 03:54:34

Hi Vitaly,

On Tue, 8 Jul 2008 03:12:56 +0400 Vitaly Bordug [off-list ref] wrote:
quoted hunk
+++ b/arch/powerpc/kernel/of_platform.c
@@ -76,6 +76,9 @@ struct of_device* of_platform_device_create(struct device_node *np,
 		return NULL;
 
 	dev->dma_mask = 0xffffffffUL;
+	dev->dev.dma_mask = &dev->dma_mask;
That is done in of_device_alloc which is called just above.

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/

Re: powerpc: Add proper reference to dma_mask

From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2008-07-08 04:28:24

On Tue, 2008-07-08 at 13:54 +1000, Stephen Rothwell wrote:
Hi Vitaly,

On Tue, 8 Jul 2008 03:12:56 +0400 Vitaly Bordug [off-list ref] wrote:
quoted
+++ b/arch/powerpc/kernel/of_platform.c
@@ -76,6 +76,9 @@ struct of_device* of_platform_device_create(struct device_node *np,
 		return NULL;
 
 	dev->dma_mask = 0xffffffffUL;
+	dev->dev.dma_mask = &dev->dma_mask;
That is done in of_device_alloc which is called just above.
So the problem might just be that coherent_dma_mask isn't set.

Ben.

Re: powerpc: Add proper reference to dma_mask

From: Vitaly Bordug <hidden>
Date: 2008-07-08 12:48:54

=D0=92 Tue, 08 Jul 2008 14:28:11 +1000
Benjamin Herrenschmidt [off-list ref] =D0=BF=D0=B8=D1=88=D0=B5=
=D1=82:
On Tue, 2008-07-08 at 13:54 +1000, Stephen Rothwell wrote:
quoted
Hi Vitaly,
=20
On Tue, 8 Jul 2008 03:12:56 +0400 Vitaly Bordug
[off-list ref] wrote:
quoted
+++ b/arch/powerpc/kernel/of_platform.c
@@ -76,6 +76,9 @@ struct of_device*
of_platform_device_create(struct device_node *np, return NULL;
=20
 	dev->dma_mask =3D 0xffffffffUL;
+	dev->dev.dma_mask =3D &dev->dma_mask;
=20
That is done in of_device_alloc which is called just above.
=20
So the problem might just be that coherent_dma_mask isn't set.
=20
I'll check and resubmit, thanks

-Vitaly
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help