Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp1630503ybz; Thu, 23 Apr 2020 02:37:57 -0700 (PDT) X-Google-Smtp-Source: APiQypJXjIIovcpZROUovI+GsIi/DTfZjWGBgA56Ucpq3TsW7PLqbFGgdzcHzP6oFzln7Pcots1d X-Received: by 2002:a50:a7a6:: with SMTP id i35mr1892180edc.130.1587634677613; Thu, 23 Apr 2020 02:37:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587634677; cv=none; d=google.com; s=arc-20160816; b=ekLGxZazYGwboePSI/ovJjfpOaX6Fb5S7hDYP7Zveq+OcadgTsfI5oDPYc+VEcqITZ dNTFuV+hMxnLyeNwCcPR3I25YqK1rjx6QIAc+jWijMR4+zdqJVa/xhphLkjDZ1uN8ln3 M8+K6g9ELxA5+atR/GeF+nhDrVZyoc9JVsHluQlpg7i4F8MrevvhneqfMM1VDhRs73oo vFdUQmFrmk8LbGY8Z2Ib9k64fhk0NfCtxjohmUukCwOp7hLRfdaHjfT9RTjWf9V2Qta2 f+AFRYpQuOKwHRX6DtwlvBfRK0TUMBhdJInX+lw6Sjq6ow8prlSu6oCp+ycAhepC3OKz bhGA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=b/1A4hBh1dolv+frlySc+d0U0LH03mwvnz3gVgxsSMU=; b=UDrrdCnSIFJ2jNhuHueVZt25Kek0AIejDj/nMqJvAcav2d6oAEa6dCnfJ1maMH4xzA 3qf7kHxdJnSoJkysUhVgV2uZLFMvPOulkvPljsNrMT1z/LVPVHVIZrW/TYV4/QgQ7bFu SjEEuQzIQhkH2w3qq7aFWIMBO7LzEa2tgl/IGafOWQgIyjQx9xGPBEPl2yd97M1W/mn/ 9haH2g64kcOsfiHjPeHHxlsFP2IFAvGHm6aj7z77zKWgkbgfqwSoXTbsgud5LeRoA54l wT0++xDMQmNbDUlxnFMsJPFZTojk/4c+/gNShYC4/dBdfd5EBrZPiswme/GFZqhjwRHi gAwg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=bAESsIRh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j9si714947ejo.308.2020.04.23.02.37.33; Thu, 23 Apr 2020 02:37:57 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=bAESsIRh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726909AbgDWJfh (ORCPT + 99 others); Thu, 23 Apr 2020 05:35:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54508 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725863AbgDWJfg (ORCPT ); Thu, 23 Apr 2020 05:35:36 -0400 Received: from mail-ot1-x343.google.com (mail-ot1-x343.google.com [IPv6:2607:f8b0:4864:20::343]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B1DDDC03C1AF; Thu, 23 Apr 2020 02:35:36 -0700 (PDT) Received: by mail-ot1-x343.google.com with SMTP id e20so4897925otk.12; Thu, 23 Apr 2020 02:35:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=b/1A4hBh1dolv+frlySc+d0U0LH03mwvnz3gVgxsSMU=; b=bAESsIRhZD37NKG0MIomS9UmIlUo6trshfHUoXzEoL4k0SPLvMNZt3V1lX6os+A9VG 2IbwmhLrTwsCZqQpKlLrSYiC5UBF7bIWsv/PAecdTrkdkK2tqnHymU/vNQ22ZgaBenrD pWvqB/guN4j1vMnwQLZ5PAut/4rFZM4rQRu4sGPDp36pPIS3lWiSwk1zBd3BajsKb3zT wnPgDXsrOdDaQ8JqqHcI4r8axYcdu1Ig7Edan1pEAbAw+QqHgaaleiKKbzBES4VehSi1 iKb3YQ0dXTJjXBtdpsLj6CmI+2yETd/pbssV2PyqxUq8weaZRr4N6zO4WKiinNnbzakF XGSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=b/1A4hBh1dolv+frlySc+d0U0LH03mwvnz3gVgxsSMU=; b=M64SrUVt+mcSogYr/gxFLXtRt7czAz+d3YeaEtR28Ws+uvpA9EtJVXHfwyWThV7Iec Hot4EKYoBOaXUrSGvJtFEq6Q4E7ALC0ALhPD4/bnJeWf1bMEiGKGDbiy0bTzByw2O9o/ C2LTmrc1x6dGubr+KHYsTMKmVnFHkbS30s2QGwOxbZ/CROHi8gRKu2T0SVJnNfjgcRVk 7YYGfOwcstkxkm4FQyh4kEcWBb9RcU80dgA4gQQYepQoLvuQNrC6vjn3yPHrsw/Q03dv nQd4/vJIecRzQW/a3kMsltA7CW/dsQDziKWZbjH0ynslk5aUbhW/NCw85XCetzFG7LpE vY+Q== X-Gm-Message-State: AGi0PuZJLmRU8ybPIHQZL2OjmamjNk9NeurMn7n0tZeUiqCW44dieAjC O1XezXchwbRiFCnt5vHP92mcQx0zfc/u5eHXyag= X-Received: by 2002:a9d:7f04:: with SMTP id j4mr2791485otq.185.1587634536173; Thu, 23 Apr 2020 02:35:36 -0700 (PDT) MIME-Version: 1.0 References: <1587632507-18997-1-git-send-email-wanpengli@tencent.com> <1587632507-18997-2-git-send-email-wanpengli@tencent.com> <09cba36c-61d8-e660-295d-af54ceb36036@redhat.com> In-Reply-To: <09cba36c-61d8-e660-295d-af54ceb36036@redhat.com> From: Wanpeng Li Date: Thu, 23 Apr 2020 17:35:25 +0800 Message-ID: Subject: Re: [PATCH v2 1/5] KVM: LAPIC: Introduce interrupt delivery fastpath To: Paolo Bonzini Cc: LKML , kvm , Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , Haiwei Li Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 23 Apr 2020 at 17:25, Paolo Bonzini wrote: > > On 23/04/20 11:01, Wanpeng Li wrote: > > +static void fast_deliver_interrupt(struct kvm_lapic *apic, int vector) > > +{ > > + struct kvm_vcpu *vcpu = apic->vcpu; > > + > > + kvm_lapic_clear_vector(vector, apic->regs + APIC_TMR); > > + > > + if (vcpu->arch.apicv_active) { > > + if (kvm_x86_ops.pi_test_and_set_pir_on(vcpu, vector)) > > + return; > > + > > + kvm_x86_ops.sync_pir_to_irr(vcpu); > > + } else { > > + kvm_lapic_set_irr(vector, apic); > > + if (kvm_cpu_has_injectable_intr(vcpu)) { > > + if (kvm_x86_ops.interrupt_allowed(vcpu)) { > > + kvm_queue_interrupt(vcpu, > > + kvm_cpu_get_interrupt(vcpu), false); > > + kvm_x86_ops.set_irq(vcpu); > > + } else > > + kvm_x86_ops.enable_irq_window(vcpu); > > + } > > + } > > +} > > + > > Ok, got it now. The problem is that deliver_posted_interrupt goes through > > if (!kvm_vcpu_trigger_posted_interrupt(vcpu, false)) > kvm_vcpu_kick(vcpu); > > Would it help to make the above > > if (vcpu != kvm_get_running_vcpu() && > !kvm_vcpu_trigger_posted_interrupt(vcpu, false)) > kvm_vcpu_kick(vcpu); > > ? If that is enough for the APICv case, it's good enough. We will not exit from vmx_vcpu_run to vcpu_enter_guest, so it will not help, right? Wanpeng