[U-Boot] [PATCH 2/2] mmc: tegra: invalidate complete cachelines

Simon Glass sjg at chromium.org
Tue Nov 6 00:07:53 CET 2012


Hi Stephen,

On Mon, Nov 5, 2012 at 11:50 AM, Stephen Warren <swarren at wwwdotorg.org> wrote:
> On 11/02/2012 04:10 PM, Marek Vasut wrote:
>> Dear Stephen Warren,
>>
>>> On 11/02/2012 03:28 PM, Marek Vasut wrote:
>>>> Dear Stephen Warren,
>>>>
>>>>> On 11/02/2012 02:38 PM, Marek Vasut wrote:
>>> ...
>>>
>>>>>> Dumb question -- might be unrelated. Does the tegra mmc driver do DMA?
>>>>>> And if so, what happens if you do raw read to unaligned address (aka.
>>>>>> how come you don't need the bounce buffer)?
>>>>>
>>>>> Yes, it does DMA, I believe. (At least if it doesn't, I have no idea why
>>>>> the driver is flushing caches!)
>>>>>
>>>>> I guess we only support the use of aligned addresses, so e.g. the
>>>>> following would work:
>>>>>
>>>>> ext2load mmc 0:1 0x00100000 /file
>>>>>
>>>>> but the following wouldn't:
>>>>>
>>>>> ext2load mmc 0:1 0x00100004 /file
>>>>>
>>>>> which while I suppose it is an artificial restriction, hasn't been an
>>>>> issue in practice.
>>>>
>>>> Then just enable the bounce buffer and it will work ;-)
>>>
>>> You suggested that last time, and it made no difference then... In fact,
>>> the config option you mentioned isn't used anywhere in the srouce tree
>>> except adding bouncebuf.o
>>
>> Bouncebuf.o ?
>
> common/bouncebuf.c
>
>>> into the build right now; which config option
>>> do you think I should use?
>>
>> CONFIG_BOUNCE_BUFFER
>>
>> It's used on mx28-based boards.
>
> Ahah, there's much more to it than just defining the config option, and
> grep'ing for the config option doesn't reveal that.
>
> Defining CONFIG_BOUNCE_BUFFER simply pulls in bouncebuf.o into the
> build. It's then up to the individual MMC/... driver to actually make
> use of the new functions - i.e. explicitly call e.g.
> bounce_buffer_start(). The MXS MMC driver calls these without any ifdef
> CONFIG_BOUNCE_BUFFER, and hence doesn't show up when you grep for that.
> I had assumed that such functionality would be a conditional part of the
> MMC core rather than the individual drivers, hence had missed the usage
> in the MXS driver.
>
> So, that config option plus some changes to the Tegra MMC driver might
> work - I'll take a look. However, making that change will simply hide
> any unaligned buffer and reduce performance, so I'd still prefer to
> require that buffers be aligned in the future where possible.

Yes that seems right to me.

Regards,
Simon


More information about the U-Boot mailing list