Skip to content
  • Chris Metcalf's avatar
    arch/tile: stop disabling INTCTRL_1 interrupts during hypervisor downcalls · b2ce2bda
    Chris Metcalf authored
    
    
    The problem was that this could lead to IPIs being disabled during
    the softirq processing after a hypervisor downcall (e.g. for I/O),
    since both IPI and device interrupts use the INCTRL_1 downcall mechanism.
    When this happened at the wrong time, it could lead to deadlock.
    
    Luckily, we were already maintaining the per-interrupt state we need,
    and using it in the proper way in the hypervisor, so all we had to do
    was to change Linux to stop blocking downcall interrupts for the entire
    length of the downcall.  (Now they're blocked while we're executing the
    downcall routine itself, but not while we're executing any subsequent
    softirq routines.)  The hypervisor is doing a very small amount of
    work it no longer needs to do (masking INTCTRL_1 on entry to the client
    interrupt routine), but doing so means that older versions of Tile Linux
    will continue to work with a current hypervisor, so that seems reasonable.
    
    Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
    b2ce2bda