mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Andi Kleen <ak@suse.de>
To: Vivek Goyal <vgoyal@in.ibm.com>,
	linux-kernel@vger.kernel.org, patches@x86-64.org
Subject: [PATCH] [16/22] x86: Move swsusp __pa() dependent code to arch portion
Date: Sat, 28 Apr 2007 19:59:03 +0200 (CEST)	[thread overview]
Message-ID: <20070428175903.99FE9151CA@wotan.suse.de> (raw)
In-Reply-To: <20070428758.455116000@suse.de>


From: Vivek Goyal <vgoyal@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>
Signed-off-by: Andi Kleen <ak@suse.de>

---

 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(-)

Index: linux/arch/i386/power/suspend.c
===================================================================
--- linux.orig/arch/i386/power/suspend.c
+++ linux/arch/i386/power/suspend.c
@@ -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);
+}
Index: linux/arch/powerpc/kernel/Makefile
===================================================================
--- linux.orig/arch/powerpc/kernel/Makefile
+++ linux/arch/powerpc/kernel/Makefile
@@ -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)
Index: linux/arch/powerpc/kernel/suspend.c
===================================================================
--- /dev/null
+++ linux/arch/powerpc/kernel/suspend.c
@@ -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);
+}
Index: linux/arch/x86_64/kernel/suspend.c
===================================================================
--- linux.orig/arch/x86_64/kernel/suspend.c
+++ linux/arch/x86_64/kernel/suspend.c
@@ -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 */
Index: linux/kernel/power/power.h
===================================================================
--- linux.orig/kernel/power/power.h
+++ linux/kernel/power/power.h
@@ -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;
Index: linux/kernel/power/snapshot.c
===================================================================
--- linux.orig/kernel/power/snapshot.c
+++ linux/kernel/power/snapshot.c
@@ -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.
  *

  parent reply	other threads:[~2007-04-28 18:03 UTC|newest]

Thread overview: 113+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-04-28 17:58 [PATCH] [0/22] x86 candidate patches for review II: 64bit relocatable kernel Andi Kleen
2007-04-28 17:58 ` [PATCH] [1/22] x86_64: dma_ops as const Andi Kleen
2007-04-28 17:58 ` [PATCH] [2/22] x86_64: Assembly safe page.h and pgtable.h Andi Kleen
2007-04-28 17:58 ` [PATCH] [3/22] x86_64: Kill temp boot pmds Andi Kleen
2007-04-28 17:58 ` [PATCH] [4/22] x86_64: Clean up the early boot page table Andi Kleen
2007-04-28 17:58 ` [PATCH] [5/22] x86_64: Fix early printk to use standard ISA mapping Andi Kleen
2007-04-28 17:58 ` [PATCH] [6/22] x86_64: modify copy_bootdata to use virtual addresses Andi Kleen
2007-04-28 17:58 ` [PATCH] [7/22] x86_64: cleanup segments Andi Kleen
2007-04-28 17:58 ` [PATCH] [8/22] x86_64: Add EFER to the register set saved by save_processor_state Andi Kleen
2007-04-28 17:58 ` [PATCH] [9/22] x86_64: 64bit PIC SMP trampoline Andi Kleen
2007-04-28 17:58 ` [PATCH] [10/22] x86_64: Get rid of dead code in suspend resume Andi Kleen
2007-04-28 17:58 ` [PATCH] [11/22] x86_64: wakeup.S rename registers to reflect right names Andi Kleen
2007-04-28 17:58 ` [PATCH] [12/22] x86_64: wakeup.S misc cleanups Andi Kleen
2007-04-28 17:59 ` [PATCH] [13/22] x86_64: 64bit ACPI wakeup trampoline Andi Kleen
2007-04-28 17:59 ` [PATCH] [14/22] x86_64: Modify discover_ebda to use virtual addresses Andi Kleen
2007-04-28 17:59 ` [PATCH] [15/22] x86_64: Remove the identity mapping as early as possible Andi Kleen
2007-04-28 17:59 ` Andi Kleen [this message]
2007-04-28 17:59 ` [PATCH] [17/22] x86_64: do not use virt_to_page on kernel data address Andi Kleen
2007-04-28 17:59 ` [PATCH] [18/22] x86: __pa and __pa_symbol address space separation Andi Kleen
2007-04-28 17:59 ` [PATCH] [19/22] x86_64: Relocatable Kernel Support Andi Kleen
2007-04-28 17:59 ` [PATCH] [20/22] x86_64: build-time checking Andi Kleen
2007-04-28 17:59 ` [PATCH] [21/22] x86_64: Extend bzImage protocol for relocatable bzImage Andi Kleen
2007-04-28 18:07   ` Jeff Garzik
2007-04-28 18:24     ` Andi Kleen
2007-04-28 20:18     ` [patches] " Eric W. Biederman
2007-04-28 20:38       ` H. Peter Anvin
2007-04-28 20:46         ` Eric W. Biederman
2007-04-29  4:50           ` Vivek Goyal
2007-04-28 20:39       ` Jeff Garzik
2007-04-29  7:24       ` Jeremy Fitzhardinge
2007-04-29 15:11         ` Eric W. Biederman
2007-04-30  3:03           ` Rusty Russell
2007-04-30  4:38             ` H. Peter Anvin
2007-04-30  5:03               ` Rusty Russell
2007-04-30  5:25                 ` Eric W. Biederman
2007-04-30 16:03                   ` H. Peter Anvin
2007-04-30 16:47                     ` Eric W. Biederman
2007-04-30 15:34                 ` Eric W. Biederman
2007-05-01  3:38                   ` Rusty Russell
2007-05-01  3:45                     ` H. Peter Anvin
2007-05-01  3:59                       ` Rusty Russell
2007-05-01  4:00                       ` H. Peter Anvin
2007-05-01  4:50                         ` Rusty Russell
2007-05-01  5:28                           ` H. Peter Anvin
2007-05-01  6:05                             ` Eric W. Biederman
2007-05-01  3:57                     ` Eric W. Biederman
2007-05-01  5:37                       ` Jeremy Fitzhardinge
2007-05-01  6:11                         ` Eric W. Biederman
2007-05-01  7:34                         ` Rusty Russell
2007-05-01  8:03                           ` Jeremy Fitzhardinge
2007-04-30 18:50           ` Jeremy Fitzhardinge
2007-04-30 22:10             ` Eric W. Biederman
2007-04-30 22:42               ` Jeremy Fitzhardinge
2007-04-30 22:51                 ` Jeremy Fitzhardinge
2007-04-30 23:10                 ` Eric W. Biederman
2007-04-30 23:16                   ` H. Peter Anvin
2007-04-30 23:35                     ` Eric W. Biederman
2007-05-01  3:39                     ` Andi Kleen
2007-05-01  2:48                       ` H. Peter Anvin
2007-05-02  9:31             ` Gerd Hoffmann
2007-05-02 15:16               ` Jeremy Fitzhardinge
2007-05-02 20:51                 ` H. Peter Anvin
2007-05-02 21:01                   ` Jeremy Fitzhardinge
2007-05-02 21:09                     ` H. Peter Anvin
2007-05-02 21:39                       ` Jeremy Fitzhardinge
2007-05-02 21:59                         ` H. Peter Anvin
2007-05-02 23:03                           ` Jeremy Fitzhardinge
2007-05-03  4:50                           ` Vivek Goyal
2007-05-03  6:42                             ` Eric W. Biederman
2007-05-03  7:05                               ` Jeremy Fitzhardinge
2007-05-03 13:23                                 ` Eric W. Biederman
2007-05-03 16:23                                   ` Jeremy Fitzhardinge
2007-05-08 16:41                               ` yhlu
2007-05-08 17:18                                 ` Eric W. Biederman
2007-05-08 17:33                                   ` yhlu
2007-05-08 18:51                                     ` yhlu
2007-05-08 19:01                                       ` yhlu
2007-05-08 19:11                                       ` Eric W. Biederman
2007-05-08 22:00                                         ` yhlu
2007-05-08 22:07                                           ` Jeremy Fitzhardinge
2007-05-08 22:35                                             ` H. Peter Anvin
2007-05-08 22:41                                               ` yhlu
2007-05-08 23:13                                                 ` H. Peter Anvin
2007-05-09  1:44                                                   ` Eric W. Biederman
2007-05-09  2:23                                                     ` H. Peter Anvin
2007-05-09  3:30                                                       ` Eric W. Biederman
2007-05-09  4:52                                                         ` yhlu
2007-05-09  5:04                                                           ` H. Peter Anvin
2007-05-09  5:08                                                             ` H. Peter Anvin
2007-05-09  5:48                                                               ` yhlu
2007-05-09  5:54                                                                 ` H. Peter Anvin
2007-05-09  5:55                                                                 ` H. Peter Anvin
2007-05-09 10:52                                                                   ` Eric W. Biederman
2007-05-09 16:31                                                                     ` yhlu
2007-05-09 19:21                                                                     ` H. Peter Anvin
2007-05-10  0:52                                                                       ` Eric W. Biederman
2007-05-09  7:58                                                         ` Gerd Hoffmann
2007-05-09 11:21                                                           ` Eric W. Biederman
2007-05-10  0:55                                                           ` yhlu
2007-05-09  2:44                                                     ` yhlu
2007-05-09  3:33                                       ` Vivek Goyal
2007-05-09  4:42                                         ` yhlu
2007-05-09  4:58                                           ` Eric W. Biederman
2007-05-08 17:24                                 ` Vivek Goyal
2007-05-08 17:34                                   ` yhlu
2007-05-03  2:01                       ` Rusty Russell
2007-05-02 21:17                   ` Eric W. Biederman
2007-05-02 21:24                     ` H. Peter Anvin
2007-05-02 21:36                       ` Eric W. Biederman
2007-04-29 17:51         ` H. Peter Anvin
2007-04-29 18:10           ` Eric W. Biederman
2007-04-30  4:41         ` Rusty Russell
2007-04-28 17:59 ` [PATCH] [22/22] x86_64: Move cpu verification code to common file 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=20070428175903.99FE9151CA@wotan.suse.de \
    --to=ak@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=patches@x86-64.org \
    --cc=vgoyal@in.ibm.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®