[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 |