Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Cleanup based on cppcheck pass (Linux module and user)
[palacios.git] / linux_module / iface-pmu.c
index 1f0f459..948e5f1 100644 (file)
@@ -39,7 +39,7 @@ static DEFINE_PER_CPU(u32, pmu_refcount) = 0;
 
 static inline void cpuid_string(u32 id, u32 dest[4]) {
   asm volatile("cpuid"
-              :"=a"(dest),"=b"(*(dest+1)),"=c"(*(dest+2)),"=d"(*(dest+3))
+              :"=a"(*dest),"=b"(*(dest+1)),"=c"(*(dest+2)),"=d"(*(dest+3))
               :"a"(id));
 }
 
@@ -124,7 +124,6 @@ static int amd_get_slot(void) {
   }
 
   return slot;
-  return -1;
 }
 
 /*
@@ -427,14 +426,14 @@ static uint64_t amd_get_value(v3_pmon_ctr_t ctr) {
     }
     break;
   case V3_PMON_MEM_LOAD_COUNT:
-    if((ctr_idx = amd_find_idx(AMD_PREFETCH_INST_DISPATCHED, AMD_LOAD)) >= 0) {
+    if((ctr_idx = amd_find_idx(AMD_DATA_CACHE_ACCESSES, 0x0)) >= 0) {
       AMD_CTR_READ(count, ctr_idx);
     } else {
       goto AMD_READ_FAILED;
     }
     break;
   case V3_PMON_MEM_STORE_COUNT:
-    if((ctr_idx = amd_find_idx(AMD_PREFETCH_INST_DISPATCHED, AMD_STORE)) >= 0) {
+    if((ctr_idx = amd_find_idx(AMD_DATA_CACHE_ACCESSES, 0x0)) >= 0) {
       AMD_CTR_READ(count, ctr_idx);
     } else {
       goto AMD_READ_FAILED;
@@ -448,7 +447,7 @@ static uint64_t amd_get_value(v3_pmon_ctr_t ctr) {
     }
     break;
   case V3_PMON_TLB_MISS_COUNT:
-    if((ctr_idx = amd_find_idx(AMD_L1_DTLB_AND_L2_DTLB_MISS, 0x0)) >= 0) {
+    if((ctr_idx = amd_find_idx(AMD_L1_DTLB_AND_L2_DTLB_MISS, 0x7)) >= 0) {
       AMD_CTR_READ(count, ctr_idx);
     } else {
       goto AMD_READ_FAILED;
@@ -483,14 +482,14 @@ static int amd_start_tracking(v3_pmon_ctr_t ctr) {
     break;
   case V3_PMON_MEM_LOAD_COUNT:
     if((ctr_idx = amd_get_slot()) >= 0) {
-      AMD_CTRL_START(AMD_PREFETCH_INST_DISPATCHED, AMD_LOAD, ctr_idx);
+      AMD_CTRL_START(AMD_DATA_CACHE_ACCESSES, 0x0, ctr_idx);
     } else {
       goto AMD_START_FAILED;
     }
     break;
   case V3_PMON_MEM_STORE_COUNT:
     if((ctr_idx = amd_get_slot()) >= 0) {
-      AMD_CTRL_START(AMD_PREFETCH_INST_DISPATCHED, AMD_STORE, ctr_idx);
+      AMD_CTRL_START(AMD_DATA_CACHE_ACCESSES, 0x0, ctr_idx);
     } else {
       goto AMD_START_FAILED;
     }
@@ -504,7 +503,7 @@ static int amd_start_tracking(v3_pmon_ctr_t ctr) {
     break;
   case V3_PMON_TLB_MISS_COUNT:
     if((ctr_idx = amd_get_slot()) >= 0) {
-      AMD_CTRL_START(AMD_L1_DTLB_AND_L2_DTLB_MISS, 0x0, ctr_idx);
+      AMD_CTRL_START(AMD_L1_DTLB_AND_L2_DTLB_MISS, 0x7, ctr_idx);
     } else {
       goto AMD_START_FAILED;
     }
@@ -540,14 +539,14 @@ static int amd_stop_tracking(v3_pmon_ctr_t ctr) {
     }
     break;
   case V3_PMON_MEM_LOAD_COUNT:
-    if((ctr_idx = amd_find_idx(AMD_PREFETCH_INST_DISPATCHED, AMD_LOAD)) >= 0) {
+    if((ctr_idx = amd_find_idx(AMD_DATA_CACHE_ACCESSES, 0x0)) >= 0) {
       AMD_CTRL_STOP(ctr_idx);
     } else {
       goto AMD_STOP_FAILED;
     }
     break;
   case V3_PMON_MEM_STORE_COUNT:
-    if((ctr_idx = amd_find_idx(AMD_PREFETCH_INST_DISPATCHED, AMD_STORE)) >= 0) {
+    if((ctr_idx = amd_find_idx(AMD_DATA_CACHE_ACCESSES, 0x0)) >= 0) {
       AMD_CTRL_STOP(ctr_idx);
     } else {
       goto AMD_STOP_FAILED;
@@ -561,7 +560,7 @@ static int amd_stop_tracking(v3_pmon_ctr_t ctr) {
     }
     break;
   case V3_PMON_TLB_MISS_COUNT:
-    if((ctr_idx = amd_find_idx(AMD_L1_DTLB_AND_L2_DTLB_MISS, 0x0)) >= 0) {
+    if((ctr_idx = amd_find_idx(AMD_L1_DTLB_AND_L2_DTLB_MISS, 0x7)) >= 0) {
       AMD_CTRL_STOP(ctr_idx);
     } else {
       goto AMD_STOP_FAILED;
@@ -644,11 +643,17 @@ static int pmu_init( void ) {
   return 0;
 }
 
+static int pmu_deinit(void)
+{
+    // nothing
+    return 0;
+}
+
 
 static struct linux_ext pmu_ext = {
   .name = "PMU",
   .init = pmu_init,
-  .deinit = NULL,
+  .deinit = pmu_deinit,
   .guest_init = NULL,
   .guest_deinit = NULL
 };