mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 0/3] Xen ARM fixes for 3.10-RC1
@ 2013-05-08 12:10 Stefano Stabellini
  2013-05-08 12:11 ` [PATCH 1/3] xen/arm: initialize pm functions later Stefano Stabellini
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Stefano Stabellini @ 2013-05-08 12:10 UTC (permalink / raw)
  To: xen-devel
  Cc: linux-kernel, linux-arm-kernel, Stefano Stabellini,
	Konrad Rzeszutek Wilk, Julien Grall, Ian Campbell

Hi all,
this small patch series fixes few Xen on ARM problems I found with more
testing:

- in order to work in dom0, we need to delay the initilization of the pm
  functions after arch_init;

- VCPUOP_register_vcpu_info needs to be executed by each online cpu
  separately;

- VCPUOP_register_vcpu_info is not actually supposed to fail.



Stefano Stabellini (3):
      xen/arm: initialize pm functions later
      xen/arm: do not handle VCPUOP_register_vcpu_info failures
      xen: rename xen_secondary_init and run it on every online cpu

 arch/arm/xen/enlighten.c |   34 +++++++++++++++-------------------
 1 files changed, 15 insertions(+), 19 deletions(-)

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/3] xen/arm: initialize pm functions later
  2013-05-08 12:10 [PATCH 0/3] Xen ARM fixes for 3.10-RC1 Stefano Stabellini
@ 2013-05-08 12:11 ` Stefano Stabellini
  2013-05-08 12:11 ` [PATCH 2/3] xen/arm: do not handle VCPUOP_register_vcpu_info failures Stefano Stabellini
  2013-05-08 12:11 ` [PATCH 3/3] xen: rename xen_secondary_init and run it on every online cpu Stefano Stabellini
  2 siblings, 0 replies; 5+ messages in thread
From: Stefano Stabellini @ 2013-05-08 12:11 UTC (permalink / raw)
  To: xen-devel
  Cc: linux-kernel, linux-arm-kernel, Stefano.Stabellini, konrad.wilk,
	julien.grall, Ian.Campbell, Stefano Stabellini

If we are running in dom0, we have to wait for the arch specific code to
complete the initialization in order for us to successfully reset the
power_off and pm_restart functions.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
---
 arch/arm/xen/enlighten.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/arch/arm/xen/enlighten.c b/arch/arm/xen/enlighten.c
index d30042e..83d13b0 100644
--- a/arch/arm/xen/enlighten.c
+++ b/arch/arm/xen/enlighten.c
@@ -272,12 +272,18 @@ static int __init xen_guest_init(void)
 	if (!xen_initial_domain())
 		xenbus_probe(NULL);
 
+	return 0;
+}
+core_initcall(xen_guest_init);
+
+static int __init xen_pm_init(void)
+{
 	pm_power_off = xen_power_off;
 	arm_pm_restart = xen_restart;
 
 	return 0;
 }
-core_initcall(xen_guest_init);
+subsys_initcall(xen_pm_init);
 
 static irqreturn_t xen_arm_callback(int irq, void *arg)
 {
-- 
1.7.2.5


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 2/3] xen/arm: do not handle VCPUOP_register_vcpu_info failures
  2013-05-08 12:10 [PATCH 0/3] Xen ARM fixes for 3.10-RC1 Stefano Stabellini
  2013-05-08 12:11 ` [PATCH 1/3] xen/arm: initialize pm functions later Stefano Stabellini
@ 2013-05-08 12:11 ` Stefano Stabellini
  2013-05-08 12:17   ` Ian Campbell
  2013-05-08 12:11 ` [PATCH 3/3] xen: rename xen_secondary_init and run it on every online cpu Stefano Stabellini
  2 siblings, 1 reply; 5+ messages in thread
From: Stefano Stabellini @ 2013-05-08 12:11 UTC (permalink / raw)
  To: xen-devel
  Cc: linux-kernel, linux-arm-kernel, Stefano.Stabellini, konrad.wilk,
	julien.grall, Ian.Campbell, Stefano Stabellini

We expect VCPUOP_register_vcpu_info to succeed, do not try to handle
failures.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
---
 arch/arm/xen/enlighten.c |   11 ++++-------
 1 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/arch/arm/xen/enlighten.c b/arch/arm/xen/enlighten.c
index 83d13b0..519acf9 100644
--- a/arch/arm/xen/enlighten.c
+++ b/arch/arm/xen/enlighten.c
@@ -165,13 +165,10 @@ static int __init xen_secondary_init(unsigned int cpu)
 	info.offset = offset_in_page(vcpup);
 
 	err = HYPERVISOR_vcpu_op(VCPUOP_register_vcpu_info, cpu, &info);
-	if (err) {
-		pr_debug("register_vcpu_info failed: err=%d\n", err);
-	} else {
-		/* This cpu is using the registered vcpu info, even if
-		   later ones fail to. */
-		per_cpu(xen_vcpu, cpu) = vcpup;
-	}
+	if (err)
+		BUG();
+	per_cpu(xen_vcpu, cpu) = vcpup;
+
 	return 0;
 }
 
-- 
1.7.2.5


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 3/3] xen: rename xen_secondary_init and run it on every online cpu
  2013-05-08 12:10 [PATCH 0/3] Xen ARM fixes for 3.10-RC1 Stefano Stabellini
  2013-05-08 12:11 ` [PATCH 1/3] xen/arm: initialize pm functions later Stefano Stabellini
  2013-05-08 12:11 ` [PATCH 2/3] xen/arm: do not handle VCPUOP_register_vcpu_info failures Stefano Stabellini
@ 2013-05-08 12:11 ` Stefano Stabellini
  2 siblings, 0 replies; 5+ messages in thread
From: Stefano Stabellini @ 2013-05-08 12:11 UTC (permalink / raw)
  To: xen-devel
  Cc: linux-kernel, linux-arm-kernel, Stefano.Stabellini, konrad.wilk,
	julien.grall, Ian.Campbell, Stefano Stabellini

Rename xen_secondary_init to xen_percpu_init.
Run xen_percpu_init on the each online cpu, reuse the current on_each_cpu call.
Merge xen_percpu_enable_events into xen_percpu_init.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
---
 arch/arm/xen/enlighten.c |   15 ++++-----------
 1 files changed, 4 insertions(+), 11 deletions(-)

diff --git a/arch/arm/xen/enlighten.c b/arch/arm/xen/enlighten.c
index 519acf9..ee86bfa 100644
--- a/arch/arm/xen/enlighten.c
+++ b/arch/arm/xen/enlighten.c
@@ -152,11 +152,12 @@ int xen_unmap_domain_mfn_range(struct vm_area_struct *vma,
 }
 EXPORT_SYMBOL_GPL(xen_unmap_domain_mfn_range);
 
-static int __init xen_secondary_init(unsigned int cpu)
+static void __init xen_percpu_init(void *unused)
 {
 	struct vcpu_register_vcpu_info info;
 	struct vcpu_info *vcpup;
 	int err;
+	int cpu = get_cpu();
 
 	pr_info("Xen: initializing cpu%d\n", cpu);
 	vcpup = per_cpu_ptr(xen_vcpu_info, cpu);
@@ -169,7 +170,7 @@ static int __init xen_secondary_init(unsigned int cpu)
 		BUG();
 	per_cpu(xen_vcpu, cpu) = vcpup;
 
-	return 0;
+	enable_percpu_irq(xen_events_irq, 0);
 }
 
 static void xen_restart(char str, const char *cmd)
@@ -205,7 +206,6 @@ static int __init xen_guest_init(void)
 	const char *version = NULL;
 	const char *xen_prefix = "xen,xen-";
 	struct resource res;
-	int i;
 
 	node = of_find_compatible_node(NULL, NULL, "xen,xen");
 	if (!node) {
@@ -262,8 +262,6 @@ static int __init xen_guest_init(void)
 			                       sizeof(struct vcpu_info));
 	if (xen_vcpu_info == NULL)
 		return -ENOMEM;
-	for_each_online_cpu(i)
-		xen_secondary_init(i);
 
 	gnttab_init();
 	if (!xen_initial_domain())
@@ -288,11 +286,6 @@ static irqreturn_t xen_arm_callback(int irq, void *arg)
 	return IRQ_HANDLED;
 }
 
-static __init void xen_percpu_enable_events(void *unused)
-{
-	enable_percpu_irq(xen_events_irq, 0);
-}
-
 static int __init xen_init_events(void)
 {
 	if (!xen_domain() || xen_events_irq < 0)
@@ -306,7 +299,7 @@ static int __init xen_init_events(void)
 		return -EINVAL;
 	}
 
-	on_each_cpu(xen_percpu_enable_events, NULL, 0);
+	on_each_cpu(xen_percpu_init, NULL, 0);
 
 	return 0;
 }
-- 
1.7.2.5


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/3] xen/arm: do not handle VCPUOP_register_vcpu_info failures
  2013-05-08 12:11 ` [PATCH 2/3] xen/arm: do not handle VCPUOP_register_vcpu_info failures Stefano Stabellini
@ 2013-05-08 12:17   ` Ian Campbell
  0 siblings, 0 replies; 5+ messages in thread
From: Ian Campbell @ 2013-05-08 12:17 UTC (permalink / raw)
  To: Stefano Stabellini
  Cc: xen-devel, linux-kernel, linux-arm-kernel, konrad.wilk, Julien Grall

On Wed, 2013-05-08 at 13:11 +0100, Stefano Stabellini wrote:
> We expect VCPUOP_register_vcpu_info to succeed, do not try to handle
> failures.
> 
> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> ---
>  arch/arm/xen/enlighten.c |   11 ++++-------
>  1 files changed, 4 insertions(+), 7 deletions(-)
> 
> diff --git a/arch/arm/xen/enlighten.c b/arch/arm/xen/enlighten.c
> index 83d13b0..519acf9 100644
> --- a/arch/arm/xen/enlighten.c
> +++ b/arch/arm/xen/enlighten.c
> @@ -165,13 +165,10 @@ static int __init xen_secondary_init(unsigned int cpu)
>  	info.offset = offset_in_page(vcpup);
>  
>  	err = HYPERVISOR_vcpu_op(VCPUOP_register_vcpu_info, cpu, &info);
> -	if (err) {
> -		pr_debug("register_vcpu_info failed: err=%d\n", err);
> -	} else {
> -		/* This cpu is using the registered vcpu info, even if
> -		   later ones fail to. */
> -		per_cpu(xen_vcpu, cpu) = vcpup;
> -	}
> +	if (err)
> +		BUG();

AKA BUG_ON(err);

Acked-by: Ian Campbell <ian.campbell@citrix.com>

> +	per_cpu(xen_vcpu, cpu) = vcpup;
> +
>  	return 0;
>  }
>  



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-05-08 12:17 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-05-08 12:10 [PATCH 0/3] Xen ARM fixes for 3.10-RC1 Stefano Stabellini
2013-05-08 12:11 ` [PATCH 1/3] xen/arm: initialize pm functions later Stefano Stabellini
2013-05-08 12:11 ` [PATCH 2/3] xen/arm: do not handle VCPUOP_register_vcpu_info failures Stefano Stabellini
2013-05-08 12:17   ` Ian Campbell
2013-05-08 12:11 ` [PATCH 3/3] xen: rename xen_secondary_init and run it on every online cpu Stefano Stabellini

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®