summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormlarkin <mlarkin@openbsd.org>2013-05-30 19:00:59 +0000
committermlarkin <mlarkin@openbsd.org>2013-05-30 19:00:59 +0000
commit52f9d053feed919b6737f00eefeceedd7f9e7f9f (patch)
treea41443112ae98df6c5e7c3a23f7714e213eec18e
parentSort includes. From Vladimir Tamara Patino <vtamara@pasosdeJesus.org> (diff)
downloadwireguard-openbsd-52f9d053feed919b6737f00eefeceedd7f9e7f9f.tar.xz
wireguard-openbsd-52f9d053feed919b6737f00eefeceedd7f9e7f9f.zip
Make interrupt handling in hibernate resume MI by providing MD-specific
functions to enable and disable interrupts, if needed. If a platform doesnt need interrupt handling in this way, the MD function can be a no-op. discussed with pirofti and deraadt
-rw-r--r--sys/arch/amd64/amd64/hibernate_machdep.c11
-rw-r--r--sys/arch/amd64/include/hibernate.h2
-rw-r--r--sys/arch/i386/i386/hibernate_machdep.c12
-rw-r--r--sys/arch/i386/include/hibernate.h2
-rw-r--r--sys/kern/subr_hibernate.c6
5 files changed, 30 insertions, 3 deletions
diff --git a/sys/arch/amd64/amd64/hibernate_machdep.c b/sys/arch/amd64/amd64/hibernate_machdep.c
index 3359b3fc086..1c14d0de895 100644
--- a/sys/arch/amd64/amd64/hibernate_machdep.c
+++ b/sys/arch/amd64/amd64/hibernate_machdep.c
@@ -371,3 +371,14 @@ hibernate_inflate_skip(union hibernate_info *hib_info, paddr_t dest)
return (0);
}
+void
+hibernate_enable_intr_machdep(void)
+{
+ enable_intr();
+}
+
+void
+hibernate_disable_intr_machdep(void)
+{
+ disable_intr();
+}
diff --git a/sys/arch/amd64/include/hibernate.h b/sys/arch/amd64/include/hibernate.h
index 879df17d93d..674ba9d6703 100644
--- a/sys/arch/amd64/include/hibernate.h
+++ b/sys/arch/amd64/include/hibernate.h
@@ -27,3 +27,5 @@ int hibernate_suspend(void);
void hibernate_switch_stack_machdep(void);
void hibernate_resume_machdep(void);
void hibernate_activate_resume_pt_machdep(void);
+void hibernate_enable_intr_machdep(void);
+void hibernate_disable_intr_machdep(void);
diff --git a/sys/arch/i386/i386/hibernate_machdep.c b/sys/arch/i386/i386/hibernate_machdep.c
index 7dc15e30952..1d37f9d5206 100644
--- a/sys/arch/i386/i386/hibernate_machdep.c
+++ b/sys/arch/i386/i386/hibernate_machdep.c
@@ -314,3 +314,15 @@ hibernate_inflate_skip(union hibernate_info *hib_info, paddr_t dest)
return (0);
}
+
+void
+hibernate_enable_intr_machdep(void)
+{
+ enable_intr();
+}
+
+void
+hibernate_disable_intr_machdep(void)
+{
+ disable_intr();
+}
diff --git a/sys/arch/i386/include/hibernate.h b/sys/arch/i386/include/hibernate.h
index 19c0b8dd63f..d4ac3707d35 100644
--- a/sys/arch/i386/include/hibernate.h
+++ b/sys/arch/i386/include/hibernate.h
@@ -27,3 +27,5 @@ int hibernate_suspend(void);
void hibernate_switch_stack_machdep(void);
void hibernate_resume_machdep(void);
void hibernate_activate_resume_pt_machdep(void);
+void hibernate_enable_intr_machdep(void);
+void hibernate_disable_intr_machdep(void);
diff --git a/sys/kern/subr_hibernate.c b/sys/kern/subr_hibernate.c
index fb22acdf579..c195ed81c95 100644
--- a/sys/kern/subr_hibernate.c
+++ b/sys/kern/subr_hibernate.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: subr_hibernate.c,v 1.55 2013/05/30 16:00:54 mlarkin Exp $ */
+/* $OpenBSD: subr_hibernate.c,v 1.56 2013/05/30 19:00:59 mlarkin Exp $ */
/*
* Copyright (c) 2011 Ariane van der Steldt <ariane@stack.nl>
@@ -1197,12 +1197,12 @@ hibernate_resume(void)
goto fail;
(void) splhigh();
- disable_intr();
+ hibernate_disable_intr_machdep();
cold = 1;
if (config_suspend(TAILQ_FIRST(&alldevs), DVACT_SUSPEND) != 0) {
cold = 0;
- enable_intr();
+ hibernate_enable_intr_machdep();
goto fail;
}