|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH] mini-os: Add suspend stubs for ARM
This patch introduces the missing suspend-related stubs for ARM. It also
introduces the new arch_suspend() function in order to keep the logic in
kernel_suspend() arch independent.
Signed-off-by: Costin Lupu <costin.lupu@xxxxxxxxx>
---
arch/arm/setup.c | 15 +++++++++++++++
arch/x86/setup.c | 9 +++++++++
include/x86/os.h | 1 +
shutdown.c | 10 +---------
4 files changed, 26 insertions(+), 9 deletions(-)
diff --git a/arch/arm/setup.c b/arch/arm/setup.c
index b65023c..21b6ed4 100644
--- a/arch/arm/setup.c
+++ b/arch/arm/setup.c
@@ -53,6 +53,21 @@ arch_fini(void)
{
}
+void arch_pre_suspend(void)
+{
+}
+
+void arch_post_suspend(int canceled)
+{
+}
+
+int arch_suspend(void)
+{
+ printk("Suspend not supported on ARM. Aborting.");
+ do_exit();
+ return 1;
+}
+
void
arch_do_exit(void)
{
diff --git a/arch/x86/setup.c b/arch/x86/setup.c
index 64b22c5..1b5d0d5 100644
--- a/arch/x86/setup.c
+++ b/arch/x86/setup.c
@@ -278,6 +278,15 @@ void arch_post_suspend(int canceled)
arch_mm_post_suspend(canceled);
}
+int arch_suspend(void)
+{
+ /*
+ * This hypercall returns 1 if the suspend
+ * was cancelled and 0 if resuming in a new domain
+ */
+ return HYPERVISOR_suspend(virt_to_mfn(start_info_ptr));
+}
+
void
arch_fini(void)
{
diff --git a/include/x86/os.h b/include/x86/os.h
index 46a824d..7c5d2fe 100644
--- a/include/x86/os.h
+++ b/include/x86/os.h
@@ -74,6 +74,7 @@ void xen_callback_vector(void);
void arch_pre_suspend(void);
void arch_post_suspend(int canceled);
+int arch_suspend(void);
void arch_fini(void);
#ifdef CONFIG_PARAVIRT
diff --git a/shutdown.c b/shutdown.c
index 0854670..bb2c6f1 100644
--- a/shutdown.c
+++ b/shutdown.c
@@ -46,8 +46,6 @@
#include <mini-os/xmalloc.h>
-extern start_info_t *start_info_ptr;
-
#ifdef CONFIG_XENBUS
static const char *path = "control/shutdown";
static const char *token = "control/shutdown";
@@ -140,13 +138,7 @@ void kernel_suspend(void)
pre_suspend();
arch_pre_suspend();
- /*
- * This hypercall returns 1 if the suspend
- * was cancelled and 0 if resuming in a new domain
- *
- * TODO Fix this for ARM
- */
- rc = HYPERVISOR_suspend(virt_to_mfn(start_info_ptr));
+ rc = arch_suspend();
arch_post_suspend(rc);
post_suspend(rc);
--
2.20.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |