• Daniel Vetter's avatar
    drm/i915: fix up ilk drps/ips locking · 9270388e
    Daniel Vetter authored
    We change the drps/ips sw/hw state from different callers: Our own irq
    handler, the external intel-ips module and from process context. Most
    of these callers don't take any lock at all.
    
    Protect everything by making the mchdev_lock irqsave and grabbing it in
    all relevant callsites. Note that we have to convert a few sleeps in the
    drps enable/disable code to delays, but alas, I'm not volunteering to
    restructure the code around a few work items.
    
    For paranoia add a spin_locked assert to ironlake_set_drps, too.
    
    v2: Move one access inside the lock protection. Caught by the
    dev_priv->ips mass-rename ...
    
    v3: Resolve rebase conflict.
    Reviewed-by: default avatarDamien Lespiau <damien.lespiau@intel.com>
    Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    9270388e
intel_pm.c 114 KB