Fix: mmap: caches aliased on virtual addresses
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 19 Sep 2017 16:16:58 +0000 (12:16 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 21 Sep 2017 13:44:48 +0000 (09:44 -0400)
commit90715ba61e3fa66c1bb438138c8716c6e72356f9
tree1a4afa4183f9009fdc61e62b5537f3d5b4b50072
parent500c99a45fc0da09d1dc7b9e62bf58d562856a9a
Fix: mmap: caches aliased on virtual addresses

Some architectures (e.g. implementations of arm64) implement their
caches based on the virtual addresses (rather than physical address).
It has the upside of making the cache access faster (no TLB lookup
required to access the cache line), but the downside of requiring
virtual mappings (e.g. kernel vs user-space) to be aligned on the number
of bits used for cache aliasing.

Perform dcache flushing for the entire sub-buffer in the get_subbuf
operation on those architectures, thus ensuring we don't end up with
cache aliasing issues.

An alternative approach we could eventually take would be to create a
kernel mapping for the ring buffer that is aligned with the user-space
mapping.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
lib/ringbuffer/ring_buffer_frontend.c
This page took 0.027288 seconds and 4 git commands to generate.