[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH for-4.19 v4] x86/irq: forward pending interrupts to new destination in fixup_irqs()



On Wed, 2024-06-19 at 13:53 +0200, Jan Beulich wrote:
> On 19.06.2024 11:58, Roger Pau Monne wrote:
> > fixup_irqs() is used to evacuate interrupts from to be offlined
> > CPUs.  Given
> > the CPU is to become offline, the normal migration logic used by
> > Xen where the
> > vector in the previous target(s) is left configured until the
> > interrupt is
> > received on the new destination is not suitable.
> > 
> > Instead attempt to do as much as possible in order to prevent
> > loosing
> > interrupts.  If fixup_irqs() is called from the CPU to be offlined
> > (as is
> > currently the case for CPU hot unplug) attempt to forward pending
> > vectors when
> > interrupts that target the current CPU are migrated to a different
> > destination.
> > 
> > Additionally, for interrupts that have already been moved from the
> > current CPU
> > prior to the call to fixup_irqs() but that haven't been delivered
> > to the new
> > destination (iow: interrupts with move_in_progress set and the
> > current CPU set
> > in ->arch.old_cpu_mask) also check whether the previous vector is
> > pending and
> > forward it to the new destination.
> > 
> > This allows us to remove the window with interrupts enabled at the
> > bottom of
> > fixup_irqs().  Such window wasn't safe anyway: references to the
> > CPU to become
> > offline are removed from interrupts masks, but the per-CPU
> > vector_irq[] array
> > is not updated to reflect those changes (as the CPU is going
> > offline anyway).
> > 
> > Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
> 
> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>

Release-Acked-by: Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx>

~ Oleksii



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.