return 0;
 }
 
-static bool cs_etm__is_timeless_decoding(struct cs_etm_auxtrace *etm)
+static int cs_etm__setup_timeless_decoding(struct cs_etm_auxtrace *etm)
 {
        struct evsel *evsel;
        struct evlist *evlist = etm->session->evlist;
-       bool timeless_decoding = true;
 
        /* Override timeless mode with user input from --itrace=Z */
-       if (etm->synth_opts.timeless_decoding)
-               return true;
+       if (etm->synth_opts.timeless_decoding) {
+               etm->timeless_decoding = true;
+               return 0;
+       }
 
        /*
-        * Circle through the list of event and complain if we find one
-        * with the time bit set.
+        * Find the cs_etm evsel and look at what its timestamp setting was
         */
-       evlist__for_each_entry(evlist, evsel) {
-               if ((evsel->core.attr.sample_type & PERF_SAMPLE_TIME))
-                       timeless_decoding = false;
-       }
+       evlist__for_each_entry(evlist, evsel)
+               if (cs_etm__evsel_is_auxtrace(etm->session, evsel)) {
+                       etm->timeless_decoding =
+                               !(evsel->core.attr.config & BIT(ETM_OPT_TS));
+                       return 0;
+               }
 
-       return timeless_decoding;
+       pr_err("CS ETM: Couldn't find ETM evsel\n");
+       return -EINVAL;
 }
 
 /*
        etm->snapshot_mode = (ptr[CS_ETM_SNAPSHOT] != 0);
        etm->metadata = metadata;
        etm->auxtrace_type = auxtrace_info->type;
-       etm->timeless_decoding = cs_etm__is_timeless_decoding(etm);
 
        /* Use virtual timestamps if all ETMs report ts_source = 1 */
        etm->has_virtual_ts = cs_etm__has_virtual_ts(metadata, num_cpu);
        etm->auxtrace.evsel_is_auxtrace = cs_etm__evsel_is_auxtrace;
        session->auxtrace = &etm->auxtrace;
 
+       err = cs_etm__setup_timeless_decoding(etm);
+       if (err)
+               return err;
+
        etm->unknown_thread = thread__new(999999999, 999999999);
        if (!etm->unknown_thread) {
                err = -ENOMEM;