If we panic before calling init_xen_time then the "Rebooting in 5
seconds" delay ends up calling udelay which uses cntfrq before it has
been initialised resulting in a divide by zero.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
---
xen/arch/arm/setup.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 2076724..7b0a0f6 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -219,6 +219,8 @@ void __init start_xen(unsigned long boot_phys_offset,
console_init_preirq();
#endif
+ init_xen_time();
+
gic_init();
make_cpus_ready(cpus, boot_phys_offset);
@@ -227,8 +229,6 @@ void __init start_xen(unsigned long boot_phys_offset,
set_current((struct vcpu *)0xfffff000); /* debug sanity */
idle_vcpu[0] = current;
- init_xen_time();
-
setup_mm(atag_paddr, fdt_size);
/* Setup Hyp vector base */
--
1.7.9.1
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
seconds" delay ends up calling udelay which uses cntfrq before it has
been initialised resulting in a divide by zero.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
---
xen/arch/arm/setup.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 2076724..7b0a0f6 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -219,6 +219,8 @@ void __init start_xen(unsigned long boot_phys_offset,
console_init_preirq();
#endif
+ init_xen_time();
+
gic_init();
make_cpus_ready(cpus, boot_phys_offset);
@@ -227,8 +229,6 @@ void __init start_xen(unsigned long boot_phys_offset,
set_current((struct vcpu *)0xfffff000); /* debug sanity */
idle_vcpu[0] = current;
- init_xen_time();
-
setup_mm(atag_paddr, fdt_size);
/* Setup Hyp vector base */
--
1.7.9.1
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel