• Daniel Vetter's avatar
    drm/i915: fix locking around ironlake_enable|disable_display_irq · 4bc9d430
    Daniel Vetter authored
    The haswell unclaimed register handling code forgot to take the
    spinlock. Since this is in the context of the non-rentrant interupt
    handler and we only have one interrupt handler it is sufficient to
    just grab the spinlock - we do not need to exclude any other
    interrupts from running on the same cpu.
    
    To prevent such gaffles in the future sprinkle assert_spin_locked over
    these functions. Unfornately this requires us to hold the spinlock in
    the ironlake postinstall hook where it is not strictly required:
    Currently that is run in single-threaded context and with userspace
    exlcuded from running concurrent ioctls. Add a comment explaining
    this.
    
    v2: ivb_can_enable_err_int also needs to be protected by the spinlock.
    To ensure this won't happen in the future again also sprinkle a
    spinlock assert in there.
    
    v3: Kill the 2nd call to ivb_can_enable_err_int I've accidentally left
    behind, spotted by Paulo.
    
    Cc: Paulo Zanoni <przanoni@gmail.com>
    Reviewed-by: default avatarPaulo Zanoni <przanoni@gmail.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    4bc9d430
i915_irq.c 103 KB