summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms/powernv/powernv.h
diff options
context:
space:
mode:
authorNicholas Piggin <npiggin@gmail.com>2018-05-10 19:20:05 +0200
committerMichael Ellerman <mpe@ellerman.id.au>2018-06-03 12:40:30 +0200
commit56c0b48b1e443efa5d6f4d60513302c934e55b17 (patch)
tree95ae0d148361c2a1eac119173585d3475ddba936 /arch/powerpc/platforms/powernv/powernv.h
parentpowerpc/powernv: call OPAL_QUIESCE before OPAL_SIGNAL_SYSTEM_RESET (diff)
downloadlinux-56c0b48b1e443efa5d6f4d60513302c934e55b17.tar.xz
linux-56c0b48b1e443efa5d6f4d60513302c934e55b17.zip
powerpc/powernv: process all OPAL event interrupts with kopald
Using irq_work for processing OPAL event interrupts is not necessary. irq_work is typically used to schedule work from NMI context, a softirq may be more appropriate. However OPAL events are not particularly performance or latency critical, so they can all be invoked by kopald. This patch removes the irq_work queueing, and instead wakes up kopald when there is an event to be processed. kopald processes interrupts individually, enabling irqs and calling cond_resched between each one to minimise latencies. Event handlers themselves should still use threaded handlers, workqueues, etc. as necessary to avoid high interrupts-off latencies within any single interrupt. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/platforms/powernv/powernv.h')
-rw-r--r--arch/powerpc/platforms/powernv/powernv.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/powerpc/platforms/powernv/powernv.h b/arch/powerpc/platforms/powernv/powernv.h
index 94f17ab1374b..fd4a1c5a6369 100644
--- a/arch/powerpc/platforms/powernv/powernv.h
+++ b/arch/powerpc/platforms/powernv/powernv.h
@@ -24,7 +24,8 @@ extern u32 pnv_get_supported_cpuidle_states(void);
extern void pnv_lpc_init(void);
-extern void opal_handle_events(uint64_t events);
+extern void opal_handle_events(void);
+extern bool opal_have_pending_events(void);
extern void opal_event_shutdown(void);
bool cpu_core_split_required(void);