*/
                        refcount_set(&map->refcnt, 2);
 
+                       if (ops->idx)
+                               ops->idx(evlist, mp, idx);
+
                        if (ops->mmap(map, mp, *output, evlist_cpu) < 0)
                                return -1;
 
                int output = -1;
                int output_overwrite = -1;
 
-               if (ops->idx)
-                       ops->idx(evlist, mp, thread);
-
                if (mmap_per_evsel(evlist, ops, thread, mp, 0, thread,
                                   &output, &output_overwrite))
                        goto out_unmap;
                int output = -1;
                int output_overwrite = -1;
 
-               if (ops->idx)
-                       ops->idx(evlist, mp, cpu);
-
                for (thread = 0; thread < nr_threads; thread++) {
                        if (mmap_per_evsel(evlist, ops, cpu, mp, cpu,
                                           thread, &output, &output_overwrite))