• Ian Munsie's avatar
    powerpc: Add code to handle soft-disabled doorbells on server · fe9e1d54
    Ian Munsie authored
    This patch adds the logic to properly handle doorbells that come in when
    interrupts have been soft disabled and to replay them when interrupts
    are re-enabled:
    
    - masked_##_H##interrupt is modified to leave interrupts enabled when a
      doorbell has come in since doorbells are edge sensitive and as such
      won't be automatically re-raised.
    
    - __check_irq_replay now tests if a doorbell happened on book3s, and
      returns either 0xe80 or 0xa00 depending on whether we are the
      hypervisor or not.
    
    - restore_check_irq_replay now tests for the two possible server
      doorbell vector numbers to replay.
    
    - __replay_interrupt also adds tests for the two server doorbell vector
      numbers, and is modified to use a compare instruction rather than an
      andi. on the single bit difference between 0x500 and 0x900.
    
    The last two use a CPU feature section to avoid needlessly testing
    against the hypervisor vector if it is not the hypervisor, and vice
    versa.
    Signed-off-by: default avatarIan Munsie <imunsie@au1.ibm.com>
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    fe9e1d54
entry_64.S 27.3 KB