lkml.org 
[lkml]   [2015]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRE: [v3 24/26] KVM: Update Posted-Interrupts Descriptor when vCPU is blocked
    Date


    > -----Original Message-----
    > From: Marcelo Tosatti [mailto:mtosatti@redhat.com]
    > Sent: Saturday, June 06, 2015 5:59 AM
    > To: Wu, Feng
    > Cc: hpa@zytor.com; tglx@linutronix.de; mingo@redhat.com; x86@kernel.org;
    > gleb@kernel.org; pbonzini@redhat.com; dwmw2@infradead.org;
    > joro@8bytes.org; alex.williamson@redhat.com; jiang.liu@linux.intel.com;
    > eric.auger@linaro.org; linux-kernel@vger.kernel.org;
    > iommu@lists.linux-foundation.org; kvm@vger.kernel.org
    > Subject: Re: [v3 24/26] KVM: Update Posted-Interrupts Descriptor when vCPU
    > is blocked
    >
    > On Tue, Apr 14, 2015 at 07:37:44AM +0000, Wu, Feng wrote:
    > >
    > >
    > > > -----Original Message-----
    > > > From: Marcelo Tosatti [mailto:mtosatti@redhat.com]
    > > > Sent: Tuesday, March 31, 2015 7:56 AM
    > > > To: Wu, Feng
    > > > Cc: hpa@zytor.com; tglx@linutronix.de; mingo@redhat.com;
    > x86@kernel.org;
    > > > gleb@kernel.org; pbonzini@redhat.com; dwmw2@infradead.org;
    > > > joro@8bytes.org; alex.williamson@redhat.com; jiang.liu@linux.intel.com;
    > > > eric.auger@linaro.org; linux-kernel@vger.kernel.org;
    > > > iommu@lists.linux-foundation.org; kvm@vger.kernel.org
    > > > Subject: Re: [v3 24/26] KVM: Update Posted-Interrupts Descriptor when
    > vCPU
    > > > is blocked
    > > >
    > > > On Mon, Mar 30, 2015 at 04:46:55AM +0000, Wu, Feng wrote:
    > > > >
    > > > >
    > > > > > -----Original Message-----
    > > > > > From: Marcelo Tosatti [mailto:mtosatti@redhat.com]
    > > > > > Sent: Saturday, March 28, 2015 3:30 AM
    > > > > > To: Wu, Feng
    > > > > > Cc: hpa@zytor.com; tglx@linutronix.de; mingo@redhat.com;
    > > > x86@kernel.org;
    > > > > > gleb@kernel.org; pbonzini@redhat.com; dwmw2@infradead.org;
    > > > > > joro@8bytes.org; alex.williamson@redhat.com;
    > jiang.liu@linux.intel.com;
    > > > > > eric.auger@linaro.org; linux-kernel@vger.kernel.org;
    > > > > > iommu@lists.linux-foundation.org; kvm@vger.kernel.org
    > > > > > Subject: Re: [v3 24/26] KVM: Update Posted-Interrupts Descriptor when
    > > > vCPU
    > > > > > is blocked
    > > > > >
    > > > > > On Fri, Mar 27, 2015 at 06:34:14AM +0000, Wu, Feng wrote:
    > > > > > > > > Currently, the following code is executed before local_irq_disable()
    > is
    > > > > > called,
    > > > > > > > > so do you mean 1)moving local_irq_disable() to the place before it.
    > 2)
    > > > after
    > > > > > > > interrupt
    > > > > > > > > is disabled, set KVM_REQ_EVENT in case the ON bit is set?
    > > > > > > >
    > > > > > > > 2) after interrupt is disabled, set KVM_REQ_EVENT in case the ON
    > bit
    > > > > > > > is set.
    > > > > > >
    > > > > > > Here is my understanding about your comments here:
    > > > > > > - Disable interrupts
    > > > > > > - Check 'ON'
    > > > > > > - Set KVM_REQ_EVENT if 'ON' is set
    > > > > > >
    > > > > > > Then we can put the above code inside " if
    > > > > > (kvm_check_request(KVM_REQ_EVENT, vcpu) || req_int_win) "
    > > > > > > just like it used to be. However, I still have some questions about this
    > > > > > comment:
    > > > > > >
    > > > > > > 1. Where should I set KVM_REQ_EVENT? In function
    > vcpu_enter_guest(),
    > > > or
    > > > > > other places?
    > > > > >
    > > > > > See below:
    > > > > >
    > > > > > > If in vcpu_enter_guest(), since currently local_irq_disable() is called
    > after
    > > > > > 'KVM_REQ_EVENT'
    > > > > > > is checked, is it helpful to set KVM_REQ_EVENT after
    > local_irq_disable() is
    > > > > > called?
    > > > > >
    > > > > > local_irq_disable();
    > > > > >
    > > > > > *** add code here ***
    > > > >
    > > > > So we need add code like the following here, right?
    > > > >
    > > > > if ('ON' is set)
    > > > > kvm_make_request(KVM_REQ_EVENT, vcpu);
    > > >
    > >
    > > Hi Marcelo,
    > >
    > > I changed the code as above, then I found that the ping latency was
    > extremely big, (70ms - 400ms).
    > > I digged into it and got the root cause. We cannot use "checking-on" as the
    > judgment, since 'ON'
    > > can be cleared by hypervisor software in lots of places. In this case,
    > KVM_REQ_EVENT cannot be
    > > set when we check 'ON' bit, hence the interrupts are not injected to the guest
    > in time.
    > >
    > > Please refer to the following code, in which 'ON' bit can be cleared:
    > >
    > > apic_find_highest_irr () --> vmx_sync_pir_to_irr () --> pi_test_and_clear_on()
    > >
    > > Searching from the code step by step, apic_find_highest_irr() can be called by
    > many other guys.
    > >
    > > Thanks,
    >
    > Ok then, ignore my suggestion.
    >
    > Can you resend the latest version please ?

    Thanks for your review, I will send the new version soon.

    Thanks,
    Feng

    >



    \
     
     \ /
      Last update: 2015-06-08 04:01    [W:2.689 / U:0.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site