lkml.org 
[lkml]   [2022]   [Aug]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectRe: [PATCH 11/19] KVM: SVM: Add helper to perform final AVIC "kick" of single vCPU
    From
    Date
    On Wed, 2022-08-31 at 00:34 +0000, Sean Christopherson wrote:
    > Add a helper to perform the final kick, two instances of the ICR decoding
    > is one too many.
    >
    > No functional change intended.
    >
    > Signed-off-by: Sean Christopherson <seanjc@google.com>
    > ---
    > arch/x86/kvm/svm/avic.c | 25 +++++++++++++------------
    > 1 file changed, 13 insertions(+), 12 deletions(-)
    >
    > diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c
    > index 3959d4766911..2095ece70712 100644
    > --- a/arch/x86/kvm/svm/avic.c
    > +++ b/arch/x86/kvm/svm/avic.c
    > @@ -329,6 +329,16 @@ void avic_ring_doorbell(struct kvm_vcpu *vcpu)
    > put_cpu();
    > }
    >
    > +
    > +static void avic_kick_vcpu(struct kvm_vcpu *vcpu, u32 icrl)
    > +{
    > + vcpu->arch.apic->irr_pending = true;
    > + svm_complete_interrupt_delivery(vcpu,
    > + icrl & APIC_MODE_MASK,
    > + icrl & APIC_INT_LEVELTRIG,
    > + icrl & APIC_VECTOR_MASK);
    > +}
    > +
    > /*
    > * A fast-path version of avic_kick_target_vcpus(), which attempts to match
    > * destination APIC ID to vCPU without looping through all vCPUs.
    > @@ -427,11 +437,7 @@ static int avic_kick_target_vcpus_fast(struct kvm *kvm, struct kvm_lapic *source
    > if (unlikely(!target_vcpu))
    > return 0;
    >
    > - target_vcpu->arch.apic->irr_pending = true;
    > - svm_complete_interrupt_delivery(target_vcpu,
    > - icrl & APIC_MODE_MASK,
    > - icrl & APIC_INT_LEVELTRIG,
    > - icrl & APIC_VECTOR_MASK);
    > + avic_kick_vcpu(target_vcpu, icrl);
    > return 0;
    > }
    >
    > @@ -455,13 +461,8 @@ static void avic_kick_target_vcpus(struct kvm *kvm, struct kvm_lapic *source,
    > */
    > kvm_for_each_vcpu(i, vcpu, kvm) {
    > if (kvm_apic_match_dest(vcpu, source, icrl & APIC_SHORT_MASK,
    > - dest, icrl & APIC_DEST_MASK)) {
    > - vcpu->arch.apic->irr_pending = true;
    > - svm_complete_interrupt_delivery(vcpu,
    > - icrl & APIC_MODE_MASK,
    > - icrl & APIC_INT_LEVELTRIG,
    > - icrl & APIC_VECTOR_MASK);
    > - }
    > + dest, icrl & APIC_DEST_MASK))
    > + avic_kick_vcpu(vcpu, icrl);
    > }
    > }
    >

    I don't know what I think about this, sometimes *minor* code duplication might actually
    be a good thing, as it is easier to read the code, but I don't have much against this
    as well.

    I am not sure if before or after this code is more readable.

    But anyway,

    Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>

    Best regards,
    Maxim Levitsky

    \
     
     \ /
      Last update: 2022-08-31 12:26    [W:3.049 / U:0.352 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site