* Synchronize between CPUs after main scanning loop.
  * This invokes the bulk of the Monarch processing.
  */
-static int mce_end(int order)
+static noinstr int mce_end(int order)
 {
-       int ret = -1;
        u64 timeout = (u64)mca_cfg.monarch_timeout * NSEC_PER_USEC;
+       int ret = -1;
+
+       /* Allow instrumentation around external facilities. */
+       instrumentation_begin();
 
        if (!timeout)
                goto reset;
                /*
                 * Don't reset anything. That's done by the Monarch.
                 */
-               return 0;
+               ret = 0;
+               goto out;
        }
 
        /*
         * Let others run again.
         */
        atomic_set(&mce_executing, 0);
+
+out:
+       instrumentation_end();
+
        return ret;
 }