From: Vitaly Kuznetsov <vkuznets@redhat.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
Boris Ostrovsky <boris.ostrovsky@oracle.com>,
x86@kernel.org, Andrew Jones <drjones@redhat.com>,
linux-kernel@vger.kernel.org
Subject: [PATCH 5/5] x86/xen: split suspend.c for PV and PVHVM guests
Date: Fri, 24 Feb 2017 17:14:40 +0100 [thread overview]
Message-ID: <20170224161440.2136-6-vkuznets@redhat.com> (raw)
In-Reply-To: <20170224161440.2136-1-vkuznets@redhat.com>
Get read of #ifdefs in suspend.c by splitting the code into
suspend_pv.c and suspend_hvm.c.
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
---
arch/x86/xen/Makefile | 4 ++--
arch/x86/xen/suspend.c | 58 ----------------------------------------------
arch/x86/xen/suspend_hvm.c | 22 ++++++++++++++++++
arch/x86/xen/suspend_pv.c | 44 +++++++++++++++++++++++++++++++++++
arch/x86/xen/xen-ops.h | 14 +++++++++++
5 files changed, 82 insertions(+), 60 deletions(-)
create mode 100644 arch/x86/xen/suspend_hvm.c
create mode 100644 arch/x86/xen/suspend_pv.c
diff --git a/arch/x86/xen/Makefile b/arch/x86/xen/Makefile
index 10264ed..c5291f4 100644
--- a/arch/x86/xen/Makefile
+++ b/arch/x86/xen/Makefile
@@ -16,8 +16,8 @@ obj-y := enlighten.o multicalls.o \
mmu.o
obj-$(CONFIG_XEN_PV) += enlighten_pv.o setup.o mmu_pv.o p2m.o \
- apic.o pmu.o
-obj-$(CONFIG_XEN_PVHVM) += enlighten_hvm.o mmu_hvm.o
+ apic.o pmu.o suspend_pv.o
+obj-$(CONFIG_XEN_PVHVM) += enlighten_hvm.o mmu_hvm.o suspend_hvm.o
obj-$(CONFIG_XEN_PVH) += enlighten_pvh.o
obj-$(CONFIG_EVENT_TRACING) += trace.o
diff --git a/arch/x86/xen/suspend.c b/arch/x86/xen/suspend.c
index 37f634f..d6b1680 100644
--- a/arch/x86/xen/suspend.c
+++ b/arch/x86/xen/suspend.c
@@ -14,64 +14,6 @@
#include "mmu.h"
#include "pmu.h"
-static void xen_pv_pre_suspend(void)
-{
-#ifdef CONFIG_XEN_PV
- xen_mm_pin_all();
-
- xen_start_info->store_mfn = mfn_to_pfn(xen_start_info->store_mfn);
- xen_start_info->console.domU.mfn =
- mfn_to_pfn(xen_start_info->console.domU.mfn);
-
- BUG_ON(!irqs_disabled());
-
- HYPERVISOR_shared_info = &xen_dummy_shared_info;
- if (HYPERVISOR_update_va_mapping(fix_to_virt(FIX_PARAVIRT_BOOTMAP),
- __pte_ma(0), 0))
- BUG();
-#endif
-}
-
-static void xen_hvm_post_suspend(int suspend_cancelled)
-{
-#ifdef CONFIG_XEN_PVHVM
- int cpu;
- if (!suspend_cancelled)
- xen_hvm_init_shared_info();
- xen_callback_vector();
- xen_unplug_emulated_devices();
- if (xen_feature(XENFEAT_hvm_safe_pvclock)) {
- for_each_online_cpu(cpu) {
- xen_setup_runstate_info(cpu);
- }
- }
-#endif
-}
-
-static void xen_pv_post_suspend(int suspend_cancelled)
-{
-#ifdef CONFIG_XEN_PV
- xen_build_mfn_list_list();
-
- xen_setup_shared_info();
-
- if (suspend_cancelled) {
- xen_start_info->store_mfn =
- pfn_to_mfn(xen_start_info->store_mfn);
- xen_start_info->console.domU.mfn =
- pfn_to_mfn(xen_start_info->console.domU.mfn);
- } else {
-#ifdef CONFIG_SMP
- BUG_ON(xen_cpu_initialized_map == NULL);
- cpumask_copy(xen_cpu_initialized_map, cpu_online_mask);
-#endif
- xen_vcpu_restore();
- }
-
- xen_mm_unpin_all();
-#endif
-}
-
void xen_arch_pre_suspend(void)
{
if (xen_pv_domain())
diff --git a/arch/x86/xen/suspend_hvm.c b/arch/x86/xen/suspend_hvm.c
new file mode 100644
index 0000000..01afcad
--- /dev/null
+++ b/arch/x86/xen/suspend_hvm.c
@@ -0,0 +1,22 @@
+#include <linux/types.h>
+
+#include <xen/xen.h>
+#include <xen/features.h>
+#include <xen/interface/features.h>
+
+#include "xen-ops.h"
+
+void xen_hvm_post_suspend(int suspend_cancelled)
+{
+ int cpu;
+
+ if (!suspend_cancelled)
+ xen_hvm_init_shared_info();
+ xen_callback_vector();
+ xen_unplug_emulated_devices();
+ if (xen_feature(XENFEAT_hvm_safe_pvclock)) {
+ for_each_online_cpu(cpu) {
+ xen_setup_runstate_info(cpu);
+ }
+ }
+}
diff --git a/arch/x86/xen/suspend_pv.c b/arch/x86/xen/suspend_pv.c
new file mode 100644
index 0000000..496decca
--- /dev/null
+++ b/arch/x86/xen/suspend_pv.c
@@ -0,0 +1,44 @@
+#include <linux/types.h>
+
+#include <asm/xen/hypercall.h>
+#include <asm/xen/page.h>
+
+#include "xen-ops.h"
+
+void xen_pv_pre_suspend(void)
+{
+ xen_mm_pin_all();
+
+ xen_start_info->store_mfn = mfn_to_pfn(xen_start_info->store_mfn);
+ xen_start_info->console.domU.mfn =
+ mfn_to_pfn(xen_start_info->console.domU.mfn);
+
+ BUG_ON(!irqs_disabled());
+
+ HYPERVISOR_shared_info = &xen_dummy_shared_info;
+ if (HYPERVISOR_update_va_mapping(fix_to_virt(FIX_PARAVIRT_BOOTMAP),
+ __pte_ma(0), 0))
+ BUG();
+}
+
+void xen_pv_post_suspend(int suspend_cancelled)
+{
+ xen_build_mfn_list_list();
+
+ xen_setup_shared_info();
+
+ if (suspend_cancelled) {
+ xen_start_info->store_mfn =
+ pfn_to_mfn(xen_start_info->store_mfn);
+ xen_start_info->console.domU.mfn =
+ pfn_to_mfn(xen_start_info->console.domU.mfn);
+ } else {
+#ifdef CONFIG_SMP
+ BUG_ON(xen_cpu_initialized_map == NULL);
+ cpumask_copy(xen_cpu_initialized_map, cpu_online_mask);
+#endif
+ xen_vcpu_restore();
+ }
+
+ xen_mm_unpin_all();
+}
diff --git a/arch/x86/xen/xen-ops.h b/arch/x86/xen/xen-ops.h
index 2b162f6..e904415 100644
--- a/arch/x86/xen/xen-ops.h
+++ b/arch/x86/xen/xen-ops.h
@@ -148,4 +148,18 @@ __visible void xen_adjust_exception_frame(void);
extern int xen_panic_handler_init(void);
+#ifdef CONFIG_XEN_PV
+extern void xen_pv_pre_suspend(void);
+extern void xen_pv_post_suspend(int suspend_cancelled);
+#else
+static inline void xen_pv_pre_suspend(void) {}
+static inline void xen_pv_post_suspend(int suspend_cancelled) {}
+#endif
+
+#ifdef CONFIG_XEN_PVHVM
+extern void xen_hvm_post_suspend(int suspend_cancelled);
+#else
+static inline void xen_hvm_post_suspend(int suspend_cancelled) {}
+#endif
+
#endif /* XEN_OPS_H */
--
2.9.3
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
next prev parent reply other threads:[~2017-02-24 16:14 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20170224161440.2136-1-vkuznets@redhat.com>
2017-02-24 16:14 ` [PATCH 1/5] x86/xen: start untangling PV and PVHVM guest support code Vitaly Kuznetsov
2017-02-24 16:14 ` [PATCH 2/5] x86/xen: split smp.c for PV and PVHVM guests Vitaly Kuznetsov
2017-03-01 6:24 ` Juergen Gross
2017-02-24 16:14 ` [PATCH 3/5] x86/xen: put setup.c, mmu.c and p2m.c under CONFIG_XEN_PV Vitaly Kuznetsov
2017-03-01 6:25 ` Juergen Gross
2017-02-24 16:14 ` [PATCH 4/5] x86/xen: put setup.c, pmu.c and apic.c " Vitaly Kuznetsov
2017-02-24 16:14 ` Vitaly Kuznetsov [this message]
2017-03-01 7:14 ` [PATCH 5/5] x86/xen: split suspend.c for PV and PVHVM guests Juergen Gross
[not found] ` <20170224161440.2136-2-vkuznets@redhat.com>
2017-03-01 6:22 ` [PATCH 1/5] x86/xen: start untangling PV and PVHVM guest support code Juergen Gross
2017-03-01 9:38 ` Vitaly Kuznetsov
[not found] ` <20170224161440.2136-5-vkuznets@redhat.com>
2017-03-01 7:10 ` [PATCH 4/5] x86/xen: put setup.c, pmu.c and apic.c under CONFIG_XEN_PV Juergen Gross
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=20170224161440.2136-6-vkuznets@redhat.com \
--to=vkuznets@redhat.com \
--cc=boris.ostrovsky@oracle.com \
--cc=drjones@redhat.com \
--cc=jgross@suse.com \
--cc=linux-kernel@vger.kernel.org \
--cc=x86@kernel.org \
--cc=xen-devel@lists.xenproject.org \
/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;
as well as URLs for NNTP newsgroup(s).