Message ID | 20210914230840.3030620-1-seanjc@google.com (mailing list archive) |
---|---|
Headers | show |
Series | KVM: x86: Clean up RESET "emulation" | expand |
On Wed, Sep 15, 2021 at 1:08 AM Sean Christopherson <seanjc@google.com> wrote: > Add dedicated helpers to emulate RESET instead of having the relevant code > scattered through vcpu_create() and vcpu_reset(). Paolo, I think this is > what you meant by "have init_vmcb/svm_vcpu_reset look more like the VMX > code"[*]. > > [*] https://lore.kernel.org/all/c3563870-62c3-897d-3148-e48bb755310c@redhat.com/ That assumes that I remember what I meant :) but I do like it so yes, that was it. Especially the fact that init_vmcb now has a single caller. I would further consider moving save area initialization to *_vcpu_reset, and keeping the control fields in init_vmcb/vmcs. That would make it easier to relate the two functions to separate parts of the manuals. I should go back to KVM next week. Context switching with KVM Forum and Kangrejos this week made everything so much slower than I'd liked. Paolo
On Fri, Sep 17, 2021, Paolo Bonzini wrote: > On Wed, Sep 15, 2021 at 1:08 AM Sean Christopherson <seanjc@google.com> wrote: > > Add dedicated helpers to emulate RESET instead of having the relevant code > > scattered through vcpu_create() and vcpu_reset(). Paolo, I think this is > > what you meant by "have init_vmcb/svm_vcpu_reset look more like the VMX > > code"[*]. > > > > [*] https://lore.kernel.org/all/c3563870-62c3-897d-3148-e48bb755310c@redhat.com/ > > That assumes that I remember what I meant :) Ha! That's why I write changelogs with --verbose :-) > but I do like it so yes, that was it. Especially the fact that init_vmcb now > has a single caller. I would further consider moving save area initialization > to *_vcpu_reset, and keeping the control fields in init_vmcb/vmcs. That would > make it easier to relate the two functions to separate parts of the manuals. I like the idea, but I think I'd prefer to tackle that at the same time as generic support for handling MSRs at RESET/INIT. E.g. instead of manually writing vmcs.GUEST_SYSENTER_* at RESET, provide infrastruture to automagically run through all emulated/virtualized at RESET and/or INIT as appropriate to initialize the guest value.
On 17/09/21 19:34, Sean Christopherson wrote: >> but I do like it so yes, that was it. Especially the fact that init_vmcb now >> has a single caller. I would further consider moving save area initialization >> to *_vcpu_reset, and keeping the control fields in init_vmcb/vmcs. That would >> make it easier to relate the two functions to separate parts of the manuals. > > I like the idea, but I think I'd prefer to tackle that at the same time as generic > support for handling MSRs at RESET/INIT. No problem, just roughly sketching some ideas for the future. But you're absolutely right that some MSRs have effects on the control areas rather than the save area (and some have effects on neither). Thanks, Paolo > E.g. instead of manually writing > vmcs.GUEST_SYSENTER_* at RESET, provide infrastruture to automagically run through > all emulated/virtualized at RESET and/or INIT as appropriate to initialize the > guest value. >