* [PATCH-for-4.12 0/4] VT-d PI: fix nested and race condition
@ 2017-09-27 3:21 Haozhong Zhang
2017-09-27 3:21 ` [PATCH-for-4.12 1/4] x86: irq: Define a global vector for nested posted interrupts Haozhong Zhang
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Haozhong Zhang @ 2017-09-27 3:21 UTC (permalink / raw)
To: stable
Cc: Haozhong Zhang, Paolo Bonzini, Radim Krčmář,
Ramamurthy, Venkatesh, Dan Williams, Wincy Van
All patches are from Linus tree. The commit IDs are recorded in each
patch.
Patch 1 & 2 fix the mis-delivery of non-nested VT-d PI in the nested VMX
environment [1].
Patch 3 & 4 fix a race condition in VT-d PI handling [2].
[1] https://www.spinics.net/lists/kvm/msg149007.html
[2] https://www.spinics.net/lists/kvm/msg155650.html
Wincy Van (2):
x86: irq: Define a global vector for nested posted interrupts
KVM: nVMX: Fix posted intr delivery when vcpu is in guest mode
Haozhong Zhang (2):
KVM: VMX: do not change SN bit in vmx_update_pi_irte()
KVM: VMX: remove WARN_ON_ONCE in kvm_vcpu_trigger_posted_interrupt
arch/x86/entry/entry_64.S | 1 +
arch/x86/include/asm/entry_arch.h | 2 ++
arch/x86/include/asm/hardirq.h | 1 +
arch/x86/include/asm/hw_irq.h | 2 ++
arch/x86/include/asm/irq_vectors.h | 3 +-
arch/x86/kernel/irq.c | 19 ++++++++++++
arch/x86/kernel/irqinit.c | 2 ++
arch/x86/kvm/vmx.c | 61 +++++++++++++++++++++-----------------
8 files changed, 62 insertions(+), 29 deletions(-)
--
2.11.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH-for-4.12 1/4] x86: irq: Define a global vector for nested posted interrupts
2017-09-27 3:21 [PATCH-for-4.12 0/4] VT-d PI: fix nested and race condition Haozhong Zhang
@ 2017-09-27 3:21 ` Haozhong Zhang
2017-09-27 3:21 ` [PATCH-for-4.12 2/4] KVM: nVMX: Fix posted intr delivery when vcpu is in guest mode Haozhong Zhang
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Haozhong Zhang @ 2017-09-27 3:21 UTC (permalink / raw)
To: stable; +Cc: Wincy Van, Paolo Bonzini, Radim Krčmář
From: Wincy Van <fanwenyi0529@gmail.com>
commit 210f84b0ca7743f3b2a9acfae81df668dbbb6a12 upstream.
We are using the same vector for nested/non-nested posted
interrupts delivery, this may cause interrupts latency in
L1 since we can't kick the L2 vcpu out of vmx-nonroot mode.
This patch introduces a new vector which is only for nested
posted interrupts to solve the problems above.
Signed-off-by: Wincy Van <fanwenyi0529@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
arch/x86/entry/entry_64.S | 1 +
arch/x86/include/asm/entry_arch.h | 2 ++
arch/x86/include/asm/hardirq.h | 1 +
arch/x86/include/asm/hw_irq.h | 2 ++
arch/x86/include/asm/irq_vectors.h | 3 ++-
arch/x86/kernel/irq.c | 19 +++++++++++++++++++
arch/x86/kernel/irqinit.c | 2 ++
7 files changed, 29 insertions(+), 1 deletion(-)
diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
index 22f2281b942b..61cae041a7bf 100644
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
@@ -704,6 +704,7 @@ apicinterrupt X86_PLATFORM_IPI_VECTOR x86_platform_ipi smp_x86_platform_ipi
#ifdef CONFIG_HAVE_KVM
apicinterrupt3 POSTED_INTR_VECTOR kvm_posted_intr_ipi smp_kvm_posted_intr_ipi
apicinterrupt3 POSTED_INTR_WAKEUP_VECTOR kvm_posted_intr_wakeup_ipi smp_kvm_posted_intr_wakeup_ipi
+apicinterrupt3 POSTED_INTR_NESTED_VECTOR kvm_posted_intr_nested_ipi smp_kvm_posted_intr_nested_ipi
#endif
#ifdef CONFIG_X86_MCE_THRESHOLD
diff --git a/arch/x86/include/asm/entry_arch.h b/arch/x86/include/asm/entry_arch.h
index df002992d8fd..07b06955a05d 100644
--- a/arch/x86/include/asm/entry_arch.h
+++ b/arch/x86/include/asm/entry_arch.h
@@ -25,6 +25,8 @@ BUILD_INTERRUPT3(kvm_posted_intr_ipi, POSTED_INTR_VECTOR,
smp_kvm_posted_intr_ipi)
BUILD_INTERRUPT3(kvm_posted_intr_wakeup_ipi, POSTED_INTR_WAKEUP_VECTOR,
smp_kvm_posted_intr_wakeup_ipi)
+BUILD_INTERRUPT3(kvm_posted_intr_nested_ipi, POSTED_INTR_NESTED_VECTOR,
+ smp_kvm_posted_intr_nested_ipi)
#endif
/*
diff --git a/arch/x86/include/asm/hardirq.h b/arch/x86/include/asm/hardirq.h
index 59405a248fc2..3a81b21cb80d 100644
--- a/arch/x86/include/asm/hardirq.h
+++ b/arch/x86/include/asm/hardirq.h
@@ -15,6 +15,7 @@ typedef struct {
#ifdef CONFIG_HAVE_KVM
unsigned int kvm_posted_intr_ipis;
unsigned int kvm_posted_intr_wakeup_ipis;
+ unsigned int kvm_posted_intr_nested_ipis;
#endif
unsigned int x86_platform_ipis; /* arch dependent */
unsigned int apic_perf_irqs;
diff --git a/arch/x86/include/asm/hw_irq.h b/arch/x86/include/asm/hw_irq.h
index b90e1053049b..d6dbafbd4207 100644
--- a/arch/x86/include/asm/hw_irq.h
+++ b/arch/x86/include/asm/hw_irq.h
@@ -30,6 +30,7 @@ extern asmlinkage void apic_timer_interrupt(void);
extern asmlinkage void x86_platform_ipi(void);
extern asmlinkage void kvm_posted_intr_ipi(void);
extern asmlinkage void kvm_posted_intr_wakeup_ipi(void);
+extern asmlinkage void kvm_posted_intr_nested_ipi(void);
extern asmlinkage void error_interrupt(void);
extern asmlinkage void irq_work_interrupt(void);
@@ -62,6 +63,7 @@ extern void trace_call_function_single_interrupt(void);
#define trace_reboot_interrupt reboot_interrupt
#define trace_kvm_posted_intr_ipi kvm_posted_intr_ipi
#define trace_kvm_posted_intr_wakeup_ipi kvm_posted_intr_wakeup_ipi
+#define trace_kvm_posted_intr_nested_ipi kvm_posted_intr_nested_ipi
#endif /* CONFIG_TRACING */
#ifdef CONFIG_X86_LOCAL_APIC
diff --git a/arch/x86/include/asm/irq_vectors.h b/arch/x86/include/asm/irq_vectors.h
index 6ca9fd6234e1..aaf8d28b5d00 100644
--- a/arch/x86/include/asm/irq_vectors.h
+++ b/arch/x86/include/asm/irq_vectors.h
@@ -83,7 +83,6 @@
*/
#define X86_PLATFORM_IPI_VECTOR 0xf7
-#define POSTED_INTR_WAKEUP_VECTOR 0xf1
/*
* IRQ work vector:
*/
@@ -98,6 +97,8 @@
/* Vector for KVM to deliver posted interrupt IPI */
#ifdef CONFIG_HAVE_KVM
#define POSTED_INTR_VECTOR 0xf2
+#define POSTED_INTR_WAKEUP_VECTOR 0xf1
+#define POSTED_INTR_NESTED_VECTOR 0xf0
#endif
/*
diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c
index f34fe7444836..1224cfc11173 100644
--- a/arch/x86/kernel/irq.c
+++ b/arch/x86/kernel/irq.c
@@ -155,6 +155,12 @@ int arch_show_interrupts(struct seq_file *p, int prec)
seq_printf(p, "%10u ", irq_stats(j)->kvm_posted_intr_ipis);
seq_puts(p, " Posted-interrupt notification event\n");
+ seq_printf(p, "%*s: ", prec, "NPI");
+ for_each_online_cpu(j)
+ seq_printf(p, "%10u ",
+ irq_stats(j)->kvm_posted_intr_nested_ipis);
+ seq_puts(p, " Nested posted-interrupt event\n");
+
seq_printf(p, "%*s: ", prec, "PIW");
for_each_online_cpu(j)
seq_printf(p, "%10u ",
@@ -313,6 +319,19 @@ __visible void smp_kvm_posted_intr_wakeup_ipi(struct pt_regs *regs)
exiting_irq();
set_irq_regs(old_regs);
}
+
+/*
+ * Handler for POSTED_INTERRUPT_NESTED_VECTOR.
+ */
+__visible void smp_kvm_posted_intr_nested_ipi(struct pt_regs *regs)
+{
+ struct pt_regs *old_regs = set_irq_regs(regs);
+
+ entering_ack_irq();
+ inc_irq_stat(kvm_posted_intr_nested_ipis);
+ exiting_irq();
+ set_irq_regs(old_regs);
+}
#endif
__visible void __irq_entry smp_trace_x86_platform_ipi(struct pt_regs *regs)
diff --git a/arch/x86/kernel/irqinit.c b/arch/x86/kernel/irqinit.c
index 7468c6987547..c7fd18526c3e 100644
--- a/arch/x86/kernel/irqinit.c
+++ b/arch/x86/kernel/irqinit.c
@@ -150,6 +150,8 @@ static void __init apic_intr_init(void)
alloc_intr_gate(POSTED_INTR_VECTOR, kvm_posted_intr_ipi);
/* IPI for KVM to deliver interrupt to wake up tasks */
alloc_intr_gate(POSTED_INTR_WAKEUP_VECTOR, kvm_posted_intr_wakeup_ipi);
+ /* IPI for KVM to deliver nested posted interrupt */
+ alloc_intr_gate(POSTED_INTR_NESTED_VECTOR, kvm_posted_intr_nested_ipi);
#endif
/* IPI vectors for APIC spurious and error interrupts */
--
2.11.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH-for-4.12 2/4] KVM: nVMX: Fix posted intr delivery when vcpu is in guest mode
2017-09-27 3:21 [PATCH-for-4.12 0/4] VT-d PI: fix nested and race condition Haozhong Zhang
2017-09-27 3:21 ` [PATCH-for-4.12 1/4] x86: irq: Define a global vector for nested posted interrupts Haozhong Zhang
@ 2017-09-27 3:21 ` Haozhong Zhang
2017-09-27 3:21 ` [PATCH-for-4.12 3/4] KVM: VMX: do not change SN bit in vmx_update_pi_irte() Haozhong Zhang
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Haozhong Zhang @ 2017-09-27 3:21 UTC (permalink / raw)
To: stable; +Cc: Wincy Van, Paolo Bonzini, Radim Krčmář
From: Wincy Van <fanwenyi0529@gmail.com>
commit 06a5524f091b6b41b0007810c74cc9315923a145 upstream.
The PI vector for L0 and L1 must be different. If dest vcpu0
is in guest mode while vcpu1 is delivering a non-nested PI to
vcpu0, there wont't be any vmexit so that the non-nested interrupt
will be delayed.
Signed-off-by: Wincy Van <fanwenyi0529@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
arch/x86/kvm/vmx.c | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 2461e1a53f8c..91c9b832e073 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -4925,9 +4925,12 @@ static void vmx_complete_nested_posted_interrupt(struct kvm_vcpu *vcpu)
}
}
-static inline bool kvm_vcpu_trigger_posted_interrupt(struct kvm_vcpu *vcpu)
+static inline bool kvm_vcpu_trigger_posted_interrupt(struct kvm_vcpu *vcpu,
+ bool nested)
{
#ifdef CONFIG_SMP
+ int pi_vec = nested ? POSTED_INTR_NESTED_VECTOR : POSTED_INTR_VECTOR;
+
if (vcpu->mode == IN_GUEST_MODE) {
struct vcpu_vmx *vmx = to_vmx(vcpu);
@@ -4945,8 +4948,7 @@ static inline bool kvm_vcpu_trigger_posted_interrupt(struct kvm_vcpu *vcpu)
*/
WARN_ON_ONCE(pi_test_sn(&vmx->pi_desc));
- apic->send_IPI_mask(get_cpu_mask(vcpu->cpu),
- POSTED_INTR_VECTOR);
+ apic->send_IPI_mask(get_cpu_mask(vcpu->cpu), pi_vec);
return true;
}
#endif
@@ -4961,7 +4963,7 @@ static int vmx_deliver_nested_posted_interrupt(struct kvm_vcpu *vcpu,
if (is_guest_mode(vcpu) &&
vector == vmx->nested.posted_intr_nv) {
/* the PIR and ON have been set by L1. */
- kvm_vcpu_trigger_posted_interrupt(vcpu);
+ kvm_vcpu_trigger_posted_interrupt(vcpu, true);
/*
* If a posted intr is not recognized by hardware,
* we will accomplish it in the next vmentry.
@@ -4995,7 +4997,7 @@ static void vmx_deliver_posted_interrupt(struct kvm_vcpu *vcpu, int vector)
if (pi_test_and_set_on(&vmx->pi_desc))
return;
- if (!kvm_vcpu_trigger_posted_interrupt(vcpu))
+ if (!kvm_vcpu_trigger_posted_interrupt(vcpu, false))
kvm_vcpu_kick(vcpu);
}
@@ -9981,13 +9983,9 @@ static int prepare_vmcs02(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12,
/* Posted interrupts setting is only taken from vmcs12. */
if (nested_cpu_has_posted_intr(vmcs12)) {
- /*
- * Note that we use L0's vector here and in
- * vmx_deliver_nested_posted_interrupt.
- */
vmx->nested.posted_intr_nv = vmcs12->posted_intr_nv;
vmx->nested.pi_pending = false;
- vmcs_write16(POSTED_INTR_NV, POSTED_INTR_VECTOR);
+ vmcs_write16(POSTED_INTR_NV, POSTED_INTR_NESTED_VECTOR);
} else {
exec_control &= ~PIN_BASED_POSTED_INTR;
}
@@ -10851,7 +10849,9 @@ static void load_vmcs12_host_state(struct kvm_vcpu *vcpu,
*/
vmx_flush_tlb(vcpu);
}
-
+ /* Restore posted intr vector. */
+ if (nested_cpu_has_posted_intr(vmcs12))
+ vmcs_write16(POSTED_INTR_NV, POSTED_INTR_VECTOR);
vmcs_write32(GUEST_SYSENTER_CS, vmcs12->host_ia32_sysenter_cs);
vmcs_writel(GUEST_SYSENTER_ESP, vmcs12->host_ia32_sysenter_esp);
--
2.11.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH-for-4.12 3/4] KVM: VMX: do not change SN bit in vmx_update_pi_irte()
2017-09-27 3:21 [PATCH-for-4.12 0/4] VT-d PI: fix nested and race condition Haozhong Zhang
2017-09-27 3:21 ` [PATCH-for-4.12 1/4] x86: irq: Define a global vector for nested posted interrupts Haozhong Zhang
2017-09-27 3:21 ` [PATCH-for-4.12 2/4] KVM: nVMX: Fix posted intr delivery when vcpu is in guest mode Haozhong Zhang
@ 2017-09-27 3:21 ` Haozhong Zhang
2017-09-27 3:21 ` [PATCH-for-4.12 4/4] KVM: VMX: remove WARN_ON_ONCE in kvm_vcpu_trigger_posted_interrupt Haozhong Zhang
2017-10-03 8:52 ` [PATCH-for-4.12 0/4] VT-d PI: fix nested and race condition Greg KH
4 siblings, 0 replies; 6+ messages in thread
From: Haozhong Zhang @ 2017-09-27 3:21 UTC (permalink / raw)
To: stable
Cc: Haozhong Zhang, Paolo Bonzini, Radim Krčmář,
Ramamurthy, Venkatesh, Dan Williams
commit dc91f2eb1a4021eb6705c15e474942f84ab9b211 upstream.
In kvm_vcpu_trigger_posted_interrupt() and pi_pre_block(), KVM
assumes that PI notification events should not be suppressed when the
target vCPU is not blocked.
vmx_update_pi_irte() sets the SN field before changing an interrupt
from posting to remapping, but it does not check the vCPU mode.
Therefore, the change of SN field may break above the assumption.
Besides, I don't see reasons to suppress notification events here, so
remove the changes of SN field to avoid race condition.
Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com>
Reported-by: "Ramamurthy, Venkatesh" <venkatesh.ramamurthy@intel.com>
Reported-by: Dan Williams <dan.j.williams@intel.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Fixes: 28b835d60fcc ("KVM: Update Posted-Interrupts Descriptor when vCPU is preempted")
Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
---
arch/x86/kvm/vmx.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 91c9b832e073..553913194d62 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -11424,12 +11424,8 @@ static int vmx_update_pi_irte(struct kvm *kvm, unsigned int host_irq,
if (set)
ret = irq_set_vcpu_affinity(host_irq, &vcpu_info);
- else {
- /* suppress notification event before unposting */
- pi_set_sn(vcpu_to_pi_desc(vcpu));
+ else
ret = irq_set_vcpu_affinity(host_irq, NULL);
- pi_clear_sn(vcpu_to_pi_desc(vcpu));
- }
if (ret < 0) {
printk(KERN_INFO "%s: failed to update PI IRTE\n",
--
2.11.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH-for-4.12 4/4] KVM: VMX: remove WARN_ON_ONCE in kvm_vcpu_trigger_posted_interrupt
2017-09-27 3:21 [PATCH-for-4.12 0/4] VT-d PI: fix nested and race condition Haozhong Zhang
` (2 preceding siblings ...)
2017-09-27 3:21 ` [PATCH-for-4.12 3/4] KVM: VMX: do not change SN bit in vmx_update_pi_irte() Haozhong Zhang
@ 2017-09-27 3:21 ` Haozhong Zhang
2017-10-03 8:52 ` [PATCH-for-4.12 0/4] VT-d PI: fix nested and race condition Greg KH
4 siblings, 0 replies; 6+ messages in thread
From: Haozhong Zhang @ 2017-09-27 3:21 UTC (permalink / raw)
To: stable
Cc: Haozhong Zhang, Paolo Bonzini, Radim Krčmář,
Ramamurthy, Venkatesh, Dan Williams
commit 5753743fa5108b8f98bd61e40dc63f641b26c768 upstream.
WARN_ON_ONCE(pi_test_sn(&vmx->pi_desc)) in kvm_vcpu_trigger_posted_interrupt()
intends to detect the violation of invariant that VT-d PI notification
event is not suppressed when vcpu is in the guest mode. Because the
two checks for the target vcpu mode and the target suppress field
cannot be performed atomically, the target vcpu mode may change in
between. If that does happen, WARN_ON_ONCE() here may raise false
alarms.
As the previous patch fixed the real invariant breaker, remove this
WARN_ON_ONCE() to avoid false alarms, and document the allowed cases
instead.
Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com>
Reported-by: "Ramamurthy, Venkatesh" <venkatesh.ramamurthy@intel.com>
Reported-by: Dan Williams <dan.j.williams@intel.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Fixes: 28b835d60fcc ("KVM: Update Posted-Interrupts Descriptor when vCPU is preempted")
Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
---
arch/x86/kvm/vmx.c | 33 +++++++++++++++++++++------------
1 file changed, 21 insertions(+), 12 deletions(-)
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 553913194d62..9269f3a278f6 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -4932,21 +4932,30 @@ static inline bool kvm_vcpu_trigger_posted_interrupt(struct kvm_vcpu *vcpu,
int pi_vec = nested ? POSTED_INTR_NESTED_VECTOR : POSTED_INTR_VECTOR;
if (vcpu->mode == IN_GUEST_MODE) {
- struct vcpu_vmx *vmx = to_vmx(vcpu);
-
/*
- * Currently, we don't support urgent interrupt,
- * all interrupts are recognized as non-urgent
- * interrupt, so we cannot post interrupts when
- * 'SN' is set.
+ * The vector of interrupt to be delivered to vcpu had
+ * been set in PIR before this function.
+ *
+ * Following cases will be reached in this block, and
+ * we always send a notification event in all cases as
+ * explained below.
+ *
+ * Case 1: vcpu keeps in non-root mode. Sending a
+ * notification event posts the interrupt to vcpu.
+ *
+ * Case 2: vcpu exits to root mode and is still
+ * runnable. PIR will be synced to vIRR before the
+ * next vcpu entry. Sending a notification event in
+ * this case has no effect, as vcpu is not in root
+ * mode.
*
- * If the vcpu is in guest mode, it means it is
- * running instead of being scheduled out and
- * waiting in the run queue, and that's the only
- * case when 'SN' is set currently, warning if
- * 'SN' is set.
+ * Case 3: vcpu exits to root mode and is blocked.
+ * vcpu_block() has already synced PIR to vIRR and
+ * never blocks vcpu if vIRR is not cleared. Therefore,
+ * a blocked vcpu here does not wait for any requested
+ * interrupts in PIR, and sending a notification event
+ * which has no effect is safe here.
*/
- WARN_ON_ONCE(pi_test_sn(&vmx->pi_desc));
apic->send_IPI_mask(get_cpu_mask(vcpu->cpu), pi_vec);
return true;
--
2.11.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH-for-4.12 0/4] VT-d PI: fix nested and race condition
2017-09-27 3:21 [PATCH-for-4.12 0/4] VT-d PI: fix nested and race condition Haozhong Zhang
` (3 preceding siblings ...)
2017-09-27 3:21 ` [PATCH-for-4.12 4/4] KVM: VMX: remove WARN_ON_ONCE in kvm_vcpu_trigger_posted_interrupt Haozhong Zhang
@ 2017-10-03 8:52 ` Greg KH
4 siblings, 0 replies; 6+ messages in thread
From: Greg KH @ 2017-10-03 8:52 UTC (permalink / raw)
To: Haozhong Zhang
Cc: stable, Paolo Bonzini, Radim Krčmář,
Ramamurthy, Venkatesh, Dan Williams, Wincy Van
On Wed, Sep 27, 2017 at 11:21:30AM +0800, Haozhong Zhang wrote:
> All patches are from Linus tree. The commit IDs are recorded in each
> patch.
>
> Patch 1 & 2 fix the mis-delivery of non-nested VT-d PI in the nested VMX
> environment [1].
>
> Patch 3 & 4 fix a race condition in VT-d PI handling [2].
>
> [1] https://www.spinics.net/lists/kvm/msg149007.html
> [2] https://www.spinics.net/lists/kvm/msg155650.html
Thanks for these, but 4.12-stable is end-of-life :(
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-10-03 8:52 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-09-27 3:21 [PATCH-for-4.12 0/4] VT-d PI: fix nested and race condition Haozhong Zhang
2017-09-27 3:21 ` [PATCH-for-4.12 1/4] x86: irq: Define a global vector for nested posted interrupts Haozhong Zhang
2017-09-27 3:21 ` [PATCH-for-4.12 2/4] KVM: nVMX: Fix posted intr delivery when vcpu is in guest mode Haozhong Zhang
2017-09-27 3:21 ` [PATCH-for-4.12 3/4] KVM: VMX: do not change SN bit in vmx_update_pi_irte() Haozhong Zhang
2017-09-27 3:21 ` [PATCH-for-4.12 4/4] KVM: VMX: remove WARN_ON_ONCE in kvm_vcpu_trigger_posted_interrupt Haozhong Zhang
2017-10-03 8:52 ` [PATCH-for-4.12 0/4] VT-d PI: fix nested and race condition Greg KH
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).