From: Vivek Goyal <vgoyal@in.ibm.com>
To: linux kernel mailing list <linux-kernel@vger.kernel.org>
Cc: Reloc Kernel List <fastboot@lists.osdl.org>,
ebiederm@xmission.com, akpm@linux-foundation.org, ak@suse.de,
hpa@zytor.com, magnus.damm@gmail.com, lwang@redhat.com,
dzickus@redhat.com, pavel@suse.cz, rjw@sisk.pl
Subject: [PATCH 15/20] Move swsusp __pa() dependent code to arch portion
Date: Wed, 7 Mar 2007 12:48:50 +0530 [thread overview]
Message-ID: <20070307071850.GP23412@in.ibm.com> (raw)
In-Reply-To: <20070307065703.GA23412@in.ibm.com>
o __pa() should be used only on kernel linearly mapped virtual addresses
and not on kernel text and data addresses.
o Hibernation code needs to determine the physical address associated
with kernel symbol to mark a section boundary which contains pages which
don't have to be saved and restored during hibernate/resume operation.
o Move this piece of code in arch dependent section. So that architectures
which don't have kernel text/data mapped into kernel linearly mapped
region can come up with their own ways of determining physical addresses
associated with a kernel text.
Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com>
---
arch/i386/power/suspend.c | 14 ++++++++++++++
arch/powerpc/kernel/Makefile | 1 +
arch/powerpc/kernel/suspend.c | 24 ++++++++++++++++++++++++
arch/x86_64/kernel/suspend.c | 14 ++++++++++++++
kernel/power/power.h | 5 ++---
kernel/power/snapshot.c | 11 -----------
6 files changed, 55 insertions(+), 14 deletions(-)
diff -puN arch/i386/power/suspend.c~move-swsusp-__pa-dependent-code-to-arch-portion arch/i386/power/suspend.c
--- linux-2.6.21-rc2-reloc/arch/i386/power/suspend.c~move-swsusp-__pa-dependent-code-to-arch-portion 2007-03-07 01:30:18.000000000 +0530
+++ linux-2.6.21-rc2-reloc-root/arch/i386/power/suspend.c 2007-03-07 01:30:18.000000000 +0530
@@ -16,6 +16,9 @@
/* Defined in arch/i386/power/swsusp.S */
extern int restore_image(void);
+/* References to section boundaries */
+extern const void __nosave_begin, __nosave_end;
+
/* Pointer to the temporary resume page tables */
pgd_t *resume_pg_dir;
@@ -156,3 +159,14 @@ int swsusp_arch_resume(void)
restore_image();
return 0;
}
+
+/*
+ * pfn_is_nosave - check if given pfn is in the 'nosave' section
+ */
+
+int pfn_is_nosave(unsigned long pfn)
+{
+ unsigned long nosave_begin_pfn = __pa_symbol(&__nosave_begin) >> PAGE_SHIFT;
+ unsigned long nosave_end_pfn = PAGE_ALIGN(__pa_symbol(&__nosave_end)) >> PAGE_SHIFT;
+ return (pfn >= nosave_begin_pfn) && (pfn < nosave_end_pfn);
+}
diff -puN arch/powerpc/kernel/Makefile~move-swsusp-__pa-dependent-code-to-arch-portion arch/powerpc/kernel/Makefile
--- linux-2.6.21-rc2-reloc/arch/powerpc/kernel/Makefile~move-swsusp-__pa-dependent-code-to-arch-portion 2007-03-07 01:30:18.000000000 +0530
+++ linux-2.6.21-rc2-reloc-root/arch/powerpc/kernel/Makefile 2007-03-07 01:30:18.000000000 +0530
@@ -37,6 +37,7 @@ obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
obj-$(CONFIG_6xx) += idle_6xx.o l2cr_6xx.o cpu_setup_6xx.o
obj-$(CONFIG_TAU) += tau_6xx.o
obj32-$(CONFIG_SOFTWARE_SUSPEND) += swsusp_32.o
+obj-$(CONFIG_SOFTWARE_SUSPEND) += suspend.o
obj32-$(CONFIG_MODULES) += module_32.o
ifeq ($(CONFIG_PPC_MERGE),y)
diff -puN /dev/null arch/powerpc/kernel/suspend.c
--- /dev/null 2007-03-07 00:46:17.354096448 +0530
+++ linux-2.6.21-rc2-reloc-root/arch/powerpc/kernel/suspend.c 2007-03-07 01:30:18.000000000 +0530
@@ -0,0 +1,24 @@
+/*
+ * Suspend support specific for power.
+ *
+ * Distribute under GPLv2
+ *
+ * Copyright (c) 2002 Pavel Machek <pavel@suse.cz>
+ * Copyright (c) 2001 Patrick Mochel <mochel@osdl.org>
+ */
+
+#include <asm/page.h>
+
+/* References to section boundaries */
+extern const void __nosave_begin, __nosave_end;
+
+/*
+ * pfn_is_nosave - check if given pfn is in the 'nosave' section
+ */
+
+int pfn_is_nosave(unsigned long pfn)
+{
+ unsigned long nosave_begin_pfn = __pa(&__nosave_begin) >> PAGE_SHIFT;
+ unsigned long nosave_end_pfn = PAGE_ALIGN(__pa(&__nosave_end)) >> PAGE_SHIFT;
+ return (pfn >= nosave_begin_pfn) && (pfn < nosave_end_pfn);
+}
diff -puN arch/x86_64/kernel/suspend.c~move-swsusp-__pa-dependent-code-to-arch-portion arch/x86_64/kernel/suspend.c
--- linux-2.6.21-rc2-reloc/arch/x86_64/kernel/suspend.c~move-swsusp-__pa-dependent-code-to-arch-portion 2007-03-07 01:30:18.000000000 +0530
+++ linux-2.6.21-rc2-reloc-root/arch/x86_64/kernel/suspend.c 2007-03-07 01:30:18.000000000 +0530
@@ -13,6 +13,9 @@
#include <asm/page.h>
#include <asm/pgtable.h>
+/* References to section boundaries */
+extern const void __nosave_begin, __nosave_end;
+
struct saved_context saved_context;
unsigned long saved_context_eax, saved_context_ebx, saved_context_ecx, saved_context_edx;
@@ -220,4 +223,15 @@ int swsusp_arch_resume(void)
restore_image();
return 0;
}
+
+/*
+ * pfn_is_nosave - check if given pfn is in the 'nosave' section
+ */
+
+int pfn_is_nosave(unsigned long pfn)
+{
+ unsigned long nosave_begin_pfn = __pa_symbol(&__nosave_begin) >> PAGE_SHIFT;
+ unsigned long nosave_end_pfn = PAGE_ALIGN(__pa_symbol(&__nosave_end)) >> PAGE_SHIFT;
+ return (pfn >= nosave_begin_pfn) && (pfn < nosave_end_pfn);
+}
#endif /* CONFIG_SOFTWARE_SUSPEND */
diff -puN kernel/power/power.h~move-swsusp-__pa-dependent-code-to-arch-portion kernel/power/power.h
--- linux-2.6.21-rc2-reloc/kernel/power/power.h~move-swsusp-__pa-dependent-code-to-arch-portion 2007-03-07 01:30:18.000000000 +0530
+++ linux-2.6.21-rc2-reloc-root/kernel/power/power.h 2007-03-07 01:30:18.000000000 +0530
@@ -23,6 +23,8 @@ static inline int pm_suspend_disk(void)
}
#endif
+extern int pfn_is_nosave(unsigned long);
+
extern struct mutex pm_mutex;
#define power_attr(_name) \
@@ -37,9 +39,6 @@ static struct subsys_attribute _name##_a
extern struct subsystem power_subsys;
-/* References to section boundaries */
-extern const void __nosave_begin, __nosave_end;
-
/* Preferred image size in bytes (default 500 MB) */
extern unsigned long image_size;
extern int in_suspend;
diff -puN kernel/power/snapshot.c~move-swsusp-__pa-dependent-code-to-arch-portion kernel/power/snapshot.c
--- linux-2.6.21-rc2-reloc/kernel/power/snapshot.c~move-swsusp-__pa-dependent-code-to-arch-portion 2007-03-07 01:30:18.000000000 +0530
+++ linux-2.6.21-rc2-reloc-root/kernel/power/snapshot.c 2007-03-07 01:30:18.000000000 +0530
@@ -651,17 +651,6 @@ static inline unsigned int count_highmem
#endif /* CONFIG_HIGHMEM */
/**
- * pfn_is_nosave - check if given pfn is in the 'nosave' section
- */
-
-static inline int pfn_is_nosave(unsigned long pfn)
-{
- unsigned long nosave_begin_pfn = __pa(&__nosave_begin) >> PAGE_SHIFT;
- unsigned long nosave_end_pfn = PAGE_ALIGN(__pa(&__nosave_end)) >> PAGE_SHIFT;
- return (pfn >= nosave_begin_pfn) && (pfn < nosave_end_pfn);
-}
-
-/**
* saveable - Determine whether a non-highmem page should be included in
* the suspend image.
*
_
next prev parent reply other threads:[~2007-03-07 7:29 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-07 6:57 [PATCH 0/20] x86_64 Relocatable bzImage support (V4) Vivek Goyal
2007-03-07 6:59 ` [PATCH 1/20] x86_64: Assembly safe page.h and pgtable.h Vivek Goyal
2007-03-07 19:24 ` Sam Ravnborg
2007-03-08 6:01 ` Vivek Goyal
2007-03-08 6:16 ` Eric W. Biederman
2007-03-07 7:00 ` [PATCH 2/20] x86_64: Kill temp boot pmds Vivek Goyal
2007-03-07 7:02 ` [PATCH 3/20] x86_64: Clean up the early boot page table Vivek Goyal
2007-03-07 7:03 ` [PATCH 4/20] x86_64: Fix early printk to use standard ISA mapping Vivek Goyal
2007-03-07 7:04 ` [PATCH 5/20] x86_64: modify copy_bootdata to use virtual addresses Vivek Goyal
2007-03-07 7:06 ` [PATCH 6/20] x86_64: cleanup segments Vivek Goyal
2007-03-07 7:08 ` [PATCH 7/20] x86_64: Add EFER to the register set saved by save_processor_state Vivek Goyal
2007-03-07 7:09 ` [PATCH 8/20] x86_64: 64bit PIC SMP trampoline Vivek Goyal
2007-03-07 7:10 ` [PATCH 9/20] x86_64: Get rid of dead code in suspend resume Vivek Goyal
2007-03-07 7:12 ` [PATCH 10/20] x86_64: wakeup.S rename registers to reflect right names Vivek Goyal
2007-03-07 22:30 ` Pavel Machek
2007-03-07 7:13 ` [PATCH 11/20] x86_64: wakeup.S misc cleanups Vivek Goyal
2007-03-07 22:40 ` Pavel Machek
2007-03-08 4:25 ` Vivek Goyal
2007-03-07 22:41 ` Pavel Machek
2007-03-08 4:29 ` Vivek Goyal
2007-03-08 11:43 ` Pavel Machek
2007-03-08 16:45 ` [Fastboot] " Lombard, David N
2007-03-07 7:14 ` [PATCH 12/20] x86_64: 64bit ACPI wakeup trampoline Vivek Goyal
2007-03-07 22:45 ` Pavel Machek
2007-03-07 22:57 ` [Fastboot] " Bernhard Walle
2007-03-08 4:58 ` Vivek Goyal
2007-03-08 11:44 ` Pavel Machek
2007-03-07 7:16 ` [PATCH 13/20] x86_64: Modify discover_ebda to use virtual addresses Vivek Goyal
2007-03-07 7:17 ` [PATCH 14/20] x86_64: Remove the identity mapping as early as possible Vivek Goyal
2007-03-07 7:18 ` Vivek Goyal [this message]
2007-03-07 22:47 ` [PATCH 15/20] Move swsusp __pa() dependent code to arch portion Pavel Machek
2007-03-08 5:34 ` Vivek Goyal
2007-03-08 11:47 ` Pavel Machek
2007-03-07 7:20 ` [PATCH 16/20] swsusp: do not use virt_to_page on kernel data address Vivek Goyal
2007-03-07 22:49 ` Pavel Machek
2007-03-08 5:17 ` Vivek Goyal
2007-03-08 11:47 ` Pavel Machek
2007-03-07 22:50 ` Pavel Machek
2007-03-07 23:15 ` Nigel Cunningham
2007-03-08 5:04 ` Vivek Goyal
2007-03-08 11:44 ` Pavel Machek
2007-03-07 7:21 ` [PATCH 17/20] x86_64: __pa and __pa_symbol address space separation Vivek Goyal
2007-03-07 7:22 ` [PATCH 18/20] x86_64: Relocatable Kernel Support Vivek Goyal
2007-03-07 7:24 ` [PATCH 19/20] x86_64: Extend bzImage protocol for relocatable bzImage Vivek Goyal
2007-03-07 7:25 ` [PATCH 20/20] x86_64: Move cpu verification code to common file Vivek Goyal
2007-03-07 15:07 ` [PATCH 0/20] x86_64 Relocatable bzImage support (V4) Arjan van de Ven
2007-03-07 19:08 ` Eric W. Biederman
2007-03-07 20:49 ` Nigel Cunningham
2007-03-07 23:15 ` Nigel Cunningham
2007-03-08 4:40 ` Vivek Goyal
2007-03-08 8:07 ` Nigel Cunningham
2007-03-08 8:27 ` Vivek Goyal
2007-03-08 7:48 ` Vivek Goyal
2007-03-08 3:36 ` Vivek Goyal
2007-03-14 23:10 ` Andi Kleen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070307071850.GP23412@in.ibm.com \
--to=vgoyal@in.ibm.com \
--cc=ak@suse.de \
--cc=akpm@linux-foundation.org \
--cc=dzickus@redhat.com \
--cc=ebiederm@xmission.com \
--cc=fastboot@lists.osdl.org \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lwang@redhat.com \
--cc=magnus.damm@gmail.com \
--cc=pavel@suse.cz \
--cc=rjw@sisk.pl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.