diff options
author | skra <skra@FreeBSD.org> | 2015-11-24 13:57:41 +0000 |
---|---|---|
committer | skra <skra@FreeBSD.org> | 2015-11-24 13:57:41 +0000 |
commit | 29d37118d7d41f1e2a517987a8d568df28c133bc (patch) | |
tree | ea607479d25e27265ac35463595a6e0127a44c47 /lib/libbsdstat/bsdstat.c | |
parent | 3c69434dbb357a3d9c664ae3fc262605cf3f03f0 (diff) | |
download | FreeBSD-src-29d37118d7d41f1e2a517987a8d568df28c133bc.zip FreeBSD-src-29d37118d7d41f1e2a517987a8d568df28c133bc.tar.gz |
Flush all kernel mappings from TLB(s) in time when they are cleared.
Replace tlb_flush_local() by tlb_flush() as even not global mappings
could be fetched to TLB(s) on other cores by speculative table walk.
From OS point of view, it was not a problem as either such mappings
were not used anymore or they were flushed from TLB(s) when reused.
However, from hardware point of view, it was a problem. Not flushed
mappings could be a target for speculative reads or prefetches (which
might be quite aggresive on ARM cores). As speculative read can fill
cacheline, it can cause a real problem, when physical page is reused,
but mapped with different memory attributes.
Anyhow, it's good to have only valid mappings in TLB(s).
Approved by: kib (mentor)
Diffstat (limited to 'lib/libbsdstat/bsdstat.c')
0 files changed, 0 insertions, 0 deletions