Message ID | 20220222154642.684285-2-vkuznets@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: x86: hyper-v: XMM fast hypercalls fixes | expand |
On Tue, 2022-02-22 at 16:46 +0100, Vitaly Kuznetsov wrote: > 'struct kvm_hv_hcall' has all the required information already, > there's no need to pass 'ex' additionally. > > No functional change intended. > > Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com> > --- > arch/x86/kvm/hyperv.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/arch/x86/kvm/hyperv.c b/arch/x86/kvm/hyperv.c > index 6e38a7d22e97..15b6a7bd2346 100644 > --- a/arch/x86/kvm/hyperv.c > +++ b/arch/x86/kvm/hyperv.c > @@ -1875,7 +1875,7 @@ static void kvm_send_ipi_to_many(struct kvm *kvm, u32 vector, > } > } > > -static u64 kvm_hv_send_ipi(struct kvm_vcpu *vcpu, struct kvm_hv_hcall *hc, bool ex) > +static u64 kvm_hv_send_ipi(struct kvm_vcpu *vcpu, struct kvm_hv_hcall *hc) > { > struct kvm *kvm = vcpu->kvm; > struct hv_send_ipi_ex send_ipi_ex; > @@ -1889,7 +1889,7 @@ static u64 kvm_hv_send_ipi(struct kvm_vcpu *vcpu, struct kvm_hv_hcall *hc, bool > u32 vector; > bool all_cpus; > > - if (!ex) { > + if (hc->code == HVCALL_SEND_IPI) { I am thinking, if we already touch this code, why not to use switch here instead on the hc->code, so that we can catch this function being called with something else than HVCALL_SEND_IPI_EX > if (!hc->fast) { > if (unlikely(kvm_read_guest(kvm, hc->ingpa, &send_ipi, > sizeof(send_ipi)))) > @@ -2279,14 +2279,14 @@ int kvm_hv_hypercall(struct kvm_vcpu *vcpu) > ret = HV_STATUS_INVALID_HYPERCALL_INPUT; > break; > } > - ret = kvm_hv_send_ipi(vcpu, &hc, false); > + ret = kvm_hv_send_ipi(vcpu, &hc); > break; > case HVCALL_SEND_IPI_EX: > if (unlikely(hc.fast || hc.rep)) { > ret = HV_STATUS_INVALID_HYPERCALL_INPUT; > break; > } > - ret = kvm_hv_send_ipi(vcpu, &hc, true); > + ret = kvm_hv_send_ipi(vcpu, &hc); > break; > case HVCALL_POST_DEBUG_DATA: > case HVCALL_RETRIEVE_DEBUG_DATA: Other than this minor nitpick: Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com> Best regards, Maxim Levitsky
Maxim Levitsky <mlevitsk@redhat.com> writes: > On Tue, 2022-02-22 at 16:46 +0100, Vitaly Kuznetsov wrote: >> 'struct kvm_hv_hcall' has all the required information already, >> there's no need to pass 'ex' additionally. >> >> No functional change intended. >> >> Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com> >> --- >> arch/x86/kvm/hyperv.c | 8 ++++---- >> 1 file changed, 4 insertions(+), 4 deletions(-) >> >> diff --git a/arch/x86/kvm/hyperv.c b/arch/x86/kvm/hyperv.c >> index 6e38a7d22e97..15b6a7bd2346 100644 >> --- a/arch/x86/kvm/hyperv.c >> +++ b/arch/x86/kvm/hyperv.c >> @@ -1875,7 +1875,7 @@ static void kvm_send_ipi_to_many(struct kvm *kvm, u32 vector, >> } >> } >> >> -static u64 kvm_hv_send_ipi(struct kvm_vcpu *vcpu, struct kvm_hv_hcall *hc, bool ex) >> +static u64 kvm_hv_send_ipi(struct kvm_vcpu *vcpu, struct kvm_hv_hcall *hc) >> { >> struct kvm *kvm = vcpu->kvm; >> struct hv_send_ipi_ex send_ipi_ex; >> @@ -1889,7 +1889,7 @@ static u64 kvm_hv_send_ipi(struct kvm_vcpu *vcpu, struct kvm_hv_hcall *hc, bool >> u32 vector; >> bool all_cpus; >> >> - if (!ex) { >> + if (hc->code == HVCALL_SEND_IPI) { > > I am thinking, if we already touch this code, > why not to use switch here instead on the hc->code, > so that we can catch this function being called with something else than > HVCALL_SEND_IPI_EX I'm not against this second line of defense but kvm_hv_send_ipi() is only called explicitly from kvm_hv_hypercall()'s switch so something is really screwed up if we end up seeing something different from HVCALL_SEND_IPI_EX/HVCALL_SEND_IPI here. I'm now working on a bigger series for TLB flush improvements, will use your suggestion there, thanks! > >> if (!hc->fast) { >> if (unlikely(kvm_read_guest(kvm, hc->ingpa, &send_ipi, >> sizeof(send_ipi)))) >> @@ -2279,14 +2279,14 @@ int kvm_hv_hypercall(struct kvm_vcpu *vcpu) >> ret = HV_STATUS_INVALID_HYPERCALL_INPUT; >> break; >> } >> - ret = kvm_hv_send_ipi(vcpu, &hc, false); >> + ret = kvm_hv_send_ipi(vcpu, &hc); >> break; >> case HVCALL_SEND_IPI_EX: >> if (unlikely(hc.fast || hc.rep)) { >> ret = HV_STATUS_INVALID_HYPERCALL_INPUT; >> break; >> } >> - ret = kvm_hv_send_ipi(vcpu, &hc, true); >> + ret = kvm_hv_send_ipi(vcpu, &hc); >> break; >> case HVCALL_POST_DEBUG_DATA: >> case HVCALL_RETRIEVE_DEBUG_DATA: > > > > Other than this minor nitpick: > > Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com> > > > Best regards, > Maxim Levitsky >
On Tue, Feb 22, 2022 at 04:46:39PM +0100, Vitaly Kuznetsov wrote: > 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. > > > > 'struct kvm_hv_hcall' has all the required information already, > there's no need to pass 'ex' additionally. > > No functional change intended. > > Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com> Reviewed-by: Siddharth Chandrasekaran <sidcha@amazon.de> Amazon Development Center Germany GmbH Krausenstr. 38 10117 Berlin Geschaeftsfuehrung: Christian Schlaeger, Jonathan Weiss Eingetragen am Amtsgericht Charlottenburg unter HRB 149173 B Sitz: Berlin Ust-ID: DE 289 237 879
diff --git a/arch/x86/kvm/hyperv.c b/arch/x86/kvm/hyperv.c index 6e38a7d22e97..15b6a7bd2346 100644 --- a/arch/x86/kvm/hyperv.c +++ b/arch/x86/kvm/hyperv.c @@ -1875,7 +1875,7 @@ static void kvm_send_ipi_to_many(struct kvm *kvm, u32 vector, } } -static u64 kvm_hv_send_ipi(struct kvm_vcpu *vcpu, struct kvm_hv_hcall *hc, bool ex) +static u64 kvm_hv_send_ipi(struct kvm_vcpu *vcpu, struct kvm_hv_hcall *hc) { struct kvm *kvm = vcpu->kvm; struct hv_send_ipi_ex send_ipi_ex; @@ -1889,7 +1889,7 @@ static u64 kvm_hv_send_ipi(struct kvm_vcpu *vcpu, struct kvm_hv_hcall *hc, bool u32 vector; bool all_cpus; - if (!ex) { + if (hc->code == HVCALL_SEND_IPI) { if (!hc->fast) { if (unlikely(kvm_read_guest(kvm, hc->ingpa, &send_ipi, sizeof(send_ipi)))) @@ -2279,14 +2279,14 @@ int kvm_hv_hypercall(struct kvm_vcpu *vcpu) ret = HV_STATUS_INVALID_HYPERCALL_INPUT; break; } - ret = kvm_hv_send_ipi(vcpu, &hc, false); + ret = kvm_hv_send_ipi(vcpu, &hc); break; case HVCALL_SEND_IPI_EX: if (unlikely(hc.fast || hc.rep)) { ret = HV_STATUS_INVALID_HYPERCALL_INPUT; break; } - ret = kvm_hv_send_ipi(vcpu, &hc, true); + ret = kvm_hv_send_ipi(vcpu, &hc); break; case HVCALL_POST_DEBUG_DATA: case HVCALL_RETRIEVE_DEBUG_DATA:
'struct kvm_hv_hcall' has all the required information already, there's no need to pass 'ex' additionally. No functional change intended. Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com> --- arch/x86/kvm/hyperv.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)