Kevin, thanks for your reply. On Fri, Apr 21, 2017 at 06:56:39PM +0800, Tian, Kevin wrote: >> From: Gao, Chao >> Sent: Friday, April 7, 2017 11:24 AM >> >> When injecting periodic timer interrupt in vmx_intr_assist(), multiple read >> operation is operated during one event delivery and incur to inconsistent > >operation is operated -> operations are done >
will fix. >> @@ -487,13 +494,14 @@ int vpic_ack_pending_irq(struct vcpu *v) >> struct hvm_hw_vpic *vpic = &v->domain->arch.hvm_domain.vpic[0]; >> >> ASSERT(has_vpic(v->domain)); >> + ASSERT(vpic_is_locked(vpic)); >> >> TRACE_2D(TRC_HVM_EMUL_PIC_PEND_IRQ_CALL, >> vlapic_accept_pic_intr(v), >> vpic->int_output); >> if ( !vlapic_accept_pic_intr(v) || !vpic->int_output ) >> return -1; >> >> - irq = vpic_intack(vpic); >> + irq = vpic_intack_locked(vpic); >> if ( irq == -1 ) >> return -1; >> > >hvm_vcpu_ack_pending_irq is also invoked in nvmx_intr_intercept, >where you also need surround it with spin_lock/unlock otherwise >above ASSERT will be triggered. > nvmx_intr_intercept(), currently, is only called from region protected by irq_lock. So i think the ASSERT won't be triggered. But I also need add an ASSERT in nvmx_intr_intercept(). Thanks Chao _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel