• T
    tick: Provide a check for a forced broadcast pending · eaa907c5
    Thomas Gleixner 提交于
    On the CPU which gets woken along with the target CPU of the broadcast
    the following happens:
    
      deep_idle()
    			<-- spurious wakeup
      broadcast_exit()
        set forced bit
      
      enable interrupts
        
    			<-- Nothing happens
    
      disable interrupts
    
      broadcast_enter()
    			<-- Here we observe the forced bit is set
      deep_idle()
    
    Now after that the target CPU of the broadcast runs the broadcast
    handler and finds the other CPU in both the broadcast and the forced
    mask, sends the IPI and stuff gets back to normal.
    
    So it's not actually harmful, just more evidence for the theory, that
    hardware designers have access to very special drug supplies.
    
    Now there is no point in going back to deep idle just to wake up again
    right away via an IPI. Provide a check which allows the idle code to
    avoid the deep idle transition.
    Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
    Cc: LAK <linux-arm-kernel@lists.infradead.org>
    Cc: John Stultz <john.stultz@linaro.org>
    Cc: Arjan van de Veen <arjan@infradead.org>
    Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Tested-by: NSantosh Shilimkar <santosh.shilimkar@ti.com>
    Cc: Jason Liu <liu.h.jason@gmail.com>
    Link: http://lkml.kernel.org/r/20130306111537.565418308@linutronix.deSigned-off-by: NThomas Gleixner <tglx@linutronix.de>
    eaa907c5
tick-broadcast.c 19.9 KB