Skip to contentSkip to conversation

ARM: xen: only set pm function ptrs for Xen guests

PATCH In review Rob Herring 2 participants 3 messages Aug 29, 2013 – Sep 5, 2013

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH v3 1/1 ARM: xen: only set pm function ptrs for Xen guests

From: Rob Herring <[email protected]>

xen_pm_init was unconditionally setting pm_power_off and arm_pm_restart function pointers. This breaks multi-platform kernels. Make this conditional on running as a Xen guest and make it a late_initcall to ensure it is setup after platform code for Dom0.

Cc Stefano Stabellini <[email protected]>
---
 arch/arm/xen/enlighten.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
arch/arm/xen/enlighten.c +4 -1
index 8a6295c..7071fca 100644
@@ -273,12 +273,15 @@ core_initcall(xen_guest_init);
 
 static int __init xen_pm_init(void)
 {
+	if (!xen_domain())
+		return -ENODEV;
+
 	pm_power_off = xen_power_off;
 	arm_pm_restart = xen_restart;
 
 	return 0;
 }
-subsys_initcall(xen_pm_init);
+late_initcall(xen_pm_init);
 
 static irqreturn_t xen_arm_callback(int irq, void *arg)
 {
Signature · 1 line
1.8.1.2
Acked-by on v3 1/1
#1 lore raw
Quoted 9 lines · Rob Herring

From: Rob Herring <[email protected]>

xen_pm_init was unconditionally setting pm_power_off and arm_pm_restart function pointers. This breaks multi-platform kernels. Make this conditional on running as a Xen guest and make it a late_initcall to ensure it is setup after platform code for Dom0.

Cc Stefano Stabellini <[email protected]>

Added to my queue.

Quoted 27 lines
 arch/arm/xen/enlighten.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
arch/arm/xen/enlighten.c +4 -1
index 8a6295c..7071fca 100644
@@ -273,12 +273,15 @@ core_initcall(xen_guest_init);
 
 static int __init xen_pm_init(void)
 {
+	if (!xen_domain())
+		return -ENODEV;
+
 	pm_power_off = xen_power_off;
 	arm_pm_restart = xen_restart;
 
 	return 0;
 }
-subsys_initcall(xen_pm_init);
+late_initcall(xen_pm_init);
 
 static irqreturn_t xen_arm_callback(int irq, void *arg)
 {
Signature · 1 line
1.8.1.2
#2 lore raw
Quoted 8 lines · Stefano Stabellini
Quoted 7 lines · Rob Herring

From: Rob Herring <[email protected]>

xen_pm_init was unconditionally setting pm_power_off and arm_pm_restart function pointers. This breaks multi-platform kernels. Make this conditional on running as a Xen guest and make it a late_initcall to ensure it is setup after platform code for Dom0.

Quoted 7 lines
Quoted 2 lines
Cc Stefano Stabellini <[email protected]>

Added to my queue.

FYI we are going to send a pull request for this patch in the 3.12 merge window, asking for a backport to 3.11.

Quoted 29 lines
Quoted 28 lines
 arch/arm/xen/enlighten.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
arch/arm/xen/enlighten.c +4 -1
index 8a6295c..7071fca 100644
@@ -273,12 +273,15 @@ core_initcall(xen_guest_init);
 
 static int __init xen_pm_init(void)
 {
+	if (!xen_domain())
+		return -ENODEV;
+
 	pm_power_off = xen_power_off;
 	arm_pm_restart = xen_restart;
 
 	return 0;
 }
-subsys_initcall(xen_pm_init);
+late_initcall(xen_pm_init);
 
 static irqreturn_t xen_arm_callback(int irq, void *arg)
 {
Signature · 1 line
1.8.1.2