Re: [PATCH 2/7] ARM: Add Broadcom Brahma-B15 readahead cache support
From: Russell King - ARM Linux
Date: Wed Jan 18 2017 - 17:58:31 EST
On Wed, Jan 18, 2017 at 12:29:21PM -0800, Florian Fainelli wrote:
> The readahead cache only intercepts reads, not writes, as such, some
> data can remain stale in any of its buffers, such that we need to flush
> it, which is an operation that needs to happen in a particular order:
>
> - disable the readahead cache
> - flush it
> - call the appropriate cache-v7.S function
> - re-enable
I really do hope that the above explanation is wrong, because if that's
really how it's implemented, it's going to cause coherency problems.
It's got to at least monitor writes, otherwise how do you guarantee
that the CPU doesn't see stale data? IOW:
Consider this at the L2 memory-side interface (iow, downstream of the
point-of-coherency):
CPU1 CPU2 Read-ahead buffer
read cache line C
reads cache line C and C+1
writes cache line C+1
read cache line C+1
What ensures that CPU2 sees the written out cache line from CPU1?
--
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.