On Wed, 14 Apr 2021 at 01:25, Sean Christopherson <seanjc@xxxxxxxxxx> wrote: > > On Tue, Apr 13, 2021, Wanpeng Li wrote: > > The bugzilla https://bugzilla.kernel.org/show_bug.cgi?id=209831 > > reported that the guest time remains 0 when running a while true > > loop in the guest. > > > > The commit 87fa7f3e98a131 ("x86/kvm: Move context tracking where it > > belongs") moves guest_exit_irqoff() close to vmexit breaks the > > tick-based time accouting when the ticks that happen after IRQs are > > disabled are incorrectly accounted to the host/system time. This is > > because we exit the guest state too early. > > > > This patchset splits both context tracking logic and the time accounting > > logic from guest_enter/exit_irqoff(), keep context tracking around the > > actual vmentry/exit code, have the virt time specific helpers which > > can be placed at the proper spots in kvm. In addition, it will not > > break the world outside of x86. > > IMO, this is going in the wrong direction. Rather than separate context tracking, > vtime accounting, and KVM logic, this further intertwines the three. E.g. the > context tracking code has even more vtime accounting NATIVE vs. GEN vs. TICK > logic baked into it. > > Rather than smush everything into context_tracking.h, I think we can cleanly > split the context tracking and vtime accounting code into separate pieces, which > will in turn allow moving the wrapping logic to linux/kvm_host.h. Once that is > done, splitting the context tracking and time accounting logic for KVM x86 > becomes a KVM detail as opposed to requiring dedicated logic in the context > tracking code. > > I have untested code that compiles on x86, I'll send an RFC shortly. We need an easy to backport fix and then we might have some further cleanups on top. Wanpeng