[U-Boot] [PATCH 2/3] bouncebuf: Add DMA validation check to addr_aligned().

Christoph Müllner christoph.muellner at theobroma-systems.com
Tue May 7 13:52:14 UTC 2019



On 5/7/19 3:48 PM, Christoph Müllner wrote:
> 
> 
> On 07.05.19 15:05, Marek Vasut wrote:
>> On 5/7/19 11:05 AM, Christoph Muellner wrote:
>>> Currently addr_aligned() performs an alignment and a length check
>>> to validate the DMA address. However, some machines have stricter
>>> restrictions of DMA-able addresses.
>>>
>>> This patch adds a call to mach_addr_is_dmaable() to honor this
>>> machine specific restrictions.
>>>
>>> Signed-off-by: Christoph Muellner <christoph.muellner at theobroma-systems.com>
>>> ---
>>>
>>>  common/bouncebuf.c | 6 ++++++
>>>  1 file changed, 6 insertions(+)
>>>
>>> diff --git a/common/bouncebuf.c b/common/bouncebuf.c
>>> index a7098e2caf..26ddf30ea2 100644
>>> --- a/common/bouncebuf.c
>>> +++ b/common/bouncebuf.c
>>> @@ -26,6 +26,12 @@ static int addr_aligned(struct bounce_buffer *state)
>>>  		return 0;
>>>  	}
>>>  
>>> +	/* Check if valid DMA address. */
>>> +	if (!mach_addr_is_dmaable((ulong)state->user_buffer)) {
>>
>> Is the cast necessary ?
> 
> Of course not.
> Will be fixed in v2.
> 
> Thanks!

I take that back.
The cast is needed.
(And also done several times in this file)

Otherwise you will get:

common/bouncebuf.c: In function ‘addr_aligned’:
common/bouncebuf.c:35:33: warning: passing argument 1 of ‘mach_addr_is_dmaable’ makes integer from pointer without a cast [-Wint-conversion]
  if (!mach_addr_is_dmaable(state->user_buffer)) {
                            ~~~~~^~~~~~~~~~~~~
In file included from include/common.h:64,
                 from common/bouncebuf.c:8:
include/init.h:128:40: note: expected ‘long unsigned int’ but argument is of type ‘void *’
 int mach_addr_is_dmaable(unsigned long addr);
                          ~~~~~~~~~~~~~~^~~~





> 
>>
>>> +		debug("Buffer address is not DMA-able\n");
>>> +		return 0;
>>> +	}
>>> +
>>>  	/* Aligned */
>>>  	return 1;
>>>  }
>>>
>>
>>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot
> 


More information about the U-Boot mailing list