[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC 1/9] x86/IRQ: deal with move-in-progress state in fixup_irqs()
>>> On 29.04.19 at 13:22, <JBeulich@xxxxxxxx> wrote: > RFC: I've seen the new ASSERT() in irq_move_cleanup_interrupt() trigger. > I'm pretty sure that this assertion triggering means something else > is wrong, and has been even prior to this change (adding the > assertion without any of the other changes here should be valid in > my understanding). So I think what is missing is updating of vector_irq ... > @@ -2391,6 +2401,24 @@ void fixup_irqs(const cpumask_t *mask, b > continue; > } > > + /* > + * In order for the affinity adjustment below to be successful, we > + * need __assign_irq_vector() to succeed. This in particular means > + * clearing desc->arch.move_in_progress if this would otherwise > + * prevent the function from succeeding. Since there's no way for the > + * flag to get cleared anymore when there's no possible destination > + * left (the only possibility then would be the IRQs enabled window > + * after this loop), there's then also no race with us doing it here. > + * > + * Therefore the logic here and there need to remain in sync. > + */ > + if ( desc->arch.move_in_progress && > + !cpumask_intersects(mask, desc->arch.cpu_mask) ) > + { > + release_old_vec(desc); > + desc->arch.move_in_progress = 0; > + } ... here and in the somewhat similar logic patch 2 inserts a few lines up. I'm about to try this out, but given how rarely I've seen the problem this will take a while to feel confident (if, of course, it helps in the first place). Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |