Commit 30dd5f7a authored by James Hogan's avatar James Hogan

metag: panic if cache aliasing possible

If the cache and page size configuration allows for cache aliasing to
occur we warn on boot, but the log messages are easy to miss and will
result is random crashes occuring in userland. Let's panic too in this
case so that the user immediately knows they need to fix the cache
configuration or configured page size.

Also fix the warning messages which display the cache and page sizes to
include newlines, and add the word "Potential" since an actual cache
alias hasn't been detected.
Signed-off-by: default avatarJames Hogan <james.hogan@imgtec.com>
parent d3087c03
...@@ -100,22 +100,23 @@ void check_for_cache_aliasing(int thread_id) ...@@ -100,22 +100,23 @@ void check_for_cache_aliasing(int thread_id)
thread_cache_size = thread_cache_size =
get_thread_cache_size(cache_type, thread_id); get_thread_cache_size(cache_type, thread_id);
if (thread_cache_size < 0) if (thread_cache_size < 0)
pr_emerg("Can't read %s cache size", \ pr_emerg("Can't read %s cache size\n",
cache_type ? "DCACHE" : "ICACHE"); cache_type ? "DCACHE" : "ICACHE");
else if (thread_cache_size == 0) else if (thread_cache_size == 0)
/* Cache is off. No need to check for aliasing */ /* Cache is off. No need to check for aliasing */
continue; continue;
if (thread_cache_size / CACHE_ASSOCIATIVITY > PAGE_SIZE) { if (thread_cache_size / CACHE_ASSOCIATIVITY > PAGE_SIZE) {
pr_emerg("Cache aliasing detected in %s on Thread %d", pr_emerg("Potential cache aliasing detected in %s on Thread %d\n",
cache_type ? "DCACHE" : "ICACHE", thread_id); cache_type ? "DCACHE" : "ICACHE", thread_id);
pr_warn("Total %s size: %u bytes", pr_warn("Total %s size: %u bytes\n",
cache_type ? "DCACHE" : "ICACHE ", cache_type ? "DCACHE" : "ICACHE",
cache_type ? get_dcache_size() cache_type ? get_dcache_size()
: get_icache_size()); : get_icache_size());
pr_warn("Thread %s size: %d bytes", pr_warn("Thread %s size: %d bytes\n",
cache_type ? "CACHE" : "ICACHE", cache_type ? "CACHE" : "ICACHE",
thread_cache_size); thread_cache_size);
pr_warn("Page Size: %lu bytes", PAGE_SIZE); pr_warn("Page Size: %lu bytes\n", PAGE_SIZE);
panic("Potential cache aliasing detected");
} }
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment