[U-Boot] usb: dwc2: invalidate the dcache before starting the DMA

Marek Vasut marex at denx.de
Wed Apr 5 10:21:56 UTC 2017


On 04/05/2017 12:08 PM, Simon Glass wrote:
> Hi Marek,
> 
> On 5 April 2017 at 03:35, Marek Vasut <marex at denx.de> wrote:
>> On 04/05/2017 04:21 AM, Simon Glass wrote:
>>> Hi,
>>>
>>> On 4 April 2017 at 19:26, Kever Yang <kever.yang at rock-chips.com> wrote:
>>>> Hi Eddie,
>>>>
>>>>
>>>>     We should only need to do only one time cache operation for a buffer
>>>>
>>>> ready to do DMA transfer, so you need to remove another cache invalidate
>>>>
>>>> operation for the same buffer in the same function.
>>>
>>> I think this is a more general problem and might cause issues with
>>> other drivers. So I have sent this patch:
>>>
>>> http://patchwork.ozlabs.org/patch/746917/
>>>
>>
>> This feels like papering over a problem though ... which will bite you
>> later anyway.
> 
> I believe the problem only happens because we have cached zero bytes
> caused by this function. If the driver does the right thing (as dwc2.c
> already does) then everything should be find from then on.

And I think the driver is where this should be fixed ? That is, the
driver should do the right thing and flush/invalidate caches correctly.

> Notice that the problem does not happen without driver model, since
> non-DM code in dwc2.c uses BSS for the buffers, which is zeroed with
> the cache off.

-- 
Best regards,
Marek Vasut


More information about the U-Boot mailing list