summaryrefslogtreecommitdiffstats
path: root/core/interrupts.c
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2014-11-07 10:02:32 +1100
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2014-11-07 15:54:22 +1100
commitffecdd630b4ff48c8d5b94da1c8044e0c927c6f2 (patch)
tree975b88e2f6b960416895356901975b3caa02db30 /core/interrupts.c
parent9e29e3f29faad28e43b6e1b69f57d83935229f44 (diff)
downloadtalos-skiboot-ffecdd630b4ff48c8d5b94da1c8044e0c927c6f2.tar.gz
talos-skiboot-ffecdd630b4ff48c8d5b94da1c8044e0c927c6f2.zip
timer: Add scheduled timer facility
For now running off the event pollers, that will improve once we get delayed interrupts from the SLW Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'core/interrupts.c')
-rw-r--r--core/interrupts.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/core/interrupts.c b/core/interrupts.c
index d33e787e..dfccb32d 100644
--- a/core/interrupts.c
+++ b/core/interrupts.c
@@ -23,6 +23,7 @@
#include <cec.h>
#include <device.h>
#include <ccan/str/str.h>
+#include <timer.h>
/* ICP registers */
#define ICP_XIRR 0x4 /* 32-bit access */
@@ -291,11 +292,16 @@ static int64_t opal_handle_interrupt(uint32_t isn, uint64_t *outstanding_event_m
struct irq_source *is = irq_find_source(isn);
int64_t rc = OPAL_SUCCESS;
+ /* We run the timers first */
+ check_timers();
+
+ /* No source ? return */
if (!is || !is->ops->interrupt) {
rc = OPAL_PARAMETER;
goto bail;
}
+ /* Run it */
is->ops->interrupt(is->data, isn);
/* Update output events */
OpenPOWER on IntegriCloud