Re: [PATCH] x86/alternatives: Let __text_poke() acquire the pte lock with enabled interrupts

From: Sebastian Andrzej Siewior
Date: Thu Aug 13 2020 - 06:47:20 EST


On 2020-08-12 16:39:41 [+0200], Thomas Gleixner wrote:
> Sebastian,
Hi tglx,

> Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> writes:
>
> > The pte lock is never acquired from an IRQ-off region so it does not
> > require the interrupts to be disabled.
>
> I doubt that this is true. It surely is acquired within other locks
> which might be taken with spin_lock_irq(). Which is completely fine on
> RT.
>
> But that's not the point. The point is that pte_lock() does not require
> to be taken with interrupts disabled.

The IRQ-off vs in-IRQ working was chosen poorly.

> Please be precise about these kind of things. Handwavy descriptions
> cause more problems than they solve.
>
> > RT complains here because the spinlock_t must not be acquired with
> > disabled interrupts.
> >
> > use_temporary_mm() expects interrupts to be off because it invokes
> > switch_mm_irqs_off() and uses per-CPU (current active mm) data.
> >
> > Move local_irq_save() after the the pte lock has been acquired. Move
> > local_irq_restore() after the pte lock has been released.
>
> While part 1 is correct, part 2 is the exact opposite of what the patch
> does.
>
> Move the PTE lock handling outside the interrupt disabled region.
>
> describes precisely what this is about without any gory details which
> can be seen in the patch itself. Hmm?

Oki reworded.

> Thanks,
>
> tglx

Sebastian