[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
>>> 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> _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |