[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] xen/arm: Assertion 'timer->status >= TIMER_STATUS_inactive' failed at timer.c:279



Hi Dario,

A couple of people have been reported Xen crash on the ARM64
Foundation Model [1] with recent unstable.

The crash seems to happen when Xen fails to bring up secondary CPUs
(see stack trace below).

From my understanding, csched_free_pdata is trying to kill the
timer spc->ticker. However the status of this timer is
TIMER_STATUS_invalid.

This is because csched_init_pdata has set a deadline for the
timer (set_timer) and the softirq to schedule the timer has
not yet happen (indeed Xen is still in early boot).

I am not sure how to fix this issue. How will you recommend
to fix it?

For your information the bisector fingered the following
commit:

commit 64269d936584c29de951c6613bf618640832b9a6
Author: Dario Faggioli <dario.faggioli@xxxxxxxxxx>
Date:   Fri Apr 8 00:03:03 2016 +0200

    sched: implement .init_pdata in Credit, Credit2 and RTDS
    
    In fact, if a scheduler needs per-pCPU information,
    that needs to be initialized appropriately. So, we take
    the code that is performing initializations from (right
    now) .alloc_pdata, and use it for .init_pdata, leaving
    only actualy allocations in the former, if any (which
    is the case in RTDS and Credit1).
    
    On the other hand, in Credit2, since we don't really
    need any per-pCPU data allocation, everything that was
    being done in .alloc_pdata, is now done in .init_pdata.
    And the fact that now .alloc_pdata can be left undefined,
    allows us to just get rid of it.
    
    Still for Credit2, the fact that .init_pdata is called
    during CPU_STARTING (rather than CPU_UP_PREPARE) kills
    the need for the scheduler to setup a similar callback
    itself, simplifying the code.
    
    And thanks to such simplification, it is now also ok to
    move some of the logic meant at double checking that a
    cpu was (or was not) initialized, into ASSERTS (rather
    than an if() and a BUG_ON).
    
    Signed-off-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx>
    Reviewed-by: Meng Xu <mengxu@xxxxxxxxxxxxx>
    Reviewed-by: George Dunlap <george.dunlap@xxxxxxxxxxxxx>

(XEN) Assertion 'timer->status >= TIMER_STATUS_inactive' failed at timer.c:279
(XEN) ----[ Xen-4.7-unstable  arm64  debug=y  Not tainted ]----
(XEN) CPU:    0
(XEN) PC:     000000000022e304 timer.c#active_timer+0x8/0x24
(XEN) LR:     000000000022f624
(XEN) SP:     00000000002bfcd0
(XEN) CPSR:   600002c9 MODE:64-bit EL2h (Hypervisor, handler)
(XEN)      X0: 0000000000000000  X1: 0000000000000003  X2: 0000000000000000
(XEN)      X3: 0000000000120012  X4: 0000000000000010  X5: 0000000000000080
(XEN)      X6: 0000000000000004  X7: 0000000000000001  X8: 00000000fffffffd
(XEN)      X9: 000000000000000a X10: 00000000002bfb08 X11: 0000000000000033
(XEN)     X12: 0000000000000001 X13: 0000000000263dc0 X14: 0000000000000020
(XEN)     X15: 0000000000000000 X16: 0000000000000000 X17: 0000000000000000
(XEN)     X18: 0000000000000000 X19: 000080017ffcad68 X20: 000000000030bb00
(XEN)     X21: 00000000000002c0 X22: 0000000000000000 X23: 000000000030bb00
(XEN)     X24: 0000000000306000 X25: 000080017ffcad90 X26: 000000000000ffff
(XEN)     X27: 0000000900000000 X28: 0000000000000002  FP: 00000000002bfcd0
(XEN) 
(XEN)   VTCR_EL2: 80000000
(XEN)  VTTBR_EL2: 0000000000000000
(XEN) 
(XEN)  SCTLR_EL2: 30cd183d
(XEN)    HCR_EL2: 000000000038643f
(XEN)  TTBR0_EL2: 00000000feef6000
(XEN) 
(XEN)    ESR_EL2: f2000001
(XEN)  HPFAR_EL2: 0000000000000000
(XEN)    FAR_EL2: 0000000000000000
(XEN) 
(XEN) Xen stack trace from sp=00000000002bfcd0:
(XEN)    00000000002bfd20 00000000002208c0 000080017ffca240 0000000000000003
(XEN)    000080017ffcad50 0000000000000240 000080017ffca2a8 0000000000000003
(XEN)    00000000002bfe18 0000000080000000 00000000002bfd60 0000000000227a18
(XEN)    0000000000000003 00000000002807b0 000080017ff9c0c0 0000000000008002
(XEN)    0000000000008000 0000000000000003 00000000002bfd90 0000000000219944
(XEN)    000000000027e318 000000000027e310 000000000027e008 0000000000008002
(XEN)    00000000002bfde0 00000000002015fc 00000000fffffffd 0000000000000000
(XEN)    0000000000000003 0000000000000003 000000000027adb8 0000000000000004
(XEN)    00000000002a80a8 0000000080000000 00000000002bfe20 000000000028f7c0
(XEN)    0000000000000003 000000000027ea00 0000000000306450 0000000000280ab0
(XEN)    0000000900000000 000000000027e000 0000000000000000 00000000810021d8
(XEN)    0000000081002000 0000000080e02000 0000000088000000 0000000000000000
(XEN)    0000000000000000 0000000000000000 0000000000000001 0000000000000000
(XEN)    0000000000000000 0000000080002174 0000000000000000 0000000088000000
(XEN)    0000000000002106 00000000ff000000 0000000000000000 0000000000000000
(XEN)    0000000000000000 0000000000000000 0000000000000000 0000000000000000
(XEN)    0000000000000000 0000000000000000 0000000000000000 0000000000000000
(XEN)    0000000000000000 0000000000000000 0000000000000000 0000000000000000
(XEN)    0000000000000000 0000000000000000 0000000000000000 0000000000000000
(XEN)    0000000000000000 0000000000000000 0000000000000000 0000000000000000
(XEN)    0000000000000000 0000000000000000 0000000000000000 0000000000000000
(XEN)    0000000000000000 0000000000000000 0000000000000000 0000000000000000
(XEN)    0000000000000000 0000000000000000 0000000000000000 0000000000000000
(XEN)    0000000000000000 0000000000000000 0000000000000000 0000000000000000
(XEN)    0000000000000000 0000000000000000 0000000000000000 0000000000000000
(XEN)    0000000000000000 0000000000000000
(XEN) Xen call trace:
(XEN)    [<000000000022e304>] timer.c#active_timer+0x8/0x24 (PC)
(XEN)    [<000000000022f624>] kill_timer+0x108/0x2e0 (LR)
(XEN)    [<00000000002208c0>] sched_credit.c#csched_free_pdata+0xd8/0x114
(XEN)    [<0000000000227a18>] schedule.c#cpu_schedule_callback+0xc0/0x12c
(XEN)    [<0000000000219944>] notifier_call_chain+0x78/0x9c
(XEN)    [<00000000002015fc>] cpu_up+0x104/0x130
(XEN)    [<000000000028f7c0>] start_xen+0xaf8/0xce0
(XEN)    [<00000000810021d8>] 00000000810021d8
(XEN) 
(XEN) 
(XEN) ****************************************
(XEN) Panic on CPU 0:
(XEN) Assertion 'timer->status >= TIMER_STATUS_inactive' failed at timer.c:279
(XEN) ****************************************
(XEN) 
(XEN) Reboot in five seconds...

Regards,

[1] http://www.arm.com/products/tools/models/fast-models/foundation-model.php

-- 
Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.