KVM Archive on lore.kernel.org
 help / color / Atom feed
From: Peter Xu <peterx@redhat.com>
To: Wanpeng Li <kernellwp@gmail.com>
Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Radim Krčmář" <rkrcmar@redhat.com>,
	"Marcelo Tosatti" <mtosatti@redhat.com>
Subject: Re: [PATCH v4 1/5] KVM: LAPIC: Make lapic timer unpinned
Date: Mon, 17 Jun 2019 19:48:51 +0800
Message-ID: <20190617114850.GC30983@xz-x1> (raw)
In-Reply-To: <1560770687-23227-2-git-send-email-wanpengli@tencent.com>

On Mon, Jun 17, 2019 at 07:24:43PM +0800, Wanpeng Li wrote:
> From: Wanpeng Li <wanpengli@tencent.com>
> 
> Make lapic timer unpinned when timer is injected by posted-interrupt,

It has nothing to do with PI, yet?

And, how about mentioning 61abdbe0bc and telling that this could be
another solution for that problem (but will be used in follow up
patches)?

> the emulated timer can be offload to the housekeeping cpus, kick after 
> setting the pending timer request as alternative to commit 61abdbe0bcc.
> 
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Radim Krčmář <rkrcmar@redhat.com>
> Cc: Marcelo Tosatti <mtosatti@redhat.com>
> Signed-off-by: Wanpeng Li <wanpengli@tencent.com>
> ---
>  arch/x86/kvm/lapic.c | 8 ++++----
>  arch/x86/kvm/x86.c   | 6 +-----
>  2 files changed, 5 insertions(+), 9 deletions(-)
> 
> diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
> index e82a18c..87ecb56 100644
> --- a/arch/x86/kvm/lapic.c
> +++ b/arch/x86/kvm/lapic.c
> @@ -1578,7 +1578,7 @@ static void start_sw_tscdeadline(struct kvm_lapic *apic)
>  	    likely(ns > apic->lapic_timer.timer_advance_ns)) {
>  		expire = ktime_add_ns(now, ns);
>  		expire = ktime_sub_ns(expire, ktimer->timer_advance_ns);
> -		hrtimer_start(&ktimer->timer, expire, HRTIMER_MODE_ABS_PINNED);
> +		hrtimer_start(&ktimer->timer, expire, HRTIMER_MODE_ABS);
>  	} else
>  		apic_timer_expired(apic);
>  
> @@ -1680,7 +1680,7 @@ static void start_sw_period(struct kvm_lapic *apic)
>  
>  	hrtimer_start(&apic->lapic_timer.timer,
>  		apic->lapic_timer.target_expiration,
> -		HRTIMER_MODE_ABS_PINNED);
> +		HRTIMER_MODE_ABS);
>  }
>  
>  bool kvm_lapic_hv_timer_in_use(struct kvm_vcpu *vcpu)
> @@ -2317,7 +2317,7 @@ int kvm_create_lapic(struct kvm_vcpu *vcpu, int timer_advance_ns)
>  	apic->vcpu = vcpu;
>  
>  	hrtimer_init(&apic->lapic_timer.timer, CLOCK_MONOTONIC,
> -		     HRTIMER_MODE_ABS_PINNED);
> +		     HRTIMER_MODE_ABS);
>  	apic->lapic_timer.timer.function = apic_timer_fn;
>  	if (timer_advance_ns == -1) {
>  		apic->lapic_timer.timer_advance_ns = 1000;
> @@ -2506,7 +2506,7 @@ void __kvm_migrate_apic_timer(struct kvm_vcpu *vcpu)
>  
>  	timer = &vcpu->arch.apic->lapic_timer.timer;
>  	if (hrtimer_cancel(timer))
> -		hrtimer_start_expires(timer, HRTIMER_MODE_ABS_PINNED);
> +		hrtimer_start_expires(timer, HRTIMER_MODE_ABS);
>  }
>  
>  /*
> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
> index 0a05a4e..9450a16 100644
> --- a/arch/x86/kvm/x86.c
> +++ b/arch/x86/kvm/x86.c
> @@ -1437,12 +1437,8 @@ static void update_pvclock_gtod(struct timekeeper *tk)
>  
>  void kvm_set_pending_timer(struct kvm_vcpu *vcpu)
>  {
> -	/*
> -	 * Note: KVM_REQ_PENDING_TIMER is implicitly checked in
> -	 * vcpu_enter_guest.  This function is only called from
> -	 * the physical CPU that is running vcpu.
> -	 */
>  	kvm_make_request(KVM_REQ_PENDING_TIMER, vcpu);
> +	kvm_vcpu_kick(vcpu);
>  }
>  
>  static void kvm_write_wall_clock(struct kvm *kvm, gpa_t wall_clock)
> -- 
> 2.7.4
> 

Regards,

-- 
Peter Xu

  reply index

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-17 11:24 [PATCH v4 0/5] KVM: LAPIC: Implement Exitless Timer Wanpeng Li
2019-06-17 11:24 ` [PATCH v4 1/5] KVM: LAPIC: Make lapic timer unpinned Wanpeng Li
2019-06-17 11:48   ` Peter Xu [this message]
2019-06-18  0:38     ` Wanpeng Li
2019-06-17 11:24 ` [PATCH v4 2/5] KVM: LAPIC: inject lapic timer interrupt by posted interrupt Wanpeng Li
2019-06-18 13:35   ` Marcelo Tosatti
2019-06-19  0:36     ` Wanpeng Li
2019-06-19 21:03       ` Marcelo Tosatti
2019-06-20  0:52         ` Wanpeng Li
2019-06-21  1:42         ` Wanpeng Li
2019-06-21 21:42           ` Marcelo Tosatti
2019-06-24  8:53             ` Wanpeng Li
2019-06-25 19:00               ` Marcelo Tosatti
2019-06-26 11:02                 ` Wanpeng Li
2019-06-26 16:44                   ` Marcelo Tosatti
2019-06-28  8:26                     ` Wanpeng Li
2019-06-25 17:02             ` Paolo Bonzini
2019-06-17 11:24 ` [PATCH v4 3/5] KVM: LAPIC: Ignore timer migration when lapic timer is injected by pi Wanpeng Li
2019-06-17 11:24 ` [PATCH v4 4/5] KVM: LAPIC: Don't posted inject already-expired timer Wanpeng Li
2019-06-17 11:24 ` [PATCH v4 5/5] KVM: LAPIC: add advance timer support to pi_inject_timer Wanpeng Li
2019-06-17 21:32   ` Radim Krčmář
2019-06-18  0:44     ` Wanpeng Li
2019-06-18  0:57       ` Wanpeng Li

Reply instructions:

You may reply publically to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190617114850.GC30983@xz-x1 \
    --to=peterx@redhat.com \
    --cc=kernellwp@gmail.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mtosatti@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=rkrcmar@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

KVM Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/kvm/0 kvm/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 kvm kvm/ https://lore.kernel.org/kvm \
		kvm@vger.kernel.org
	public-inbox-index kvm

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.kvm


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git