Lines Matching +full:low +full:- +full:side
1 // SPDX-License-Identifier: GPL-2.0-or-later
6 * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org)
8 * Copyright (C) 1996-2001 Cort Dougan
39 #include <linux/radix-tree.h>
78 if (!(local_paca->irq_happened & PACA_IRQ_HARD_DIS)) in next_interrupt()
84 * We are responding to the next interrupt, so interrupt-off in next_interrupt()
93 if (local_paca->irq_happened & irq) { in irq_happened_test_and_clear()
94 local_paca->irq_happened &= ~irq; in irq_happened_test_and_clear()
117 * debug_smp_processor_id() business in this low level function. in replay_soft_interrupts()
122 WARN_ON(!(local_paca->irq_happened & PACA_IRQ_HARD_DIS)); in replay_soft_interrupts()
131 * Force the delivery of pending soft-disabled interrupts on PS3. in replay_soft_interrupts()
132 * Any HV call will have this side effect. in replay_soft_interrupts()
170 /* Book3E does not support soft-masking PMI interrupts */ in replay_soft_interrupts()
183 if (local_paca->irq_happened & ~PACA_IRQ_HARD_DIS) in replay_soft_interrupts()
195 * and re-locking AMR but we shouldn't get here in the first place, in replay_soft_interrupts_irqrestore()
216 /* Write the new soft-enabled value if it is a disable */ in arch_local_irq_restore()
228 * respect to soft-masked interrupts. If this was just a simple code in arch_local_irq_restore()
229 * sequence, a soft-masked interrupt could become pending right after in arch_local_irq_restore()
254 irq_happened = READ_ONCE(local_paca->irq_happened); in arch_local_irq_restore()
262 local_paca->irq_happened = 0; in arch_local_irq_restore()
277 irq_happened = READ_ONCE(local_paca->irq_happened); in arch_local_irq_restore()
282 local_paca->irq_happened |= PACA_IRQ_HARD_DIS; in arch_local_irq_restore()
304 WARN_ON(local_paca->irq_happened != PACA_IRQ_HARD_DIS); in arch_local_irq_restore()
305 local_paca->irq_happened = 0; in arch_local_irq_restore()
312 * This is a helper to use when about to go into idle low-power
313 * when the latter has the side effect of re-enabling interrupts
316 * You call this function with interrupts soft-disabled (this is
321 * being re-enabled and generally sanitized the lazy irq state,
324 * in arch_cpu_idle() will properly re-enable everything.
330 * occurs before we effectively enter the low power state in prep_irq_for_idle()
333 local_paca->irq_happened |= PACA_IRQ_HARD_DIS; in prep_irq_for_idle()
336 * If anything happened while we were soft-disabled, in prep_irq_for_idle()
337 * we return now and do not enter the low power state. in prep_irq_for_idle()
342 /* Tell lockdep we are about to re-enable */ in prep_irq_for_idle()
346 * Mark interrupts as soft-enabled and clear the in prep_irq_for_idle()
348 * are about to hard enable as well as a side effect in prep_irq_for_idle()
349 * of entering the low power state. in prep_irq_for_idle()
351 local_paca->irq_happened &= ~PACA_IRQ_HARD_DIS; in prep_irq_for_idle()
354 /* Tell the caller to enter the low power state */ in prep_irq_for_idle()
371 * occurs before we effectively enter the low power state in prep_irq_for_idle_irqsoff()
374 local_paca->irq_happened |= PACA_IRQ_HARD_DIS; in prep_irq_for_idle_irqsoff()
377 * If anything happened while we were soft-disabled, in prep_irq_for_idle_irqsoff()
378 * we return now and do not enter the low power state. in prep_irq_for_idle_irqsoff()
383 /* Tell lockdep we are about to re-enable */ in prep_irq_for_idle_irqsoff()
419 get_paca()->in_nmi = 1; in replay_system_reset()
421 get_paca()->in_nmi = 0; in replay_system_reset()
433 * re-enabled before it is taken. in irq_set_pending_from_srr1()
462 local_paca->irq_happened |= reason; in irq_set_pending_from_srr1()
472 * This must only be called with interrupts soft-disabled, in force_external_irq_replay()
473 * the replay will happen when re-enabling. in force_external_irq_replay()
483 local_paca->irq_happened |= PACA_IRQ_HARD_DIS; in force_external_irq_replay()
486 local_paca->irq_happened |= PACA_IRQ_EE; in force_external_irq_replay()