On Tue, 13 Apr 2021 at 15:48, Christian Borntraeger <borntraeger@xxxxxxxxxx> wrote: > > > > On 13.04.21 09:38, Wanpeng Li wrote: > > On Tue, 13 Apr 2021 at 15:35, Christian Borntraeger > > <borntraeger@xxxxxxxxxx> wrote: > >> > >> > >> > >> On 13.04.21 09:16, Wanpeng Li wrote: > >> [...] > >> > >>> @@ -145,6 +155,13 @@ static __always_inline void guest_exit_irqoff(void) > >>> } > >>> > >>> #else > THis is the else part > > > >>> +static __always_inline void context_guest_enter_irqoff(void) > >>> +{ > >>> + instrumentation_begin(); > > 2nd on > >>> + rcu_virt_note_context_switch(smp_processor_id()); > >>> + instrumentation_end(); > 2nd off > >>> +} > >>> + > >>> static __always_inline void guest_enter_irqoff(void) > >>> { > >>> /* > >>> @@ -155,10 +172,13 @@ static __always_inline void guest_enter_irqoff(void) > >>> instrumentation_begin(); > > first on > >>> vtime_account_kernel(current); > >>> current->flags |= PF_VCPU; > >>> - rcu_virt_note_context_switch(smp_processor_id()); > >>> instrumentation_end(); > > first off > >>> + > >>> + context_guest_enter_irqoff(); > here we call the 2nd on and off. > >> > >> So we now do instrumentation_begin 2 times? > > > > Similar to context_guest_enter_irqoff() ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN. > > For the > ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN part > context_guest_enter_irqoff() > does not have instrumentation_begin/end. > > Or did I miss anything. I mean the if (!context_tracking_enabled_this_cpu()) part in the function context_guest_enter_irqoff() ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN. :) Wanpeng