• Ville Syrjälä's avatar
    drm/i915: Fix unclaimed register access due to delayed VGA memory disable · ce352550
    Ville Syrjälä authored
    VGA registers live inside the power well on HSW, so in order to write
    the VGA MSR register we need the power well to be on.
    
    We really must write to the register to properly clear the
    VGA_MSR_MEM_EN enable bit, even if all VGA registers get zeroed when
    the power well is down. It seems that the implicit zeroing done by
    the power well is not enough to propagate the VGA_MSR_MEM_EN bit to
    whomever is actually responsible for the memory decode ranges.
    
    If we leave VGA memory decode enabled, and then turn off the power well,
    all VGA memory reads will return zeroes. But if we first disable VGA
    memory deocde and then turn off the power well, VGA memory reads
    return all ones, indicating that the access wasn't claimed by anyone.
    For the vga arbiter to function correctly the IGD must not claim the
    VGA memory accesses.
    
    Previously we were doing the VGA_MSR register access while the power well
    was excplicitly powered up during driver init. But ever since
    
     commit 6e1b4fda
     Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
     Date:   Thu Sep 5 20:40:52 2013 +0300
    
        drm/i915: Delay disabling of VGA memory until vgacon->fbcon handoff is done
    
    we delay the VGA memory disable until fbcon has initialized, and so
    there's a possibility that the power well got turned off during the
    fbcon modeset. Also vgacon_save_screen() will need the power well to be
    on to be able to read the VGA memory.
    
    So immediately after enabling the power well during init grab a refence
    for VGA purposes, and after all the VGA handling is done, release it.
    
    v2: Add intel_display_power_put() for the num_pipes==0 case
    Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Reviewed-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
    [danvet: Fix up the patch wiggle screw-up that I've done and which
    Paulo catched. Also polish spelling in the patch headline.]
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    ce352550
i915_dma.c 52.9 KB