bool cap_user_time_zero = false, per_cpu_mmaps;
        u64 tsc_bit, mtc_bit, mtc_freq_bits, cyc_bit, noretcomp_bit;
        u32 tsc_ctc_ratio_n, tsc_ctc_ratio_d;
+       unsigned long max_non_turbo_ratio;
        int err;
 
        if (priv_size != INTEL_PT_AUXTRACE_PRIV_SIZE)
 
        intel_pt_tsc_ctc_ratio(&tsc_ctc_ratio_n, &tsc_ctc_ratio_d);
 
+       if (perf_pmu__scan_file(intel_pt_pmu, "max_nonturbo_ratio",
+                               "%lu", &max_non_turbo_ratio) != 1)
+               max_non_turbo_ratio = 0;
+
        if (!session->evlist->nr_mmaps)
                return -EINVAL;
 
        auxtrace_info->priv[INTEL_PT_TSC_CTC_N] = tsc_ctc_ratio_n;
        auxtrace_info->priv[INTEL_PT_TSC_CTC_D] = tsc_ctc_ratio_d;
        auxtrace_info->priv[INTEL_PT_CYC_BIT] = cyc_bit;
+       auxtrace_info->priv[INTEL_PT_MAX_NONTURBO_RATIO] = max_non_turbo_ratio;
 
        return 0;
 }
 
        [INTEL_PT_TSC_CTC_N]            = "  TSC:CTC numerator   %"PRIu64"\n",
        [INTEL_PT_TSC_CTC_D]            = "  TSC:CTC denominator %"PRIu64"\n",
        [INTEL_PT_CYC_BIT]              = "  CYC bit             %#"PRIx64"\n",
+       [INTEL_PT_MAX_NONTURBO_RATIO]   = "  Max non-turbo ratio %"PRIu64"\n",
 };
 
 static void intel_pt_print_info(u64 *arr, int start, int finish)
                                    INTEL_PT_CYC_BIT);
        }
 
+       if (auxtrace_info->header.size >= sizeof(struct auxtrace_info_event) +
+                               (sizeof(u64) * INTEL_PT_MAX_NONTURBO_RATIO)) {
+               pt->max_non_turbo_ratio =
+                       auxtrace_info->priv[INTEL_PT_MAX_NONTURBO_RATIO];
+               intel_pt_print_info(&auxtrace_info->priv[0],
+                                   INTEL_PT_MAX_NONTURBO_RATIO,
+                                   INTEL_PT_MAX_NONTURBO_RATIO);
+       }
+
        pt->timeless_decoding = intel_pt_timeless_decoding(pt);
        pt->have_tsc = intel_pt_have_tsc(pt);
        pt->sampling_mode = false;
        if (pt->tc.time_mult) {
                u64 tsc_freq = intel_pt_ns_to_ticks(pt, 1000000000);
 
-               pt->max_non_turbo_ratio = (tsc_freq + 50000000) / 100000000;
+               if (!pt->max_non_turbo_ratio)
+                       pt->max_non_turbo_ratio =
+                                       (tsc_freq + 50000000) / 100000000;
                intel_pt_log("TSC frequency %"PRIu64"\n", tsc_freq);
                intel_pt_log("Maximum non-turbo ratio %u\n",
                             pt->max_non_turbo_ratio);