summaryrefslogtreecommitdiffstats
path: root/src/cachepc.c
diff options
context:
space:
mode:
authorLouis Burda <quent.burda@gmail.com>2022-08-08 19:21:29 +0200
committerLouis Burda <quent.burda@gmail.com>2022-08-08 19:21:46 +0200
commitd8a20a54b05e2c9adb5198b1439608391450dd0b (patch)
treeb6c1e472df9ceb5923d0aee4d77443b942023f62 /src/cachepc.c
parent576e8dc70825a04af3ac9890491d348959bf19ce (diff)
downloadcachepc-d8a20a54b05e2c9adb5198b1439608391450dd0b.tar.gz
cachepc-d8a20a54b05e2c9adb5198b1439608391450dd0b.zip
Added ioctl interface and debuged single access evictions
Diffstat (limited to 'src/cachepc.c')
-rwxr-xr-xsrc/cachepc.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/cachepc.c b/src/cachepc.c
index c7e6048..702cfad 100755
--- a/src/cachepc.c
+++ b/src/cachepc.c
@@ -1,5 +1,11 @@
#include "cachepc.h"
+#include <linux/kernel.h>
+#include <linux/types.h>
+#include <linux/slab.h>
+#include <linux/delay.h>
+#include <linux/ioctl.h>
+
static void cl_insert(cacheline *last_cl, cacheline *new_cl);
static void *remove_cache_set(cache_ctx *ctx, void *ptr);
static void *remove_cache_group_set(void *ptr);
@@ -26,8 +32,8 @@ cachepc_init_counters(void)
*/
reg_addr = 0xc0010200;
- event_no = 0x64;//0x29;//0x64;
- event_mask = 0x08; //0x07; //0x08;
+ event_no = 0x70;
+ event_mask = 0xFF;
event = event_no | (event_mask << 8);
event |= (1ULL << 17); /* OS (kernel) events only */
event |= (1ULL << 22); /* enable performance counter */
@@ -36,14 +42,25 @@ cachepc_init_counters(void)
asm volatile ("wrmsr" : : "c"(reg_addr), "a"(event), "d"(0x00));
reg_addr = 0xc0010202;
- event_no = 0x64;
- event_mask = 0xF0;
+ event_no = 0x71;
+ event_mask = 0xFF;
+ event = event_no | (event_mask << 8);
+ event |= (1ULL << 17); /* OS (kernel) events only */
+ event |= (1ULL << 22); /* enable performance counter */
+ event |= (1ULL << 40); /* Host events only */
+ printk(KERN_WARNING "CachePC: Initialized event %llu\n", event);
+ asm volatile ("wrmsr" : : "c"(reg_addr), "a"(event), "d"(0x00));
+
+ reg_addr = 0xc0010204;
+ event_no = 0x72;
+ event_mask = 0xFF;
event = event_no | (event_mask << 8);
event |= (1ULL << 17); /* OS (kernel) events only */
event |= (1ULL << 22); /* enable performance counter */
event |= (1ULL << 40); /* Host events only */
printk(KERN_WARNING "CachePC: Initialized event %llu\n", event);
asm volatile ("wrmsr" : : "c"(reg_addr), "a"(event), "d"(0x00));
+
}
cache_ctx *
@@ -149,6 +166,8 @@ cachepc_save_msrmts(cacheline *head)
{
cacheline *curr_cl;
+ printk(KERN_WARNING "CachePC: Updating /proc/cachepc\n");
+
curr_cl = head;
do {
if (IS_FIRST(curr_cl->flags)) {