• Gabor Juhos's avatar
    avr32: fix clockevents kernel warning · 1b0135b5
    Gabor Juhos authored
    Since commit 01426478
    (avr32: Use generic idle loop) the kernel throws the
    following warning on avr32:
    
      WARNING: at 900322e4 [verbose debug info unavailable]
      Modules linked in:
      CPU: 0 PID: 0 Comm: swapper Not tainted 3.12.0-rc2 #117
      task: 901c3ecc ti: 901c0000 task.ti: 901c0000
      PC is at cpu_idle_poll_ctrl+0x1c/0x38
      LR is at comparator_mode+0x3e/0x40
      pc : [<900322e4>]    lr : [<90014882>]    Not tainted
      sp : 901c1f74  r12: 00000000  r11: 901c74a0
      r10: 901d2510  r9 : 00000001  r8 : 901db4de
      r7 : 901c74a0  r6 : 00000001  r5 : 00410020  r4 : 901db574
      r3 : 00410024  r2 : 90206fe0  r1 : 00000000  r0 : 007f0000
      Flags: qvnzc
      Mode bits: hjmde....G
      CPU Mode: Supervisor
      Call trace:
       [<90039ede>] clockevents_set_mode+0x16/0x2e
       [<90039f00>] clockevents_shutdown+0xa/0x1e
       [<9003a078>] clockevents_exchange_device+0x58/0x70
       [<9003a78c>] tick_check_new_device+0x38/0x54
       [<9003a1a2>] clockevents_register_device+0x32/0x90
       [<900035c4>] time_init+0xa8/0x108
       [<90000520>] start_kernel+0x128/0x23c
    
    When the 'avr32_comparator' clockevent device is registered,
    the clockevent core sets the mode of that clockevent device
    to CLOCK_EVT_MODE_SHUTDOWN. Due to this, the 'comparator_mode'
    function calls the 'cpu_idle_poll_ctrl' to disables idle poll.
    This results in the aforementioned warning because the polling
    is not enabled yet.
    
    Change the code to only disable idle poll if it is enabled by
    the same function to avoid the warning.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarGabor Juhos <juhosg@openwrt.org>
    Acked-by: default avatarHans-Christian Egtvedt <egtvedt@samfundet.no>
    1b0135b5
time.c 3.98 KB