From 476f6c892d90e66fbd17ba616b82b000a990f63e Mon Sep 17 00:00:00 2001 From: Louis Burda Date: Sat, 13 Aug 2022 20:05:27 +0200 Subject: Add cache line ordering that prevents hardware prefetching, fix cachepc counts read --- kmod/util.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'kmod/util.c') diff --git a/kmod/util.c b/kmod/util.c index 166ec3e..1932c9b 100755 --- a/kmod/util.c +++ b/kmod/util.c @@ -20,16 +20,22 @@ prng_bytes(uint8_t *dst, size_t size) void random_perm(uint32_t *arr, uint32_t arr_len) { - uint32_t i, idx, tmp; + uint32_t i, mid; // idx, tmp; - for (i = arr_len - 1; i > 0; --i) { - prng_bytes((void*)&idx, 4); - idx = idx % i; - - tmp = arr[idx]; - arr[idx] = arr[i]; - arr[i] = tmp; + /* defeat stream prefetcher by preventing access direction */ + mid = arr_len / 2; + for (i = 0; i < arr_len; i++) { + arr[i] = mid + (i % 2 ? -1 : 1) * ((i + 1) / 2); } + + // for (i = arr_len - 1; i > 0; --i) { + // prng_bytes((void*)&idx, 4); + // idx = idx % i; + + // tmp = arr[idx]; + // arr[idx] = arr[i]; + // arr[i] = tmp; + // } } void -- cgit v1.2.3-71-gd317