x86_pmu.sched_task(ctx, sched_in);
 }
 
+static void x86_pmu_swap_task_ctx(struct perf_event_context *prev,
+                                 struct perf_event_context *next)
+{
+       if (x86_pmu.swap_task_ctx)
+               x86_pmu.swap_task_ctx(prev, next);
+}
+
 void perf_check_microcode(void)
 {
        if (x86_pmu.check_microcode)
        .event_idx              = x86_pmu_event_idx,
        .sched_task             = x86_pmu_sched_task,
        .task_ctx_size          = sizeof(struct x86_perf_task_context),
+       .swap_task_ctx          = x86_pmu_swap_task_ctx,
        .check_period           = x86_pmu_check_period,
 
        .aux_output_match       = x86_pmu_aux_output_match,