|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] arm/timer: fix panic when booting with DT
commit 1bd52e1fd66c47af690124d74d11ccb271c96f6b
Author: Shannon Zhao <shannon.zhao@xxxxxxxxxx>
AuthorDate: Fri Mar 4 16:45:52 2016 +0100
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Fri Mar 4 16:45:52 2016 +0100
arm/timer: fix panic when booting with DT
While to support ACPI, patch "arm/acpi: Parse GTDT to initialize timer"
refactors the functions preinit_xen_time and init_xen_time. But it
wrongly moves the platform_get_irq from init_xen_time to
preinit_dt_xen_time and this will cause booting failure.
So move platform_get_irq back to init_xen_time to fix it.
Signed-off-by: Shannon Zhao <shannon.zhao@xxxxxxxxxx>
Reviewed-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
---
xen/arch/arm/time.c | 30 +++++++++++++++++++-----------
1 file changed, 19 insertions(+), 11 deletions(-)
diff --git a/xen/arch/arm/time.c b/xen/arch/arm/time.c
index 5f8f974..7dae28b 100644
--- a/xen/arch/arm/time.c
+++ b/xen/arch/arm/time.c
@@ -119,7 +119,6 @@ static void __init preinit_dt_xen_time(void)
};
int res;
u32 rate;
- unsigned int i;
timer = dt_find_matching_node(NULL, timer_ids);
if ( !timer )
@@ -133,16 +132,6 @@ static void __init preinit_dt_xen_time(void)
cpu_khz = rate / 1000;
timer_dt_clock_frequency = rate;
}
-
- /* Retrieve all IRQs for the timer */
- for ( i = TIMER_PHYS_SECURE_PPI; i < MAX_TIMER_PPI; i++ )
- {
- res = platform_get_irq(timer, i);
-
- if ( res < 0 )
- panic("Timer: Unable to retrieve IRQ %u from the device tree", i);
- timer_irq[i] = res;
- }
}
void __init preinit_xen_time(void)
@@ -165,9 +154,28 @@ void __init preinit_xen_time(void)
boot_count = READ_SYSREG64(CNTPCT_EL0);
}
+static void __init init_dt_xen_time(void)
+{
+ int res;
+ unsigned int i;
+
+ /* Retrieve all IRQs for the timer */
+ for ( i = TIMER_PHYS_SECURE_PPI; i < MAX_TIMER_PPI; i++ )
+ {
+ res = platform_get_irq(timer, i);
+
+ if ( res < 0 )
+ panic("Timer: Unable to retrieve IRQ %u from the device tree", i);
+ timer_irq[i] = res;
+ }
+}
+
/* Set up the timer on the boot CPU (late init function) */
int __init init_xen_time(void)
{
+ if ( acpi_disabled )
+ init_dt_xen_time();
+
/* Check that this CPU supports the Generic Timer interface */
if ( !cpu_has_gentimer )
panic("CPU does not support the Generic Timer v1 interface");
--
generated by git-patchbot for /home/xen/git/xen.git#master
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |