Store buffer and l2x0_cache_sync

2 messages, 2 authors, 2011-03-02 · open the first message on its own page

Store buffer and l2x0_cache_sync

From: Colin Cross <hidden>
Date: 2011-03-02 01:25:34

l2x0_cache_sync on a PL310 has no wait after the writel_relaxed to the
L2X0_CACHE_SYNC register, because PL310 cache operations are atomic.
Doesn't the cpu store buffer still need to be flushed after the
register write, either with a dsb or a dummy read?

Store buffer and l2x0_cache_sync

From: catalin.marinas@arm.com (Catalin Marinas)
Date: 2011-03-02 10:16:51

On Wed, 2011-03-02 at 01:25 +0000, Colin Cross wrote:
l2x0_cache_sync on a PL310 has no wait after the writel_relaxed to the
L2X0_CACHE_SYNC register, because PL310 cache operations are atomic.
Doesn't the cpu store buffer still need to be flushed after the
register write, either with a dsb or a dummy read?
You usually need the PL310 flush/sync (Device writes) to be ordered with
other Device write (for starting DMA for example) but since both are
Device accesses, they are ordered by the processor already.

In general it depends on what the device does. A write to a device isn't
guaranteed to change its state, in which case a read back would be
needed (rather than a DSB). My understanding of the PL310 is that the
cache sync write stalls the CPU write buffer until the operation
completed. So subsequent device writes in the buffer would wait for the
cache sync.

-- 
Catalin
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help