From: Gleb Natapov <gleb@redhat.com>
To: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
Cc: jeremy@goop.org, gregkh@suse.de, kvm@vger.kernel.org,
linux-doc@vger.kernel.org, peterz@infradead.org,
drjones@redhat.com, virtualization@lists.linux-foundation.org,
andi@firstfloor.org, hpa@zytor.com,
stefano.stabellini@eu.citrix.com, xen-devel@lists.xensource.com,
x86@kernel.org, mingo@redhat.com, habanero@linux.vnet.ibm.com,
riel@redhat.com, konrad.wilk@oracle.com, ouyang@cs.pitt.edu,
avi.kivity@gmail.com, tglx@linutronix.de, chegu_vinod@hp.com,
linux-kernel@vger.kernel.org, srivatsa.vaddagiri@gmail.com,
attilio.rao@citrix.com, pbonzini@redhat.com,
torvalds@linux-foundation.org, stephan.diestelhorst@amd.com
Subject: Re: [PATCH RFC V10 16/18] kvm hypervisor : Simplify kvm_for_each_vcpu with kvm_irq_delivery_to_apic
Date: Mon, 15 Jul 2013 18:46:47 +0300 [thread overview]
Message-ID: <20130715154647.GA19212@redhat.com> (raw)
In-Reply-To: <51E416ED.3090604@linux.vnet.ibm.com>
On Mon, Jul 15, 2013 at 09:06:13PM +0530, Raghavendra K T wrote:
> On 07/14/2013 06:54 PM, Gleb Natapov wrote:
> >On Mon, Jun 24, 2013 at 06:13:53PM +0530, Raghavendra K T wrote:
> >>Simplify kvm_for_each_vcpu with kvm_irq_delivery_to_apic
> >>
> >>From: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
> >>
> >>Note that we are using APIC_DM_REMRD which has reserved usage.
> >>In future if APIC_DM_REMRD usage is standardized, then we should
> >>find some other way or go back to old method.
> >>
> >>Suggested-by: Gleb Natapov <gleb@redhat.com>
> >>Signed-off-by: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
> >>---
> >> arch/x86/kvm/lapic.c | 5 ++++-
> >> arch/x86/kvm/x86.c | 25 ++++++-------------------
> >> 2 files changed, 10 insertions(+), 20 deletions(-)
> >>
> >>diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
> >>index e1adbb4..3f5f82e 100644
> >>--- a/arch/x86/kvm/lapic.c
> >>+++ b/arch/x86/kvm/lapic.c
> >>@@ -706,7 +706,10 @@ out:
> >> break;
> >>
> >> case APIC_DM_REMRD:
> >>- apic_debug("Ignoring delivery mode 3\n");
> >>+ result = 1;
> >>+ vcpu->arch.pv.pv_unhalted = 1;
> >>+ kvm_make_request(KVM_REQ_EVENT, vcpu);
> >>+ kvm_vcpu_kick(vcpu);
> >> break;
> >>
> >> case APIC_DM_SMI:
> >>diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
> >>index 92a9932..b963c86 100644
> >>--- a/arch/x86/kvm/x86.c
> >>+++ b/arch/x86/kvm/x86.c
> >>@@ -5456,27 +5456,14 @@ int kvm_hv_hypercall(struct kvm_vcpu *vcpu)
> >> */
> >> static void kvm_pv_kick_cpu_op(struct kvm *kvm, int apicid)
> >> {
> >>- struct kvm_vcpu *vcpu = NULL;
> >>- int i;
> >>+ struct kvm_lapic_irq lapic_irq;
> >>
> >>- kvm_for_each_vcpu(i, vcpu, kvm) {
> >>- if (!kvm_apic_present(vcpu))
> >>- continue;
> >>+ lapic_irq.shorthand = 0;
> >>+ lapic_irq.dest_mode = 0;
> >>+ lapic_irq.dest_id = apicid;
> >>
> >>- if (kvm_apic_match_dest(vcpu, 0, 0, apicid, 0))
> >>- break;
> >>- }
> >>- if (vcpu) {
> >>- /*
> >>- * Setting unhalt flag here can result in spurious runnable
> >>- * state when unhalt reset does not happen in vcpu_block.
> >>- * But that is harmless since that should soon result in halt.
> >>- */
> >>- vcpu->arch.pv.pv_unhalted = true;
> >>- /* We need everybody see unhalt before vcpu unblocks */
> >>- smp_wmb();
> >>- kvm_vcpu_kick(vcpu);
> >>- }
> >>+ lapic_irq.delivery_mode = APIC_DM_REMRD;
> >Need to make sure that delivery_mode cannot be set to APIC_DM_REMRD
> >from MSI/IOAPIC/IPI path.
>
> I Gleb,
> I need your help here since I do not know much about apic.
>
> so are you saying explicitly checking that, kvm_set_msi_irq,
> apic_send_ipi, native_setup_ioapic_entry, does not have
> APIC_DM_REMRD as delivery_mode set?
>
Yes, but on a second thought what bad can happen if we will not check it?
If guest configures irq to inject APIC_DM_REMRD interrupt this may
needlessly wakeup sleeping vcpu and it will try to accrue spinlock
again, so no correctness problem only performance. If this is the case
lets leave it as it for now.
--
Gleb.
next prev parent reply other threads:[~2013-07-15 15:46 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-24 12:40 [PATCH RFC V10 0/18] Paravirtualized ticket spinlocks Raghavendra K T
2013-06-24 12:40 ` [PATCH RFC V10 1/18] x86/spinlock: Replace pv spinlocks with pv ticketlocks Raghavendra K T
2013-06-24 12:40 ` [PATCH RFC V10 2/18] x86/ticketlock: Don't inline _spin_unlock when using paravirt spinlocks Raghavendra K T
2013-06-24 12:41 ` [PATCH RFC V10 3/18] x86/ticketlock: Collapse a layer of functions Raghavendra K T
2013-06-24 12:41 ` [PATCH RFC V10 4/18] xen: Defer spinlock setup until boot CPU setup Raghavendra K T
2013-06-24 12:41 ` [PATCH RFC V10 5/18] xen/pvticketlock: Xen implementation for PV ticket locks Raghavendra K T
2013-06-24 12:41 ` [PATCH RFC V10 6/18] xen/pvticketlocks: Add xen_nopvspin parameter to disable xen pv ticketlocks Raghavendra K T
2013-06-24 12:42 ` [PATCH RFC V10 7/18] x86/pvticketlock: Use callee-save for lock_spinning Raghavendra K T
2013-06-24 12:42 ` [PATCH RFC V10 8/18] x86/pvticketlock: When paravirtualizing ticket locks, increment by 2 Raghavendra K T
2013-06-24 12:42 ` [PATCH RFC V10 9/18] jump_label: Split out rate limiting from jump_label.h Raghavendra K T
2013-06-24 12:42 ` [PATCH RFC V10 10/18] x86/ticketlock: Add slowpath logic Raghavendra K T
2013-06-24 12:42 ` [PATCH RFC V10 11/18] xen/pvticketlock: Allow interrupts to be enabled while blocking Raghavendra K T
2013-06-24 12:43 ` [PATCH RFC V10 12/18] kvm hypervisor : Add a hypercall to KVM hypervisor to support pv-ticketlocks Raghavendra K T
2013-07-14 13:48 ` Gleb Natapov
2013-07-15 5:53 ` Raghavendra K T
2013-06-24 12:43 ` [PATCH RFC V10 13/18] kvm : Fold pv_unhalt flag into GET_MP_STATE ioctl to aid migration Raghavendra K T
2013-06-24 12:43 ` [PATCH RFC V10 14/18] kvm guest : Add configuration support to enable debug information for KVM Guests Raghavendra K T
2013-06-24 12:43 ` [PATCH RFC V10 15/18] kvm : Paravirtual ticketlocks support for linux guests running on KVM hypervisor Raghavendra K T
2013-07-14 13:12 ` Gleb Natapov
2013-07-15 9:50 ` Raghavendra K T
2013-07-15 10:36 ` Gleb Natapov
2013-07-16 3:37 ` Raghavendra K T
2013-07-16 6:02 ` Gleb Natapov
2013-07-16 15:48 ` Peter Zijlstra
2013-07-16 16:31 ` Gleb Natapov
2013-07-16 18:49 ` Raghavendra K T
2013-07-16 18:42 ` Raghavendra K T
2013-07-17 9:34 ` Gleb Natapov
2013-07-17 10:05 ` Raghavendra K T
2013-07-17 10:38 ` Raghavendra K T
2013-07-17 12:45 ` Gleb Natapov
2013-07-17 12:55 ` Raghavendra K T
2013-07-17 13:25 ` Gleb Natapov
2013-07-17 14:13 ` Raghavendra K T
2013-07-17 14:14 ` Raghavendra K T
2013-07-17 14:44 ` Gleb Natapov
2013-07-17 14:55 ` Raghavendra K T
2013-07-17 15:11 ` Gleb Natapov
2013-07-17 15:22 ` Raghavendra K T
2013-07-17 15:20 ` Raghavendra K T
2013-06-24 12:43 ` [PATCH RFC V10 16/18] kvm hypervisor : Simplify kvm_for_each_vcpu with kvm_irq_delivery_to_apic Raghavendra K T
2013-07-14 13:24 ` Gleb Natapov
2013-07-15 15:36 ` Raghavendra K T
2013-07-15 15:46 ` Gleb Natapov [this message]
2013-07-16 18:19 ` Raghavendra K T
2013-06-24 12:44 ` [PATCH RFC V10 17/18] Documentation/kvm : Add documentation on Hypercalls and features used for PV spinlock Raghavendra K T
2013-06-24 12:44 ` [PATCH RFC V10 18/18] kvm hypervisor: Add directed yield in vcpu block path Raghavendra K T
2013-07-14 14:18 ` Gleb Natapov
2013-07-15 6:04 ` Raghavendra K T
2013-06-24 13:17 ` [PATCH RFC V10 0/18] Paravirtualized ticket spinlocks Andrew Jones
2013-06-24 13:49 ` Raghavendra K T
2013-06-26 8:33 ` Raghavendra K T
2013-06-27 11:47 ` Raghavendra K T
Reply instructions:
You may reply publicly 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=20130715154647.GA19212@redhat.com \
--to=gleb@redhat.com \
--cc=andi@firstfloor.org \
--cc=attilio.rao@citrix.com \
--cc=avi.kivity@gmail.com \
--cc=chegu_vinod@hp.com \
--cc=drjones@redhat.com \
--cc=gregkh@suse.de \
--cc=habanero@linux.vnet.ibm.com \
--cc=hpa@zytor.com \
--cc=jeremy@goop.org \
--cc=konrad.wilk@oracle.com \
--cc=kvm@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=ouyang@cs.pitt.edu \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=raghavendra.kt@linux.vnet.ibm.com \
--cc=riel@redhat.com \
--cc=srivatsa.vaddagiri@gmail.com \
--cc=stefano.stabellini@eu.citrix.com \
--cc=stephan.diestelhorst@amd.com \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=virtualization@lists.linux-foundation.org \
--cc=x86@kernel.org \
--cc=xen-devel@lists.xensource.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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).