• W
    drm/i915/gvt: add RING_INSTDONE and SC_INSTDONE mmio handler in GVT-g · 23ce0592
    Weinan Li 提交于
    kernel hangcheck needs to check RING_INSTDONE and SC_INSTDONE registers'
    state to know if hardware is still running. In GVT-g environment, we need
    to emulate these registers changing for all the guests although they are
    not render owner. Here we return the physical state for all the guests,
    then if INSTDONE is changing guest can know hardware is still running
    although its workload is pending.
    
    Read INSTDONE isn't one correct way to know if guest trigger gfx reset,
    especially with Linux guest, it will read ACTH first, then check INSTDONE
    and SUBSLICE registers to check if hardware is still running, at last
    trigger gfx reset when it finds all the registers is frozen. In Windows
    guest, read INSTDONE usually happens when OS detect TDR.
    
    With the difference between Windows and Linux guest, "disable_warn_untrack"
    may let debug log run into wrong state(Linux guest trigger hangcheck
    with no ACTHD changed, then check INSTDONE), but actually there is no TDR
    happened.
    
    The new policy is always WARN with untrack MMIO r/w. Bad effect is many
    noisy untrack mmio warning logs exist when real TDR happen. Even so you can
    control the log output or not by setting the debug mask bit.
    
    v2: remove log in instdone_mmio_read
    Suggested-by: NZhenyu Wang <zhenyuw@linux.intel.com>
    Cc: Zhenyu Wang <zhenyuw@linux.intel.com>
    Signed-off-by: NWeinan Li <weinan.z.li@intel.com>
    Signed-off-by: NZhenyu Wang <zhenyuw@linux.intel.com>
    23ce0592
handlers.c 93.0 KB