• Jordan Crouse's avatar
    drm/msm: Shadow current pointer in the ring until command is complete · 4c7085a5
    Jordan Crouse authored
    Add a shadow pointer to track the current command being written into
    the ring. Don't commit it as 'cur' until the command is submitted.
    Because 'cur' is used to construct the software copy of the wptr this
    ensures that somebody peeking in on the ring doesn't assume that a
    command is inflight while it is being written. This isn't a huge deal
    with a single ring (though technically the hangcheck could assume
    the system is prematurely busy when it isn't) but it will be rather
    important for preemption where the decision to preempt is based
    on a non-empty ringbuffer. Without a shadow an aggressive preemption
    scheme could assume that the ringbuffer is non empty and switch to it
    before the CPU is done writing the command and boom.
    
    Even though preemption won't be supported for all targets because of
    the way the code is organized it is simpler to make this generic for
    all targets. The extra load for non-preemption targets should be
    minimal.
    Signed-off-by: default avatarJordan Crouse <jcrouse@codeaurora.org>
    Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
    4c7085a5
msm_ringbuffer.h 1.75 KB