• Alex Williamson's avatar
    vgaarb: Fix VGA decodes changes · 5c0f6ee7
    Alex Williamson authored
    When VGA decodes change we need to do a bit more evaluation of exactly what
    has changed.  We don't necessarily give up all the old owns resources and
    we need to account for resources with locks.  The new algorithm is: If
    something is added, update decodes.  If legacy resources were added and
    none were there before, we have a new participant.  If something is
    removed, update decodes.  If we previously owned it, we no longer own it.
    If it was previously locked, invalidate all locks and release it.  If
    legacy resources were removed and none are left, remove the participant
    from VGA arbitration.
    
    Previously we updated decodes, released ownership of everything that was
    previously decoded, ignored all locks, and went off looking for another
    device to transfer VGA to.  In a test case where Intel IGD removes only
    legacy VGA memory decoding, this left the arbiter switching to discrete
    graphics without actually disabling legacy VGA IO from the IGD.  As a
    bonus, we bumped up the count of VGA arbitration participants for no
    good reason.
    Signed-off-by: default avatarAlex Williamson <alex.williamson@redhat.com>
    Cc: Dave Airlie <airlied@redhat.com>
    Acked-by: default avatarDave Airlie <airlied@redhat.com>
    Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    [danvet: Kill now unused variables, reported by the 0-day kernel
    builtbot.]
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    5c0f6ee7
vgaarb.c 34.6 KB