for (sub = 0; sub < core_info.n_subcores; ++sub)
                spin_unlock(&core_info.vc[sub]->lock);
 
-       guest_enter_irqoff();
+       guest_timing_enter_irqoff();
 
        srcu_idx = srcu_read_lock(&vc->kvm->srcu);
 
+       guest_state_enter_irqoff();
        this_cpu_disable_ftrace();
 
-       /*
-        * Interrupts will be enabled once we get into the guest,
-        * so tell lockdep that we're about to enable interrupts.
-        */
-       trace_hardirqs_on();
-
        trap = __kvmppc_vcore_entry();
 
-       trace_hardirqs_off();
-
        this_cpu_enable_ftrace();
+       guest_state_exit_irqoff();
 
        srcu_read_unlock(&vc->kvm->srcu, srcu_idx);
 
 
        kvmppc_set_host_core(pcpu);
 
-       context_tracking_guest_exit();
        if (!vtime_accounting_enabled_this_cpu()) {
                local_irq_enable();
                /*
-                * Service IRQs here before vtime_account_guest_exit() so any
+                * Service IRQs here before guest_timing_exit_irqoff() so any
                 * ticks that occurred while running the guest are accounted to
                 * the guest. If vtime accounting is enabled, accounting uses
                 * TB rather than ticks, so it can be done without enabling
                 */
                local_irq_disable();
        }
-       vtime_account_guest_exit();
+       guest_timing_exit_irqoff();
 
        local_irq_enable();
 
 
        trace_kvm_guest_enter(vcpu);
 
-       guest_enter_irqoff();
+       guest_timing_enter_irqoff();
 
        srcu_idx = srcu_read_lock(&kvm->srcu);
 
+       guest_state_enter_irqoff();
        this_cpu_disable_ftrace();
 
-       /* Tell lockdep that we're about to enable interrupts */
-       trace_hardirqs_on();
-
        trap = kvmhv_p9_guest_entry(vcpu, time_limit, lpcr, &tb);
        vcpu->arch.trap = trap;
 
-       trace_hardirqs_off();
-
        this_cpu_enable_ftrace();
+       guest_state_exit_irqoff();
 
        srcu_read_unlock(&kvm->srcu, srcu_idx);
 
        vcpu->cpu = -1;
        vcpu->arch.thread_cpu = -1;
 
-       context_tracking_guest_exit();
        if (!vtime_accounting_enabled_this_cpu()) {
                powerpc_local_irq_pmu_restore(flags);
                /*
-                * Service IRQs here before vtime_account_guest_exit() so any
+                * Service IRQs here before guest_timing_exit_irqoff() so any
                 * ticks that occurred while running the guest are accounted to
                 * the guest. If vtime accounting is enabled, accounting uses
                 * TB rather than ticks, so it can be done without enabling
                 */
                powerpc_local_irq_pmu_save(flags);
        }
-       vtime_account_guest_exit();
+       guest_timing_exit_irqoff();
 
        powerpc_local_irq_pmu_restore(flags);