* [Proposal][PATCH] sh: PMB hibernation support
@ 2009-03-11 10:39 Francesco VIRLINZI
2009-03-16 11:05 ` Paul Mundt
0 siblings, 1 reply; 2+ messages in thread
From: Francesco VIRLINZI @ 2009-03-11 10:39 UTC (permalink / raw)
To: linux-sh
[-- Attachment #1: Type: text/plain, Size: 539 bytes --]
Hi Paul
>
> Feel free to post what you already have, even if it doesn't apply. This
> sort of stuff by nature tends to take several iterations before it's in
> any shape to merge anyways.
>
>
In attach there is a proposal on how manage the PMB after a resume from
hibernation.
My assumption in background is that "just because the kernel runs.. the
"core" PMB (main memory) are already ok"
In our kernel I'm doing something very similar.
I can say: it compiles but I have no way to really test this code as it is.
Regards
Francesco
[-- Attachment #2: 0004-sh_mmu-Added-hibernation-support-in-the-PMB.patch --]
[-- Type: text/x-patch, Size: 1742 bytes --]
From f7ac0e9ecd48c8987a747968a79a94ac3f424adc Mon Sep 17 00:00:00 2001
From: Francesco Virlinzi <francesco.virlinzi@st.com>
Date: Wed, 11 Mar 2009 11:31:52 +0100
Subject: [PATCH] sh_mmu: Added hibernation support in the PMB
Signed-off-by: Francesco Virlinzi <francesco.virlinzi@st.com>
---
arch/sh/mm/pmb.c | 38 ++++++++++++++++++++++++++++++++++++++
1 files changed, 38 insertions(+), 0 deletions(-)
diff --git a/arch/sh/mm/pmb.c b/arch/sh/mm/pmb.c
index 8424167..b1a714a 100644
--- a/arch/sh/mm/pmb.c
+++ b/arch/sh/mm/pmb.c
@@ -15,6 +15,8 @@
*/
#include <linux/init.h>
#include <linux/kernel.h>
+#include <linux/sysdev.h>
+#include <linux/cpu.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/bitops.h>
@@ -402,3 +404,39 @@ static int __init pmb_debugfs_init(void)
return 0;
}
postcore_initcall(pmb_debugfs_init);
+
+#ifdef CONFIG_PM
+static int pmb_sysdev_suspend(struct sys_device *dev, pm_message_t state)
+{
+ static pm_message_t prev_state;
+
+ /* Restore the PMB after a resume from hibernation */
+ if (state.event == PM_EVENT_ON &&
+ prev_state.event == PM_EVENT_FREEZE) {
+ struct pmb_entry *pmbe;
+ spin_lock_irq(&pmb_list_lock);
+ for (pmbe = pmb_list; pmbe; pmbe = pmbe->next)
+ set_pmb_entry(pmbe);
+ spin_unlock_irq(&pmb_list_lock);
+ }
+ prev_state = state;
+ return 0;
+}
+
+static int pmb_sysdev_resume(struct sys_device *dev)
+{
+ return pmb_sysdev_suspend(dev, PMSG_ON);
+}
+
+static struct sysdev_driver pmb_sysdev_driver = {
+ .suspend = pmb_sysdev_suspend,
+ .resume = pmb_sysdev_resume,
+};
+
+static int __init pmb_sysdev_init(void)
+{
+ return sysdev_driver_register(&cpu_sysdev_class, &pmb_sysdev_driver);
+}
+
+subsys_initcall(pmb_sysdev_init);
+#endif
--
1.5.6.6
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [Proposal][PATCH] sh: PMB hibernation support
2009-03-11 10:39 [Proposal][PATCH] sh: PMB hibernation support Francesco VIRLINZI
@ 2009-03-16 11:05 ` Paul Mundt
0 siblings, 0 replies; 2+ messages in thread
From: Paul Mundt @ 2009-03-16 11:05 UTC (permalink / raw)
To: linux-sh
On Wed, Mar 11, 2009 at 11:39:02AM +0100, Francesco VIRLINZI wrote:
> In attach there is a proposal on how manage the PMB after a resume from
> hibernation.
> My assumption in background is that "just because the kernel runs.. the
> "core" PMB (main memory) are already ok"
> In our kernel I'm doing something very similar.
> I can say: it compiles but I have no way to really test this code as it is.
>
This looks like as good a place as any to start, so I'll merge this for
now, and we can build on top of this incrementally as other cases pop up.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-03-16 11:05 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-11 10:39 [Proposal][PATCH] sh: PMB hibernation support Francesco VIRLINZI
2009-03-16 11:05 ` Paul Mundt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox