perfmon: enable pmc event before reading rdpmc index 69/17069/2
authorDamjan Marion <damarion@cisco.com>
Thu, 24 Jan 2019 19:24:33 +0000 (20:24 +0100)
committerDave Barach <openvpp@barachs.net>
Thu, 24 Jan 2019 22:43:20 +0000 (22:43 +0000)
Change-Id: I9b0a101e5d78c10257e3c5d8f5573c3eb29bfdef
Signed-off-by: Damjan Marion <damarion@cisco.com>
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;