[U-Boot] [PATCH] mtd: nand: denali: Replace the ad-hoc cache management with bouncebuf

Marek Vasut marex at denx.de
Thu Jun 21 04:37:57 UTC 2018


On 06/20/2018 09:14 AM, Masahiro Yamada wrote:
> Hi Marek,
> 
> 2018-06-20 13:43 GMT+09:00 Marek Vasut <marex at denx.de>:
>> On 06/19/2018 08:39 AM, Masahiro Yamada wrote:
>>> Hi Marek,
>>
>> Hi,
>>
>>> 2018-06-08 5:17 GMT+09:00 Marek Vasut <marex at denx.de>:
>>>> Replace the ad-hoc DMA cache management functions with common bouncebuf,
>>>> since those functions are not handling cases where unaligned buffer is
>>>> passed in,
>>>
>>>
>>> Were you hit by a problem,
>>> or just-in-case replacement?
>>
>> Yes, UBI triggers unaligned cache operations on my system (SoCFPGA).
>>> I thought I took care of the buffer alignment.
>>>
>>> The bounce buffer is allocated by kmalloc():
>>> https://github.com/u-boot/u-boot/blob/v2018.05/drivers/mtd/nand/denali.c#L1348
>>>
>>> According to the lib/linux_compat.c implementation,
>>> it returns memory aligned with ARCH_DMA_MINALIGN.
>>>
>>>
>>> If the buffer is passed from the upper MTD layer,
>>> the NAND core also makes sure the enough alignment:
>>> https://github.com/u-boot/u-boot/blob/v2018.05/drivers/mtd/nand/denali.c#L1273
>>>
>>> This is how this driver works in Linux.
>>>
>>> I'd rather want to keep the current code
>>> unless this is a real problem,
>>>
>>>
>>> One possible clean-up is to move dma_(un)map_single to a common place.
>> Is there any chance you can try UBI on the denali nand on uniphier ? :)
> 
> 
> I tested the driver only for raw block devices.
> 
> OK, I will test UBI on my platform.

Please do. With plain block access it works fine.

> BTW, do you see the problem only in U-Boot?
> Is the denali driver in Linux working fine?

Yes, I only see it in U-Boot.

-- 
Best regards,
Marek Vasut


More information about the U-Boot mailing list