*          3,015,058      cycles
         *    <not supported>      topdown-retiring
         *
-        * if slots event and topdown metrics events are in two groups, the group which
+        * If slots event and topdown metrics events are in two groups, the group which
         * has topdown metrics events must contain only the topdown metrics event,
         * otherwise topdown metrics event can't be regrouped correctly as well, e.g.
         *
                        return -1;
                if (arch_is_topdown_slots(rhs))
                        return 1;
-               /* Followed by topdown events. */
-               if (arch_is_topdown_metrics(lhs) && !arch_is_topdown_metrics(rhs))
-                       return -1;
+
                /*
-                * Move topdown events forward only when topdown events
-                * are not in same group with previous event.
+                * Move topdown metrics events forward only when topdown metrics
+                * events are not in same group with previous slots event. If
+                * topdown metrics events are already in same group with slots
+                * event, do nothing.
                 */
+               if (arch_is_topdown_metrics(lhs) && !arch_is_topdown_metrics(rhs) &&
+                   lhs->core.leader != rhs->core.leader)
+                       return -1;
                if (!arch_is_topdown_metrics(lhs) && arch_is_topdown_metrics(rhs) &&
                    lhs->core.leader != rhs->core.leader)
                        return 1;