[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 for 4.10] x86/vpt: guarantee the return value of pt_update_irq() set in vIRR or PIR
Hi Jan, On 20/10/17 12:42, Jan Beulich wrote: On 20.10.17 at 02:35, <chao.gao@xxxxxxxxx> wrote:pt_update_irq() is expected to return the vector number of periodic timer interrupt, which should be set in vIRR of vlapic or in PIR. Otherwise it would trigger the assertion in vmx_intr_assist(), please seeing https://lists.xenproject.org/archives/html/xen-devel/2017-10/msg00915.html. But it fails to achieve that in the following two case: 1. hvm_isa_irq_assert() may not set the corresponding bit in vIRR for mask field of IOAPIC RTE is set. Please refer to the call tree vmx_intr_assist() -> pt_update_irq() -> hvm_isa_irq_assert() -> assert_irq() -> assert_gsi() -> vioapic_irq_positive_edge(). The patch checks whether the vector is set or not in vIRR of vlapic or PIR before returning. 2. someone changes the vector field of IOAPIC RTE between asserting the irq and getting the vector of the irq, leading to setting the old vector number but returning a different vector number. This patch allows hvm_isa_irq_assert() to accept a callback which can get the interrupt vector with irq_lock held. Thus, no one can change the vector between the two operations. BTW, the first argument of pi_test_and_set_pir() should be uint8_t and I take this chance to fix it. Signed-off-by: Chao Gao <chao.gao@xxxxxxxxx>Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> Do you have any opinion on this patch going to Xen 4.10? Cheers, -- Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |