Patchwork i2c-cpm: Pass dev ptr to dma_*_coherent rather than NULL

login
register
mail settings
Submitter Mark Ware
Date April 21, 2009, 12:49 p.m.
Message ID <49EDC0BE.7040505@elphinstone.net>
Download mbox | patch
Permalink /patch/26249/
State Accepted, archived
Delegated to: Kumar Gala
Headers show

Comments

Mark Ware - April 21, 2009, 12:49 p.m.
Recent DMA changes result in a BUG() when NULL is passed to
dma_alloc_coherent in place of a device.

Signed-off-by: Mark Ware <mware@elphinstone.net>
---

This patch fixes the BUG() during boot that has appeared during the
2.6.30 window. It has been tested and appears correct on my 8280 based
board.
Sent to both linuxppc-dev and linux-i2c, since I'm not sure where it belongs.


  drivers/i2c/busses/i2c-cpm.c |   14 ++++++++------
  1 files changed, 8 insertions(+), 6 deletions(-)
Kumar Gala - April 21, 2009, 3:11 p.m.
On Apr 21, 2009, at 7:49 AM, Mark Ware wrote:

> Recent DMA changes result in a BUG() when NULL is passed to
> dma_alloc_coherent in place of a device.
>
> Signed-off-by: Mark Ware <mware@elphinstone.net>
> ---
>
> This patch fixes the BUG() during boot that has appeared during the
> 2.6.30 window. It has been tested and appears correct on my 8280 based
> board.
> Sent to both linuxppc-dev and linux-i2c, since I'm not sure where it  
> belongs.
>
>
> drivers/i2c/busses/i2c-cpm.c |   14 ++++++++------
> 1 files changed, 8 insertions(+), 6 deletions(-)

Acked-by: Kumar Gala <galak@kernel.crashing.org>

Ben, I'm expecting you to pick this up unless you tell me otherwise.

- k
Ben Dooks - April 22, 2009, 9:56 p.m.
On Tue, Apr 21, 2009 at 10:11:51AM -0500, Kumar Gala wrote:
> 
> On Apr 21, 2009, at 7:49 AM, Mark Ware wrote:
> 
> >Recent DMA changes result in a BUG() when NULL is passed to
> >dma_alloc_coherent in place of a device.
> >
> >Signed-off-by: Mark Ware <mware@elphinstone.net>
> >---
> >
> >This patch fixes the BUG() during boot that has appeared during the
> >2.6.30 window. It has been tested and appears correct on my 8280 based
> >board.
> >Sent to both linuxppc-dev and linux-i2c, since I'm not sure where it  
> >belongs.
> >
> >
> >drivers/i2c/busses/i2c-cpm.c |   14 ++++++++------
> >1 files changed, 8 insertions(+), 6 deletions(-)
> 
> Acked-by: Kumar Gala <galak@kernel.crashing.org>
> 
> Ben, I'm expecting you to pick this up unless you tell me otherwise.

Yes.
Kumar Gala - April 29, 2009, 1:43 p.m.
On Apr 22, 2009, at 4:56 PM, Ben Dooks wrote:

> On Tue, Apr 21, 2009 at 10:11:51AM -0500, Kumar Gala wrote:
>>
>> On Apr 21, 2009, at 7:49 AM, Mark Ware wrote:
>>
>>> Recent DMA changes result in a BUG() when NULL is passed to
>>> dma_alloc_coherent in place of a device.
>>>
>>> Signed-off-by: Mark Ware <mware@elphinstone.net>
>>> ---
>>>
>>> This patch fixes the BUG() during boot that has appeared during the
>>> 2.6.30 window. It has been tested and appears correct on my 8280  
>>> based
>>> board.
>>> Sent to both linuxppc-dev and linux-i2c, since I'm not sure where it
>>> belongs.
>>>
>>>
>>> drivers/i2c/busses/i2c-cpm.c |   14 ++++++++------
>>> 1 files changed, 8 insertions(+), 6 deletions(-)
>>
>> Acked-by: Kumar Gala <galak@kernel.crashing.org>
>>
>> Ben, I'm expecting you to pick this up unless you tell me otherwise.
>
> Yes.

This go in yet?

- k
Ben Dooks - May 3, 2009, 10:23 p.m.
On Wed, Apr 29, 2009 at 08:43:14AM -0500, Kumar Gala wrote:
>
> On Apr 22, 2009, at 4:56 PM, Ben Dooks wrote:
>
>> On Tue, Apr 21, 2009 at 10:11:51AM -0500, Kumar Gala wrote:
>>>
>>> On Apr 21, 2009, at 7:49 AM, Mark Ware wrote:
>>>
>>>> Recent DMA changes result in a BUG() when NULL is passed to
>>>> dma_alloc_coherent in place of a device.
>>>>
>>>> Signed-off-by: Mark Ware <mware@elphinstone.net>
>>>> ---
>>>>
>>>> This patch fixes the BUG() during boot that has appeared during the
>>>> 2.6.30 window. It has been tested and appears correct on my 8280  
>>>> based
>>>> board.
>>>> Sent to both linuxppc-dev and linux-i2c, since I'm not sure where it
>>>> belongs.
>>>>
>>>>
>>>> drivers/i2c/busses/i2c-cpm.c |   14 ++++++++------
>>>> 1 files changed, 8 insertions(+), 6 deletions(-)
>>>
>>> Acked-by: Kumar Gala <galak@kernel.crashing.org>
>>>
>>> Ben, I'm expecting you to pick this up unless you tell me otherwise.
>>
>> Yes.
>
> This go in yet?

I've had to do a manual apply due to some changes in the
driver, so can someone please do a build of my git tree
at:

git://aeryn.fluff.org.uk/bjdooks/linux.git i2c-for-2630-rc5

or tell me which arch and defconfig to build.
Mark Ware - May 11, 2009, 4:28 a.m.
Ben Dooks wrote:
> On Wed, Apr 29, 2009 at 08:43:14AM -0500, Kumar Gala wrote:
>> On Apr 22, 2009, at 4:56 PM, Ben Dooks wrote:
>>
>>> On Tue, Apr 21, 2009 at 10:11:51AM -0500, Kumar Gala wrote:
>>>> On Apr 21, 2009, at 7:49 AM, Mark Ware wrote:
>>>>
>>>>> Recent DMA changes result in a BUG() when NULL is passed to
>>>>> dma_alloc_coherent in place of a device.
>>>>>
>>>>> Signed-off-by: Mark Ware <mware@elphinstone.net>
>>>>> ---
>>>>>
>>>>> This patch fixes the BUG() during boot that has appeared during the
>>>>> 2.6.30 window. It has been tested and appears correct on my 8280  
>>>>> based
>>>>> board.
>>>>> Sent to both linuxppc-dev and linux-i2c, since I'm not sure where it
>>>>> belongs.
>>>>>
>>>>>
>>>>> drivers/i2c/busses/i2c-cpm.c |   14 ++++++++------
>>>>> 1 files changed, 8 insertions(+), 6 deletions(-)
>>>> Acked-by: Kumar Gala <galak@kernel.crashing.org>
>>>>
>>>> Ben, I'm expecting you to pick this up unless you tell me otherwise.
>>> Yes.
>> This go in yet?
> 
> I've had to do a manual apply due to some changes in the
> driver, so can someone please do a build of my git tree
> at:
> 
> git://aeryn.fluff.org.uk/bjdooks/linux.git i2c-for-2630-rc5
> 
> or tell me which arch and defconfig to build.
> 

Ping.  Is there anything still blocking this?

Mark Ware
Ben Dooks - May 11, 2009, 11:18 p.m.
On Mon, May 11, 2009 at 02:28:50PM +1000, Mark Ware wrote:
> Ben Dooks wrote:
>> On Wed, Apr 29, 2009 at 08:43:14AM -0500, Kumar Gala wrote:
>>> On Apr 22, 2009, at 4:56 PM, Ben Dooks wrote:
>>>
>>>> On Tue, Apr 21, 2009 at 10:11:51AM -0500, Kumar Gala wrote:
>>>>> On Apr 21, 2009, at 7:49 AM, Mark Ware wrote:
>>>>>
>>>>>> Recent DMA changes result in a BUG() when NULL is passed to
>>>>>> dma_alloc_coherent in place of a device.
>>>>>>
>>>>>> Signed-off-by: Mark Ware <mware@elphinstone.net>
>>>>>> ---
>>>>>>
>>>>>> This patch fixes the BUG() during boot that has appeared during the
>>>>>> 2.6.30 window. It has been tested and appears correct on my 
>>>>>> 8280  based
>>>>>> board.
>>>>>> Sent to both linuxppc-dev and linux-i2c, since I'm not sure where it
>>>>>> belongs.
>>>>>>
>>>>>>
>>>>>> drivers/i2c/busses/i2c-cpm.c |   14 ++++++++------
>>>>>> 1 files changed, 8 insertions(+), 6 deletions(-)
>>>>> Acked-by: Kumar Gala <galak@kernel.crashing.org>
>>>>>
>>>>> Ben, I'm expecting you to pick this up unless you tell me otherwise.
>>>> Yes.
>>> This go in yet?
>>
>> I've had to do a manual apply due to some changes in the
>> driver, so can someone please do a build of my git tree
>> at:
>>
>> git://aeryn.fluff.org.uk/bjdooks/linux.git i2c-for-2630-rc5
>>
>> or tell me which arch and defconfig to build.
>>
>
> Ping.  Is there anything still blocking this?

sorry, have been ill recently, will get this sorted and
pushed.

Patch

diff --git a/drivers/i2c/busses/i2c-cpm.c b/drivers/i2c/busses/i2c-cpm.c
index 3fcf78e..83276d2 100644
--- a/drivers/i2c/busses/i2c-cpm.c
+++ b/drivers/i2c/busses/i2c-cpm.c
@@ -532,7 +532,8 @@  static int __devinit cpm_i2c_setup(struct cpm_i2c *cpm)

  	for (i = 0; i < CPM_MAXBD; i++) {
  		cpm->rxbuf[i] = dma_alloc_coherent(
-			NULL, CPM_MAX_READ + 1, &cpm->rxdma[i], GFP_KERNEL);
+			&cpm->ofdev->dev, CPM_MAX_READ + 1, &cpm->rxdma[i],
+			GFP_KERNEL);
  		if (!cpm->rxbuf[i]) {
  			ret = -ENOMEM;
  			goto out_muram;
@@ -540,7 +541,8 @@  static int __devinit cpm_i2c_setup(struct cpm_i2c *cpm)
  		out_be32(&rbdf[i].cbd_bufaddr, ((cpm->rxdma[i] + 1) & ~1));

  		cpm->txbuf[i] = (unsigned char *)dma_alloc_coherent(
-			NULL, CPM_MAX_READ + 1, &cpm->txdma[i], GFP_KERNEL);
+			&cpm->ofdev->dev, CPM_MAX_READ + 1, &cpm->txdma[i],
+			GFP_KERNEL);
  		if (!cpm->txbuf[i]) {
  			ret = -ENOMEM;
  			goto out_muram;
@@ -585,10 +587,10 @@  static int __devinit cpm_i2c_setup(struct cpm_i2c *cpm)
  out_muram:
  	for (i = 0; i < CPM_MAXBD; i++) {
  		if (cpm->rxbuf[i])
-			dma_free_coherent(NULL, CPM_MAX_READ + 1,
+			dma_free_coherent(&cpm->ofdev->dev, CPM_MAX_READ + 1,
  				cpm->rxbuf[i], cpm->rxdma[i]);
  		if (cpm->txbuf[i])
-			dma_free_coherent(NULL, CPM_MAX_READ + 1,
+			dma_free_coherent(&cpm->ofdev->dev, CPM_MAX_READ + 1,
  				cpm->txbuf[i], cpm->txdma[i]);
  	}
  	cpm_muram_free(cpm->dp_addr);
@@ -619,9 +621,9 @@  static void cpm_i2c_shutdown(struct cpm_i2c *cpm)

  	/* Free all memory */
  	for (i = 0; i < CPM_MAXBD; i++) {
-		dma_free_coherent(NULL, CPM_MAX_READ + 1,
+		dma_free_coherent(&cpm->ofdev->dev, CPM_MAX_READ + 1,
  			cpm->rxbuf[i], cpm->rxdma[i]);
-		dma_free_coherent(NULL, CPM_MAX_READ + 1,
+		dma_free_coherent(&cpm->ofdev->dev, CPM_MAX_READ + 1,
  			cpm->txbuf[i], cpm->txdma[i]);
  	}