perfmon: enable pmc event before reading rdpmc index
[vpp.git] / src / plugins / perfmon / perfmon_periodic.c
index ae20ac4..ccf3e9e 100644 (file)
@@ -161,6 +161,12 @@ enable_current_events (perfmon_main_t * pm)
       else
        p = 0;
 
+      if (ioctl (fd, PERF_EVENT_IOC_RESET, 0) < 0)
+       clib_unix_warning ("reset ioctl");
+
+      if (ioctl (fd, PERF_EVENT_IOC_ENABLE, 0) < 0)
+       clib_unix_warning ("enable ioctl");
+
       /*
        * Software event counters - and others not capable of being
        * read via the "rdpmc" instruction - will be read
@@ -171,12 +177,6 @@ enable_current_events (perfmon_main_t * pm)
       else
        index = p->index - 1;
 
-      if (ioctl (fd, PERF_EVENT_IOC_RESET, 0) < 0)
-       clib_unix_warning ("reset ioctl");
-
-      if (ioctl (fd, PERF_EVENT_IOC_ENABLE, 0) < 0)
-       clib_unix_warning ("enable ioctl");
-
       pm->rdpmc_indices[i][my_thread_index] = index;
       pm->perf_event_pages[i][my_thread_index] = (void *) p;
       pm->pm_fds[i][my_thread_index] = fd;