• Nicholas Piggin's avatar
    powerpc/64: Don't trace code that runs with the soft irq mask unreconciled · e2b36d59
    Nicholas Piggin authored
    "Reconciling" in terms of interrupt handling, is to bring the soft irq
    mask state in to synch with the hardware, after an interrupt causes
    MSR[EE] to be cleared (while the soft mask may be enabled, and hard
    irqs not marked disabled).
    
    General kernel code should not be called while unreconciled, because
    local_irq_disable, etc. manipulations can cause surprising irq traces,
    and it's fragile because the soft irq code does not really expect to
    be called in this situation.
    
    When exiting from an interrupt, MSR[EE] is cleared to prevent races,
    but soft irq state is enabled for the returned-to context, so this is
    now an unreconciled state. restore_math is called in this state, and
    that can be ftraced, and the ftrace subsystem disables local irqs.
    
    Mark restore_math and its callees as notrace. Restore a sanity check
    in the soft irq code that had to be disabled for this case, by commit
    4da1f792 ("powerpc/64: Disable irq restore warning for now").
    Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    e2b36d59
fpu.S 3.96 KB