diff options
| author | Louis Burda <quent.burda@gmail.com> | 2022-08-15 21:52:52 +0200 |
|---|---|---|
| committer | Louis Burda <quent.burda@gmail.com> | 2022-08-15 21:52:52 +0200 |
| commit | e80d7612f93f7d8dabe3be5152d8baa15a7d29db (patch) | |
| tree | 76074fbac084e357bae9a90f5d0fceee04497ab4 /kmod | |
| parent | fef45f5207c99b00676c014bc02141e284c331ce (diff) | |
| download | cachepc-e80d7612f93f7d8dabe3be5152d8baa15a7d29db.tar.gz cachepc-e80d7612f93f7d8dabe3be5152d8baa15a7d29db.zip | |
Minor tweaks
Diffstat (limited to 'kmod')
| -rwxr-xr-x | kmod/cachepc.c | 4 | ||||
| -rwxr-xr-x | kmod/cachepc.h | 19 | ||||
| -rw-r--r-- | kmod/cachepc_user.h | 2 |
3 files changed, 9 insertions, 16 deletions
diff --git a/kmod/cachepc.c b/kmod/cachepc.c index df8ea0e..1dcb764 100755 --- a/kmod/cachepc.c +++ b/kmod/cachepc.c @@ -140,7 +140,7 @@ cachepc_save_msrmts(cacheline *head) { cacheline *curr_cl; - printk(KERN_WARNING "CachePC: Updating /proc/cachepc\n"); + // printk(KERN_WARNING "CachePC: Updating /proc/cachepc\n"); curr_cl = head; do { @@ -369,7 +369,6 @@ void build_randomized_list_for_cache_set(cache_ctx *ctx, cacheline **cacheline_p curr_cl = cacheline_ptr_arr[idx_map[i]]; curr_cl->next = cacheline_ptr_arr[idx_map[(i + 1) % len]]; curr_cl->prev = cacheline_ptr_arr[idx_map[(len - 1 + i) % len]]; - curr_cl->count = 0; if (idx_map[i] == 0) { curr_cl->flags = SET_FIRST(DEFAULT_FLAGS); @@ -405,6 +404,7 @@ allocate_cache_ds(cache_ctx *ctx) cl_ptr_arr[i] = cl_arr + i; cl_ptr_arr[i]->cache_set = get_virt_cache_set(ctx, cl_ptr_arr[i]); cl_ptr_arr[i]->cache_line = i / ctx->sets; + cl_ptr_arr[i]->count = 0; } return cl_ptr_arr; diff --git a/kmod/cachepc.h b/kmod/cachepc.h index 0e02678..13d38ca 100755 --- a/kmod/cachepc.h +++ b/kmod/cachepc.h @@ -49,21 +49,21 @@ extern cacheline *cachepc_ds; cacheline * cachepc_prime(cacheline *head) { - cacheline *curr_cl; + cacheline *curr_cl, *prev_cl; cachepc_mfence(); cachepc_cpuid(); curr_cl = head; do { + prev_cl = curr_cl; curr_cl = curr_cl->next; } while (curr_cl != head); - curr_cl = curr_cl->prev; cachepc_mfence(); cachepc_cpuid(); - return curr_cl; + return prev_cl; } /* @@ -114,9 +114,6 @@ cachepc_probe(cacheline *start_cl) do { pre = cachepc_read_pmc(0); - cachepc_mfence(); - //cachepc_cpuid(); - asm volatile( "mov 8(%[curr_cl]), %%rax \n\t" // +8 "mov 8(%%rax), %%rcx \n\t" // +16 @@ -132,24 +129,20 @@ cachepc_probe(cacheline *start_cl) : "rax", "rcx" ); - cachepc_mfence(); - //cachepc_cpuid(); - post = cachepc_read_pmc(0); - cachepc_mfence(); - //cachepc_cpuid(); - /* works across size boundary */ curr_cl->count = post - pre; curr_cl = next_cl; } while (__builtin_expect(curr_cl != start_cl, 1)); + next_cl = curr_cl->next; + cachepc_mfence(); cachepc_cpuid(); - return curr_cl->next; + return next_cl; } void diff --git a/kmod/cachepc_user.h b/kmod/cachepc_user.h index a04b184..f815839 100644 --- a/kmod/cachepc_user.h +++ b/kmod/cachepc_user.h @@ -3,6 +3,6 @@ #include <linux/ioctl.h> #define CACHEPC_IOCTL_MAGIC 0xBF -#define CACHEPC_IOCTL_TEST_ACCESS _IOR(CACHEPC_IOCTL_MAGIC, 0, uint32_t) +#define CACHEPC_IOCTL_TEST_ACCESS _IOWR(CACHEPC_IOCTL_MAGIC, 0, uint32_t) #define CACHEPC_IOCTL_TEST_EVICTION _IOWR(CACHEPC_IOCTL_MAGIC, 1, uint32_t) #define CACHEPC_IOCTL_INIT_PMC _IOW(CACHEPC_IOCTL_MAGIC, 2, uint32_t) |
