From 220e0b033d957f61b772d59cf1b2124fe760b06d Mon Sep 17 00:00:00 2001 From: Chao Gao Date: Fri, 7 Apr 2017 15:38:40 +0200 Subject: [PATCH] passthrough/io: fall back to remapping interrupt when we can't use VT-d PI The current logic of using VT-d pi is when guest configurates the pirq's destination vcpu to a single vcpu, the according IRTE is updated to posted format. If the destination of the pirq is multiple vcpus, we will stay in posted format. Obviously, we should fall back to remapping interrupt when guest wrongly configurate destination of pirq or makes it have multi-destination vcpus. Signed-off-by: Chao Gao Reviewed-by: Kevin Tian [jb: guard against vcpu being NULL] Reviewed-by: Jan Beulich --- xen/drivers/passthrough/io.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/xen/drivers/passthrough/io.c b/xen/drivers/passthrough/io.c index 3e0a10e2c6..e5a43e508f 100644 --- a/xen/drivers/passthrough/io.c +++ b/xen/drivers/passthrough/io.c @@ -413,15 +413,8 @@ int pt_irq_create_bind( /* Use interrupt posting if it is supported. */ if ( iommu_intpost ) - { - if ( vcpu ) - pi_update_irte(&vcpu->arch.hvm_vmx.pi_desc, info, - pirq_dpci->gmsi.gvec); - else - dprintk(XENLOG_G_INFO, - "%pv: deliver interrupt in remapping mode,gvec:%02x\n", - vcpu, pirq_dpci->gmsi.gvec); - } + pi_update_irte(vcpu ? &vcpu->arch.hvm_vmx.pi_desc : NULL, + info, pirq_dpci->gmsi.gvec); break; } -- 2.39.5