All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marc Zyngier <marc.zyngier@arm.com>
To: linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org
Cc: Christoffer Dall <christoffer.dall@linaro.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Jason Cooper <jason@lakedaemon.net>,
	Eric Auger <eric.auger@redhat.com>,
	Shanker Donthineni <shankerd@codeaurora.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Shameerali Kolothum Thodi  <shameerali.kolothum.thodi@huawei.com>
Subject: [PATCH v3 52/59] KVM: arm/arm64: GICv4: Use the doorbell interrupt as an unblocking source
Date: Mon, 31 Jul 2017 18:26:30 +0100	[thread overview]
Message-ID: <20170731172637.29355-53-marc.zyngier@arm.com> (raw)
In-Reply-To: <20170731172637.29355-1-marc.zyngier@arm.com>

The doorbell interrupt is only useful if the vcpu is blocked on WFI.
In all other cases, recieving a doorbell interrupt is just a waste
of cycles.

So let's only enable the doorbell if a vcpu is getting blocked,
and disable it when it is unblocked. This is very similar to
what we're doing for the background timer.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 include/kvm/arm_vgic.h      |  3 +++
 virt/kvm/arm/arm.c          |  2 ++
 virt/kvm/arm/vgic/vgic-v4.c | 32 +++++++++++++++++++++++++++++++-
 3 files changed, 36 insertions(+), 1 deletion(-)

diff --git a/include/kvm/arm_vgic.h b/include/kvm/arm_vgic.h
index 050f78d4fb42..7b1cc7ff5b42 100644
--- a/include/kvm/arm_vgic.h
+++ b/include/kvm/arm_vgic.h
@@ -375,4 +375,7 @@ int kvm_vgic_v4_set_forwarding(struct kvm *kvm, int irq,
 int kvm_vgic_v4_unset_forwarding(struct kvm *kvm, int irq,
 				 struct kvm_kernel_irq_routing_entry *irq_entry);
 
+void kvm_vgic_v4_enable_doorbell(struct kvm_vcpu *vcpu);
+void kvm_vgic_v4_disable_doorbell(struct kvm_vcpu *vcpu);
+
 #endif /* __KVM_ARM_VGIC_H */
diff --git a/virt/kvm/arm/arm.c b/virt/kvm/arm/arm.c
index 6803ea27c47d..5dbc8dc8fbf4 100644
--- a/virt/kvm/arm/arm.c
+++ b/virt/kvm/arm/arm.c
@@ -316,11 +316,13 @@ int kvm_cpu_has_pending_timer(struct kvm_vcpu *vcpu)
 void kvm_arch_vcpu_blocking(struct kvm_vcpu *vcpu)
 {
 	kvm_timer_schedule(vcpu);
+	kvm_vgic_v4_enable_doorbell(vcpu);
 }
 
 void kvm_arch_vcpu_unblocking(struct kvm_vcpu *vcpu)
 {
 	kvm_timer_unschedule(vcpu);
+	kvm_vgic_v4_disable_doorbell(vcpu);
 }
 
 int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu)
diff --git a/virt/kvm/arm/vgic/vgic-v4.c b/virt/kvm/arm/vgic/vgic-v4.c
index 6af3cde6d7d4..50721c4e3da5 100644
--- a/virt/kvm/arm/vgic/vgic-v4.c
+++ b/virt/kvm/arm/vgic/vgic-v4.c
@@ -16,6 +16,7 @@
  */
 
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/irqdomain.h>
 #include <linux/kvm_host.h>
 
@@ -73,6 +74,14 @@ int vgic_v4_init(struct kvm *kvm)
 	kvm_for_each_vcpu(i, vcpu, kvm) {
 		int irq = dist->its_vm.vpes[i]->irq;
 
+		/*
+		 * Don't automatically enable the doorbell, as we're
+		 * flipping it back and forth when the vcpu gets
+		 * blocked. Also disable the lazy disabling, as the
+		 * doorbell could kick us out of the guest too
+		 * early...
+		 */
+		irq_set_status_flags(irq, IRQ_NOAUTOEN | IRQ_DISABLE_UNLAZY);
 		ret = request_irq(irq, vgic_v4_doorbell_handler,
 				  0, "vcpu", vcpu);
 		if (ret) {
@@ -98,7 +107,10 @@ void vgic_v4_teardown(struct kvm *kvm)
 
 	for (i = 0; i < its_vm->nr_vpes; i++) {
 		struct kvm_vcpu *vcpu = kvm_get_vcpu(kvm, i);
-		free_irq(its_vm->vpes[i]->irq, vcpu);
+		int irq = its_vm->vpes[i]->irq;
+
+		irq_clear_status_flags(irq, IRQ_NOAUTOEN | IRQ_DISABLE_UNLAZY);
+		free_irq(irq, vcpu);
 	}
 
 	its_free_vcpu_irqs(its_vm);
@@ -211,3 +223,21 @@ int kvm_vgic_v4_unset_forwarding(struct kvm *kvm, int virq,
 	mutex_unlock(&its->its_lock);
 	return ret;
 }
+
+void kvm_vgic_v4_enable_doorbell(struct kvm_vcpu *vcpu)
+{
+	if (vgic_is_v4_capable(vcpu->kvm)) {
+		int irq = vcpu->arch.vgic_cpu.vgic_v3.its_vpe.irq;
+		if (irq)
+			enable_irq(irq);
+	}
+}
+
+void kvm_vgic_v4_disable_doorbell(struct kvm_vcpu *vcpu)
+{
+	if (vgic_is_v4_capable(vcpu->kvm)) {
+		int irq = vcpu->arch.vgic_cpu.vgic_v3.its_vpe.irq;
+		if (irq)
+			disable_irq(irq);
+	}
+}
-- 
2.11.0

WARNING: multiple messages have this Message-ID (diff)
From: Marc Zyngier <marc.zyngier@arm.com>
To: linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org
Cc: Jason Cooper <jason@lakedaemon.net>,
	Thomas Gleixner <tglx@linutronix.de>
Subject: [PATCH v3 52/59] KVM: arm/arm64: GICv4: Use the doorbell interrupt as an unblocking source
Date: Mon, 31 Jul 2017 18:26:30 +0100	[thread overview]
Message-ID: <20170731172637.29355-53-marc.zyngier@arm.com> (raw)
In-Reply-To: <20170731172637.29355-1-marc.zyngier@arm.com>

The doorbell interrupt is only useful if the vcpu is blocked on WFI.
In all other cases, recieving a doorbell interrupt is just a waste
of cycles.

So let's only enable the doorbell if a vcpu is getting blocked,
and disable it when it is unblocked. This is very similar to
what we're doing for the background timer.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 include/kvm/arm_vgic.h      |  3 +++
 virt/kvm/arm/arm.c          |  2 ++
 virt/kvm/arm/vgic/vgic-v4.c | 32 +++++++++++++++++++++++++++++++-
 3 files changed, 36 insertions(+), 1 deletion(-)

diff --git a/include/kvm/arm_vgic.h b/include/kvm/arm_vgic.h
index 050f78d4fb42..7b1cc7ff5b42 100644
--- a/include/kvm/arm_vgic.h
+++ b/include/kvm/arm_vgic.h
@@ -375,4 +375,7 @@ int kvm_vgic_v4_set_forwarding(struct kvm *kvm, int irq,
 int kvm_vgic_v4_unset_forwarding(struct kvm *kvm, int irq,
 				 struct kvm_kernel_irq_routing_entry *irq_entry);
 
+void kvm_vgic_v4_enable_doorbell(struct kvm_vcpu *vcpu);
+void kvm_vgic_v4_disable_doorbell(struct kvm_vcpu *vcpu);
+
 #endif /* __KVM_ARM_VGIC_H */
diff --git a/virt/kvm/arm/arm.c b/virt/kvm/arm/arm.c
index 6803ea27c47d..5dbc8dc8fbf4 100644
--- a/virt/kvm/arm/arm.c
+++ b/virt/kvm/arm/arm.c
@@ -316,11 +316,13 @@ int kvm_cpu_has_pending_timer(struct kvm_vcpu *vcpu)
 void kvm_arch_vcpu_blocking(struct kvm_vcpu *vcpu)
 {
 	kvm_timer_schedule(vcpu);
+	kvm_vgic_v4_enable_doorbell(vcpu);
 }
 
 void kvm_arch_vcpu_unblocking(struct kvm_vcpu *vcpu)
 {
 	kvm_timer_unschedule(vcpu);
+	kvm_vgic_v4_disable_doorbell(vcpu);
 }
 
 int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu)
diff --git a/virt/kvm/arm/vgic/vgic-v4.c b/virt/kvm/arm/vgic/vgic-v4.c
index 6af3cde6d7d4..50721c4e3da5 100644
--- a/virt/kvm/arm/vgic/vgic-v4.c
+++ b/virt/kvm/arm/vgic/vgic-v4.c
@@ -16,6 +16,7 @@
  */
 
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/irqdomain.h>
 #include <linux/kvm_host.h>
 
@@ -73,6 +74,14 @@ int vgic_v4_init(struct kvm *kvm)
 	kvm_for_each_vcpu(i, vcpu, kvm) {
 		int irq = dist->its_vm.vpes[i]->irq;
 
+		/*
+		 * Don't automatically enable the doorbell, as we're
+		 * flipping it back and forth when the vcpu gets
+		 * blocked. Also disable the lazy disabling, as the
+		 * doorbell could kick us out of the guest too
+		 * early...
+		 */
+		irq_set_status_flags(irq, IRQ_NOAUTOEN | IRQ_DISABLE_UNLAZY);
 		ret = request_irq(irq, vgic_v4_doorbell_handler,
 				  0, "vcpu", vcpu);
 		if (ret) {
@@ -98,7 +107,10 @@ void vgic_v4_teardown(struct kvm *kvm)
 
 	for (i = 0; i < its_vm->nr_vpes; i++) {
 		struct kvm_vcpu *vcpu = kvm_get_vcpu(kvm, i);
-		free_irq(its_vm->vpes[i]->irq, vcpu);
+		int irq = its_vm->vpes[i]->irq;
+
+		irq_clear_status_flags(irq, IRQ_NOAUTOEN | IRQ_DISABLE_UNLAZY);
+		free_irq(irq, vcpu);
 	}
 
 	its_free_vcpu_irqs(its_vm);
@@ -211,3 +223,21 @@ int kvm_vgic_v4_unset_forwarding(struct kvm *kvm, int virq,
 	mutex_unlock(&its->its_lock);
 	return ret;
 }
+
+void kvm_vgic_v4_enable_doorbell(struct kvm_vcpu *vcpu)
+{
+	if (vgic_is_v4_capable(vcpu->kvm)) {
+		int irq = vcpu->arch.vgic_cpu.vgic_v3.its_vpe.irq;
+		if (irq)
+			enable_irq(irq);
+	}
+}
+
+void kvm_vgic_v4_disable_doorbell(struct kvm_vcpu *vcpu)
+{
+	if (vgic_is_v4_capable(vcpu->kvm)) {
+		int irq = vcpu->arch.vgic_cpu.vgic_v3.its_vpe.irq;
+		if (irq)
+			disable_irq(irq);
+	}
+}
-- 
2.11.0

WARNING: multiple messages have this Message-ID (diff)
From: marc.zyngier@arm.com (Marc Zyngier)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 52/59] KVM: arm/arm64: GICv4: Use the doorbell interrupt as an unblocking source
Date: Mon, 31 Jul 2017 18:26:30 +0100	[thread overview]
Message-ID: <20170731172637.29355-53-marc.zyngier@arm.com> (raw)
In-Reply-To: <20170731172637.29355-1-marc.zyngier@arm.com>

The doorbell interrupt is only useful if the vcpu is blocked on WFI.
In all other cases, recieving a doorbell interrupt is just a waste
of cycles.

So let's only enable the doorbell if a vcpu is getting blocked,
and disable it when it is unblocked. This is very similar to
what we're doing for the background timer.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 include/kvm/arm_vgic.h      |  3 +++
 virt/kvm/arm/arm.c          |  2 ++
 virt/kvm/arm/vgic/vgic-v4.c | 32 +++++++++++++++++++++++++++++++-
 3 files changed, 36 insertions(+), 1 deletion(-)

diff --git a/include/kvm/arm_vgic.h b/include/kvm/arm_vgic.h
index 050f78d4fb42..7b1cc7ff5b42 100644
--- a/include/kvm/arm_vgic.h
+++ b/include/kvm/arm_vgic.h
@@ -375,4 +375,7 @@ int kvm_vgic_v4_set_forwarding(struct kvm *kvm, int irq,
 int kvm_vgic_v4_unset_forwarding(struct kvm *kvm, int irq,
 				 struct kvm_kernel_irq_routing_entry *irq_entry);
 
+void kvm_vgic_v4_enable_doorbell(struct kvm_vcpu *vcpu);
+void kvm_vgic_v4_disable_doorbell(struct kvm_vcpu *vcpu);
+
 #endif /* __KVM_ARM_VGIC_H */
diff --git a/virt/kvm/arm/arm.c b/virt/kvm/arm/arm.c
index 6803ea27c47d..5dbc8dc8fbf4 100644
--- a/virt/kvm/arm/arm.c
+++ b/virt/kvm/arm/arm.c
@@ -316,11 +316,13 @@ int kvm_cpu_has_pending_timer(struct kvm_vcpu *vcpu)
 void kvm_arch_vcpu_blocking(struct kvm_vcpu *vcpu)
 {
 	kvm_timer_schedule(vcpu);
+	kvm_vgic_v4_enable_doorbell(vcpu);
 }
 
 void kvm_arch_vcpu_unblocking(struct kvm_vcpu *vcpu)
 {
 	kvm_timer_unschedule(vcpu);
+	kvm_vgic_v4_disable_doorbell(vcpu);
 }
 
 int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu)
diff --git a/virt/kvm/arm/vgic/vgic-v4.c b/virt/kvm/arm/vgic/vgic-v4.c
index 6af3cde6d7d4..50721c4e3da5 100644
--- a/virt/kvm/arm/vgic/vgic-v4.c
+++ b/virt/kvm/arm/vgic/vgic-v4.c
@@ -16,6 +16,7 @@
  */
 
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/irqdomain.h>
 #include <linux/kvm_host.h>
 
@@ -73,6 +74,14 @@ int vgic_v4_init(struct kvm *kvm)
 	kvm_for_each_vcpu(i, vcpu, kvm) {
 		int irq = dist->its_vm.vpes[i]->irq;
 
+		/*
+		 * Don't automatically enable the doorbell, as we're
+		 * flipping it back and forth when the vcpu gets
+		 * blocked. Also disable the lazy disabling, as the
+		 * doorbell could kick us out of the guest too
+		 * early...
+		 */
+		irq_set_status_flags(irq, IRQ_NOAUTOEN | IRQ_DISABLE_UNLAZY);
 		ret = request_irq(irq, vgic_v4_doorbell_handler,
 				  0, "vcpu", vcpu);
 		if (ret) {
@@ -98,7 +107,10 @@ void vgic_v4_teardown(struct kvm *kvm)
 
 	for (i = 0; i < its_vm->nr_vpes; i++) {
 		struct kvm_vcpu *vcpu = kvm_get_vcpu(kvm, i);
-		free_irq(its_vm->vpes[i]->irq, vcpu);
+		int irq = its_vm->vpes[i]->irq;
+
+		irq_clear_status_flags(irq, IRQ_NOAUTOEN | IRQ_DISABLE_UNLAZY);
+		free_irq(irq, vcpu);
 	}
 
 	its_free_vcpu_irqs(its_vm);
@@ -211,3 +223,21 @@ int kvm_vgic_v4_unset_forwarding(struct kvm *kvm, int virq,
 	mutex_unlock(&its->its_lock);
 	return ret;
 }
+
+void kvm_vgic_v4_enable_doorbell(struct kvm_vcpu *vcpu)
+{
+	if (vgic_is_v4_capable(vcpu->kvm)) {
+		int irq = vcpu->arch.vgic_cpu.vgic_v3.its_vpe.irq;
+		if (irq)
+			enable_irq(irq);
+	}
+}
+
+void kvm_vgic_v4_disable_doorbell(struct kvm_vcpu *vcpu)
+{
+	if (vgic_is_v4_capable(vcpu->kvm)) {
+		int irq = vcpu->arch.vgic_cpu.vgic_v3.its_vpe.irq;
+		if (irq)
+			disable_irq(irq);
+	}
+}
-- 
2.11.0

  parent reply	other threads:[~2017-07-31 17:30 UTC|newest]

Thread overview: 354+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-31 17:25 [PATCH v3 00/59] irqchip: KVM: Add support for GICv4 Marc Zyngier
2017-07-31 17:25 ` Marc Zyngier
2017-07-31 17:25 ` Marc Zyngier
2017-07-31 17:25 ` [PATCH v3 01/59] genirq: Let irq_set_vcpu_affinity() iterate over hierarchy Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25 ` [PATCH v3 02/59] irqchip/gic-v3: Add redistributor iterator Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25 ` [PATCH v3 03/59] irqchip/gic-v3: Add VLPI/DirectLPI discovery Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25 ` [PATCH v3 04/59] irqchip/gic-v3-its: Move LPI definitions around Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25 ` [PATCH v3 05/59] irqchip/gic-v3-its: Add probing for VLPI properties Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25 ` [PATCH v3 06/59] irqchip/gic-v3-its: Macro-ize its_send_single_command Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25 ` [PATCH v3 07/59] irqchip/gic-v3-its: Implement irq_set_irqchip_state for pending state Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25 ` [PATCH v3 08/59] irqchip/gic-v3-its: Split out property table allocation Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25 ` [PATCH v3 09/59] irqchip/gic-v3-its: Allow use of indirect VCPU tables Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25 ` [PATCH v3 10/59] irqchip/gic-v3-its: Split out pending table allocation Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25 ` [PATCH v3 11/59] irqchip/gic-v3-its: Rework LPI freeing Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25 ` [PATCH v3 12/59] irqchip/gic-v3-its: Generalize device table allocation Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25 ` [PATCH v3 13/59] irqchip/gic-v3-its: Generalize LPI configuration Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25 ` [PATCH v3 14/59] irqchip/gic-v4: Add management structure definitions Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25 ` [PATCH v3 15/59] irqchip/gic-v3-its: Add GICv4 ITS command definitions Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25 ` [PATCH v3 16/59] irqchip/gic-v3-its: Add VLPI configuration hook Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25 ` [PATCH v3 17/59] irqchip/gic-v3-its: Add VLPI map/unmap operations Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25 ` [PATCH v3 18/59] irqchip/gic-v3-its: Add VLPI configuration handling Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25 ` [PATCH v3 19/59] irqchip/gic-v3-its: Add VPE domain infrastructure Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25 ` [PATCH v3 20/59] irqchip/gic-v3-its: Add VPE irq domain allocation/teardown Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25 ` [PATCH v3 21/59] irqchip/gic-v3-its: Add VPE irq domain [de]activation Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:25   ` Marc Zyngier
2017-07-31 17:26 ` [PATCH v3 22/59] irqchip/gic-v3-its: Add VPENDBASER/VPROPBASER accessors Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26 ` [PATCH v3 23/59] irqchip/gic-v3-its: Add VPE scheduling Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26 ` [PATCH v3 24/59] irqchip/gic-v3-its: Add VPE invalidation hook Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26 ` [PATCH v3 25/59] irqchip/gic-v3-its: Add VPE affinity changes Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26 ` [PATCH v3 26/59] irqchip/gic-v3-its: Add VPE interrupt masking Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26 ` [PATCH v3 27/59] irqchip/gic-v3-its: Support VPE doorbell invalidation even when !DirectLPI Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26 ` [PATCH v3 28/59] irqchip/gic-v3-its: Allow doorbell interrupts to be injected/cleared Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26 ` [PATCH v3 29/59] irqchip/gic-v3-its: Set implementation defined bit to enable VLPIs Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26 ` [PATCH v3 30/59] irqchip/gic-v4: Add per-VM VPE domain creation Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26 ` [PATCH v3 31/59] irqchip/gic-v4: Add VPE command interface Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26 ` [PATCH v3 32/59] irqchip/gic-v4: Add VLPI configuration interface Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26 ` [PATCH v3 33/59] irqchip/gic-v4: Add some basic documentation Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26 ` [PATCH v3 34/59] irqchip/gic-v4: Enable low-level GICv4 operations Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26 ` [PATCH v3 35/59] irqchip/gic-v3: Advertise GICv4 support to KVM Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26 ` [PATCH v3 36/59] KVM: arm: Select ARM_GIC_V3 and ARM_GIC_V3_ITS Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-08-26 19:49   ` Christoffer Dall
2017-08-26 19:49     ` Christoffer Dall
2017-08-26 19:49     ` Christoffer Dall
2017-07-31 17:26 ` [PATCH v3 37/59] KVM: arm/arm64: vgic: Move kvm_vgic_destroy call around Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-08-26 19:49   ` Christoffer Dall
2017-08-26 19:49     ` Christoffer Dall
2017-08-26 19:49     ` Christoffer Dall
2017-07-31 17:26 ` [PATCH v3 38/59] KVM: arm/arm64: vITS: Add MSI translation helpers Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-08-26 19:49   ` Christoffer Dall
2017-08-26 19:49     ` Christoffer Dall
2017-08-26 19:49     ` Christoffer Dall
2017-07-31 17:26 ` [PATCH v3 39/59] KVM: arm/arm64: GICv4: Add property field and per-VM predicate Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-08-26 19:49   ` Christoffer Dall
2017-08-26 19:49     ` Christoffer Dall
2017-08-26 19:49     ` Christoffer Dall
2017-08-30  9:46     ` Marc Zyngier
2017-08-30  9:46       ` Marc Zyngier
2017-08-30  9:46       ` Marc Zyngier
2017-07-31 17:26 ` [PATCH v3 40/59] KVM: arm/arm64: GICv4: Add init/teardown of the per-VM vPE irq domain Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-08-26 19:49   ` Christoffer Dall
2017-08-26 19:49     ` Christoffer Dall
2017-08-26 19:49     ` Christoffer Dall
2017-08-30  9:50     ` Marc Zyngier
2017-08-30  9:50       ` Marc Zyngier
2017-08-30  9:50       ` Marc Zyngier
2017-07-31 17:26 ` [PATCH v3 41/59] KVM: arm/arm64: GICv4: Wire mapping/unmapping of VLPIs in VFIO irq bypass Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-08-26 19:48   ` Christoffer Dall
2017-08-26 19:48     ` Christoffer Dall
2017-08-26 19:48     ` Christoffer Dall
2017-08-30  9:42     ` Marc Zyngier
2017-08-30  9:42       ` Marc Zyngier
2017-08-30  9:42       ` Marc Zyngier
2017-08-30 10:20       ` Auger Eric
2017-08-30 10:20         ` Auger Eric
2017-08-30 10:20         ` Auger Eric
2017-08-30 10:42         ` Marc Zyngier
2017-08-30 10:42           ` Marc Zyngier
2017-08-30 10:42           ` Marc Zyngier
2017-08-30 12:54           ` Auger Eric
2017-08-30 12:54             ` Auger Eric
2017-08-30 12:54             ` Auger Eric
2017-08-30 10:28     ` Marc Zyngier
2017-08-30 10:28       ` Marc Zyngier
2017-08-30 10:28       ` Marc Zyngier
2017-08-30 11:46       ` Christoffer Dall
2017-08-30 11:46         ` Christoffer Dall
2017-08-30 11:46         ` Christoffer Dall
2017-08-30 12:53         ` Marc Zyngier
2017-08-30 12:53           ` Marc Zyngier
2017-08-30 12:53           ` Marc Zyngier
2017-08-30 19:59           ` Christoffer Dall
2017-08-30 19:59             ` Christoffer Dall
2017-08-30 19:59             ` Christoffer Dall
2017-08-31 10:24             ` Marc Zyngier
2017-08-31 10:24               ` Marc Zyngier
2017-08-31 10:24               ` Marc Zyngier
2017-08-31 12:36               ` Christoffer Dall
2017-08-31 12:36                 ` Christoffer Dall
2017-08-31 12:36                 ` Christoffer Dall
2017-07-31 17:26 ` [PATCH v3 42/59] KVM: arm/arm64: GICv4: Handle INT command applied to a VLPI Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-08-28 18:18   ` Christoffer Dall
2017-08-28 18:18     ` Christoffer Dall
2017-08-28 18:18     ` Christoffer Dall
2017-07-31 17:26 ` [PATCH v3 43/59] KVM: arm/arm64: GICv4: Unmap VLPI when freeing an LPI Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-08-28 18:18   ` Christoffer Dall
2017-08-28 18:18     ` Christoffer Dall
2017-08-28 18:18     ` Christoffer Dall
2017-08-30 11:03     ` Marc Zyngier
2017-08-30 11:03       ` Marc Zyngier
2017-08-30 11:03       ` Marc Zyngier
2017-07-31 17:26 ` [PATCH v3 44/59] KVM: arm/arm64: GICv4: Handle MOVI applied to a VLPI Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-08-28 18:18   ` Christoffer Dall
2017-08-28 18:18     ` Christoffer Dall
2017-08-28 18:18     ` Christoffer Dall
2017-08-30 14:08     ` Marc Zyngier
2017-08-30 14:08       ` Marc Zyngier
2017-08-30 14:08       ` Marc Zyngier
2017-08-30 20:04       ` Christoffer Dall
2017-08-30 20:04         ` Christoffer Dall
2017-08-30 20:04         ` Christoffer Dall
2017-07-31 17:26 ` [PATCH v3 45/59] KVM: arm/arm64: GICv4: Handle CLEAR " Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-08-28 18:18   ` Christoffer Dall
2017-08-28 18:18     ` Christoffer Dall
2017-08-28 18:18     ` Christoffer Dall
2017-07-31 17:26 ` [PATCH v3 46/59] KVM: arm/arm64: GICv4: Handle MOVALL applied to a vPE Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-08-28 18:18   ` Christoffer Dall
2017-08-28 18:18     ` Christoffer Dall
2017-08-28 18:18     ` Christoffer Dall
2017-08-30 14:46     ` Marc Zyngier
2017-08-30 14:46       ` Marc Zyngier
2017-08-30 14:46       ` Marc Zyngier
2017-08-30 20:10       ` Christoffer Dall
2017-08-30 20:10         ` Christoffer Dall
2017-08-30 20:10         ` Christoffer Dall
2017-07-31 17:26 ` [PATCH v3 47/59] KVM: arm/arm64: GICv4: Propagate property updates to VLPIs Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-08-28 18:18   ` Christoffer Dall
2017-08-28 18:18     ` Christoffer Dall
2017-08-28 18:18     ` Christoffer Dall
2017-07-31 17:26 ` [PATCH v3 48/59] KVM: arm/arm64: GICv4: Handle INVALL applied to a vPE Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-08-28 18:18   ` Christoffer Dall
2017-08-28 18:18     ` Christoffer Dall
2017-08-28 18:18     ` Christoffer Dall
2017-07-31 17:26 ` [PATCH v3 49/59] KVM: arm/arm64: GICv4: Propagate VLPI properties at map time Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-08-28 18:18   ` Christoffer Dall
2017-08-28 18:18     ` Christoffer Dall
2017-08-28 18:18     ` Christoffer Dall
2017-08-30 14:56     ` Marc Zyngier
2017-08-30 14:56       ` Marc Zyngier
2017-08-30 14:56       ` Marc Zyngier
2017-08-30 20:12       ` Christoffer Dall
2017-08-30 20:12         ` Christoffer Dall
2017-08-30 20:12         ` Christoffer Dall
2017-07-31 17:26 ` [PATCH v3 50/59] KVM: arm/arm64: GICv4: Use pending_last as a scheduling hint Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-08-28 18:18   ` Christoffer Dall
2017-08-28 18:18     ` Christoffer Dall
2017-08-28 18:18     ` Christoffer Dall
2017-07-31 17:26 ` [PATCH v3 51/59] KVM: arm/arm64: GICv4: Add doorbell interrupt handling Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-08-04  7:44   ` Marc Zyngier
2017-08-04  7:44     ` Marc Zyngier
2017-08-04  7:44     ` Marc Zyngier
2017-08-28 18:18     ` Christoffer Dall
2017-08-28 18:18       ` Christoffer Dall
2017-08-28 18:18       ` Christoffer Dall
2017-08-30 10:31       ` Andrew Jones
2017-08-30 10:31         ` Andrew Jones
2017-08-30 10:31         ` Andrew Jones
2017-08-30 11:55         ` Christoffer Dall
2017-08-30 11:55           ` Christoffer Dall
2017-08-30 11:55           ` Christoffer Dall
2017-08-30 12:28           ` Andrew Jones
2017-08-30 12:28             ` Andrew Jones
2017-08-30 12:28             ` Andrew Jones
2017-08-31 12:18       ` Marc Zyngier
2017-08-31 12:18         ` Marc Zyngier
2017-08-31 12:18         ` Marc Zyngier
2017-08-31 12:41         ` Christoffer Dall
2017-08-31 12:41           ` Christoffer Dall
2017-08-31 12:41           ` Christoffer Dall
2017-08-28 18:18   ` Christoffer Dall
2017-08-28 18:18     ` Christoffer Dall
2017-08-28 18:18     ` Christoffer Dall
2017-08-30 15:36     ` Marc Zyngier
2017-08-30 15:36       ` Marc Zyngier
2017-08-30 15:36       ` Marc Zyngier
2017-08-30 20:58       ` Christoffer Dall
2017-08-30 20:58         ` Christoffer Dall
2017-08-30 20:58         ` Christoffer Dall
2017-08-31  8:19         ` Marc Zyngier
2017-08-31  8:19           ` Marc Zyngier
2017-08-31  8:19           ` Marc Zyngier
2017-09-06  9:06   ` Shannon Zhao
2017-09-06  9:06     ` Shannon Zhao
2017-09-06  9:06     ` Shannon Zhao
2017-07-31 17:26 ` Marc Zyngier [this message]
2017-07-31 17:26   ` [PATCH v3 52/59] KVM: arm/arm64: GICv4: Use the doorbell interrupt as an unblocking source Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-08-28 18:19   ` Christoffer Dall
2017-08-28 18:19     ` Christoffer Dall
2017-08-28 18:19     ` Christoffer Dall
2017-07-31 17:26 ` [PATCH v3 53/59] KVM: arm/arm64: GICv4: Hook vPE scheduling into vgic flush/sync Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-08-28 18:17   ` Christoffer Dall
2017-08-28 18:17     ` Christoffer Dall
2017-08-28 18:17     ` Christoffer Dall
2017-08-30  9:59     ` Marc Zyngier
2017-08-30  9:59       ` Marc Zyngier
2017-08-30  9:59       ` Marc Zyngier
2017-08-30 11:56       ` Christoffer Dall
2017-08-30 11:56         ` Christoffer Dall
2017-08-30 11:56         ` Christoffer Dall
2017-07-31 17:26 ` [PATCH v3 54/59] KVM: arm/arm64: GICv4: Enable virtual cpuif if VLPIs can be delivered Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-08-28 18:20   ` Christoffer Dall
2017-08-28 18:20     ` Christoffer Dall
2017-08-28 18:20     ` Christoffer Dall
2017-07-31 17:26 ` [PATCH v3 55/59] KVM: arm/arm64: GICv4: Enable VLPI support Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-08-28 18:25   ` Christoffer Dall
2017-08-28 18:25     ` Christoffer Dall
2017-08-28 18:25     ` Christoffer Dall
2017-07-31 17:26 ` [PATCH v3 56/59] KVM: arm/arm64: GICv4: Prevent heterogenous systems from using GICv4 Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-08-28 18:35   ` Christoffer Dall
2017-08-28 18:35     ` Christoffer Dall
2017-08-28 18:35     ` Christoffer Dall
2017-08-30 16:03     ` Marc Zyngier
2017-08-30 16:03       ` Marc Zyngier
2017-08-30 16:03       ` Marc Zyngier
2017-08-30 21:00       ` Christoffer Dall
2017-08-30 21:00         ` Christoffer Dall
2017-08-30 21:00         ` Christoffer Dall
2017-07-31 17:26 ` [PATCH v3 57/59] KVM: arm/arm64: GICv4: Theory of operations Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-08-28 18:18   ` Christoffer Dall
2017-08-28 18:18     ` Christoffer Dall
2017-08-28 18:18     ` Christoffer Dall
2017-08-30 11:30     ` Marc Zyngier
2017-08-30 11:30       ` Marc Zyngier
2017-08-30 11:30       ` Marc Zyngier
2017-08-30 11:58       ` Christoffer Dall
2017-08-30 11:58         ` Christoffer Dall
2017-08-30 11:58         ` Christoffer Dall
2017-07-31 17:26 ` [PATCH v3 58/59] irqchip/gic-v3-its: Pass its_node pointer to each command bulder Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26 ` [PATCH v3 59/59] irqchip/gic-v3-its: Workaround Huawei D05 redistributor addressing Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier
2017-07-31 17:26   ` Marc Zyngier

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=20170731172637.29355-53-marc.zyngier@arm.com \
    --to=marc.zyngier@arm.com \
    --cc=christoffer.dall@linaro.org \
    --cc=eric.auger@redhat.com \
    --cc=jason@lakedaemon.net \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=shameerali.kolothum.thodi@huawei.com \
    --cc=shankerd@codeaurora.org \
    --cc=tglx@linutronix.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.