• Tvrtko Ursulin's avatar
    drm/i915/icl: Fix context RPCS programming · b212f0a4
    Tvrtko Ursulin authored
    There are two issues with the current RPCS programming for Icelake:
    
    Expansion of the slice count bitfield has been missed, as well as the
    required programming workaround for the subslice count bitfield size
    limitation.
    
    1)
    
    Bitfield width for configuring the active slice count has grown so we need
    to program the GEN8_R_PWR_CLK_STATE accordingly.
    
    Current code was always requesting eight times the number of slices (due
    writing to a bitfield starting three bits higher than it should). These
    requests were luckily a) capped by the hardware to the available number of
    slices, and b) we haven't yet exported the code to ask for reduced slice
    configurations.
    
    Due both of the above there was no impact from this incorrect programming
    but we should still fix it.
    
    2)
    
    Due subslice count bitfield being only three bits wide and furthermore
    capped to a maximum documented value of four, special programming
    workaround is needed to enable more than four subslices.
    
    With this programming driver has to consider the GT configuration as
    2x4x8, while the hardware internally translates this to 1x8x8.
    
    A limitation stemming from this is that either a subslice count between
    one and four can be selected, or a subslice count equaling the total
    number of subslices in all selected slices. In other words, odd subslice
    counts greater than four are impossible, as are odd subslice counts
    greater than a single slice subslice count.
    
    This also had no impact in the current code base due breakage from 1)
    always reqesting more than one slice.
    
    While fixing this we also add some asserts to flag up any future bitfield
    overflows.
    
    v2:
     * Use a local in all branches for clarity. (Lionel)
    Signed-off-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
    Bspec: 12247
    Reported-by: tony.ye@intel.com
    Suggested-by: default avatarLionel Landwerlin <lionel.g.landwerlin@intel.com>
    Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
    Cc: tony.ye@intel.com
    Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Reviewed-by: default avatarLionel Landwerlin <lionel.g.landwerlin@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180903113007.2643-1-tvrtko.ursulin@linux.intel.com
    b212f0a4
i915_reg.h 424 KB