Message ID | 20231201104536.947-1-paul@xen.org (mailing list archive) |
---|---|
Headers | show |
Series | KVM: xen: update shared_info when long_mode is set | expand |
On Fri, Dec 01, 2023, Paul Durrant wrote: > From: Paul Durrant <pdurrant@amazon.com> > > This series is based on my v9 of my "update shared_info and vcpu_info > handling" series [1] and fixes an issue that was latent before the > "allow shared_info to be mapped by fixed HVA" patch of that series allowed > a VMM to set up shared_info before the VM booted and then leave it alone. Uh, what? If this is fixing an existing bug then it really shouldn't take a dependency on a rather large and non-trivial series. If the bug can only manifest as a result of said series, then the fix absolutely belongs in that series. This change from patch 1 in particular: -static int kvm_xen_shared_info_init(struct kvm *kvm, u64 addr, bool addr_is_gfn) +static int kvm_xen_shared_info_init(struct kvm *kvm) practically screams for inclusion in that series which does: -static int kvm_xen_shared_info_init(struct kvm *kvm, gfn_t gfn) +static int kvm_xen_shared_info_init(struct kvm *kvm, u64 addr, bool addr_is_gfn) Why not get the code right the first time instead of fixing it up in a completely different series?
> -----Original Message----- > From: Sean Christopherson <seanjc@google.com> > Sent: 01 December 2023 16:46 > To: Paul Durrant <paul@xen.org> > Cc: David Woodhouse <dwmw2@infradead.org>; Paolo Bonzini <pbonzini@redhat.com>; Thomas Gleixner > <tglx@linutronix.de>; Ingo Molnar <mingo@redhat.com>; Borislav Petkov <bp@alien8.de>; Dave Hansen > <dave.hansen@linux.intel.com>; x86@kernel.org; H. Peter Anvin <hpa@zytor.com>; kvm@vger.kernel.org; > linux-kernel@vger.kernel.org > Subject: RE: [EXTERNAL] [PATCH 0/2] KVM: xen: update shared_info when long_mode is set > > CAUTION: This email originated from outside of the organization. Do not click links or open > attachments unless you can confirm the sender and know the content is safe. > > > > On Fri, Dec 01, 2023, Paul Durrant wrote: > > From: Paul Durrant <pdurrant@amazon.com> > > > > This series is based on my v9 of my "update shared_info and vcpu_info > > handling" series [1] and fixes an issue that was latent before the > > "allow shared_info to be mapped by fixed HVA" patch of that series allowed > > a VMM to set up shared_info before the VM booted and then leave it alone. > > Uh, what? If this is fixing an existing bug then it really shouldn't take a > dependency on a rather large and non-trivial series. If the bug can only manifest > as a result of said series, then the fix absolutely belongs in that series. > There's been radio silence on that series for a while so I was unsure of the status. > This change from patch 1 in particular: > > -static int kvm_xen_shared_info_init(struct kvm *kvm, u64 addr, bool addr_is_gfn) > +static int kvm_xen_shared_info_init(struct kvm *kvm) > > practically screams for inclusion in that series which does: > > -static int kvm_xen_shared_info_init(struct kvm *kvm, gfn_t gfn) > +static int kvm_xen_shared_info_init(struct kvm *kvm, u64 addr, bool addr_is_gfn) > > Why not get the code right the first time instead of fixing it up in a completely > different series? Sure, I can fold it in. Paul
On Fri, Dec 01, 2023, Paul Durrant wrote: > > On Fri, Dec 01, 2023, Paul Durrant wrote: > > > From: Paul Durrant <pdurrant@amazon.com> > > > > > > This series is based on my v9 of my "update shared_info and vcpu_info > > > handling" series [1] and fixes an issue that was latent before the > > > "allow shared_info to be mapped by fixed HVA" patch of that series allowed > > > a VMM to set up shared_info before the VM booted and then leave it alone. > > > > Uh, what? If this is fixing an existing bug then it really shouldn't take a > > dependency on a rather large and non-trivial series. If the bug can only manifest > > as a result of said series, then the fix absolutely belongs in that series. > > > > There's been radio silence on that series for a while so I was unsure of the status. v9 was posted the day before Thanksgiving, the week after plumbers, and a few weeks after the merge window closed. And it's an invasive series to some of KVM's gnarliest code, i.e. it's not something that can be reviewed in passing. We're also entering both the holiday season and the end of the year when people get sucked into annual reviews and whatnot. I totally understand that it can be frustrating when upstream moves at a glacial pace, but deviating from the established best practices is never going to speed things up, and is almost always going to do the exact oppositie.
From: Paul Durrant <pdurrant@amazon.com> This series is based on my v9 of my "update shared_info and vcpu_info handling" series [1] and fixes an issue that was latent before the "allow shared_info to be mapped by fixed HVA" patch of that series allowed a VMM to set up shared_info before the VM booted and then leave it alone. The problem was noticed when the guest wallclock apparently reverted to the Unix epoch. This was because, when the shared_info was set up the guest's long_mode flag was unset and hence the wallclock was intialized in the place where a 32-bit guest would expect to find it. The 64-bit guest being tested instead found zero-ed out memory. Fix the the issue by first separating the initialization of the shared_info content from setting its location (by HVA or GPA) and then (re-)initializing the content any time the long_mode flag is changed. [1] https://lore.kernel.org/kvm/20231122121822.1042-1-paul@xen.org/ Paul Durrant (2): KVM: xen: separate initialization of shared_info cache and content KVM: xen: (re-)initialize shared_info if guest (32/64-bit) mode is set arch/x86/kvm/xen.c | 84 ++++++++++++++++++++++++++++------------------ 1 file changed, 52 insertions(+), 32 deletions(-) base-commit: 369e9826edfd346f259471e521c03e12bb0ab476