• Alex Williamson's avatar
    i915: Update VGA arbiter support for newer devices · 81b5c7bc
    Alex Williamson authored
    This is intended to add VGA arbiter support for Intel HD graphics on
    Core processors.  The old GMCH registers no longer exist, so even
    though it appears that i915 participates in VGA arbitration, it doesn't
    work.  On Intel HD graphics we already attempt to disable VGA regions
    of the device.  This makes registering as a VGA client unnecessary since
    we don't intend to operate differently depending on how many VGA devices
    are present.  We can disable VGA memory regions by clearing the memory
    enable bit in the VGA MSR.  That only leaves VGA IO, which we update
    the VGA arbiter to know that we don't participate in VGA memory
    arbitration.  We also add a hook on unload to re-enable memory and
    reinstate VGA memory arbitration.
    
    v3: Use explicit LEGACY_IO | LEGACY_MEM when restoring rather than
        LEGACY_MASK, per Ville's comments.
    
    v2: I915_READ/WRITE accessors don't work in i915_disable_vga, use inb/outb
        directly.  Also, on the driver unbind VGA enable path, acquire legacy
        IO to re-enable VGA memory.  Correct comment.
    Signed-off-by: default avatarAlex Williamson <alex.williamson@redhat.com>
    Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    [danvet: Add patch changelog. Also squash in a fixup to have a dummy
    static inline for vga_set_legacy_decoding for CONFIG_VGA_ARB=n as
    reported by the 0-day kernel build bot.]
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    
    fixup 2
    81b5c7bc
i915_dma.c 52.5 KB