diff options
author | Sean Paul <seanpaul@chromium.org> | 2017-05-18 09:24:30 -0400 |
---|---|---|
committer | Sean Paul <seanpaul@chromium.org> | 2017-05-18 09:24:30 -0400 |
commit | 6b7781b42dc9bc9bcd1523b6c24b876cdda0bef3 (patch) | |
tree | ee55c67e4ea30b9eb44f301ba0bde2e631a26162 /drivers/gpu/drm/amd/amdgpu/dce_v6_0.c | |
parent | 52d9d38c183bf0e09601d875ea31bb53c05dd8cf (diff) | |
parent | e98c58e55f68f8785aebfab1f8c9a03d8de0afe1 (diff) |
Merge remote-tracking branch 'airlied/drm-next' into drm-misc-next
Picking up drm-next @ 4.12-rc1 in order to apply Michal Hocko's vmalloc patch set
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/dce_v6_0.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/dce_v6_0.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c index 0a3f7b74ee13..3f3a25493327 100644 --- a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c +++ b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c | |||
@@ -979,7 +979,7 @@ static void dce_v6_0_program_watermarks(struct amdgpu_device *adev, | |||
979 | u32 priority_a_mark = 0, priority_b_mark = 0; | 979 | u32 priority_a_mark = 0, priority_b_mark = 0; |
980 | u32 priority_a_cnt = PRIORITY_OFF; | 980 | u32 priority_a_cnt = PRIORITY_OFF; |
981 | u32 priority_b_cnt = PRIORITY_OFF; | 981 | u32 priority_b_cnt = PRIORITY_OFF; |
982 | u32 tmp, arb_control3; | 982 | u32 tmp, arb_control3, lb_vblank_lead_lines = 0; |
983 | fixed20_12 a, b, c; | 983 | fixed20_12 a, b, c; |
984 | 984 | ||
985 | if (amdgpu_crtc->base.enabled && num_heads && mode) { | 985 | if (amdgpu_crtc->base.enabled && num_heads && mode) { |
@@ -1091,6 +1091,8 @@ static void dce_v6_0_program_watermarks(struct amdgpu_device *adev, | |||
1091 | c.full = dfixed_div(c, a); | 1091 | c.full = dfixed_div(c, a); |
1092 | priority_b_mark = dfixed_trunc(c); | 1092 | priority_b_mark = dfixed_trunc(c); |
1093 | priority_b_cnt |= priority_b_mark & PRIORITY_MARK_MASK; | 1093 | priority_b_cnt |= priority_b_mark & PRIORITY_MARK_MASK; |
1094 | |||
1095 | lb_vblank_lead_lines = DIV_ROUND_UP(lb_size, mode->crtc_hdisplay); | ||
1094 | } | 1096 | } |
1095 | 1097 | ||
1096 | /* select wm A */ | 1098 | /* select wm A */ |
@@ -1120,6 +1122,9 @@ static void dce_v6_0_program_watermarks(struct amdgpu_device *adev, | |||
1120 | /* save values for DPM */ | 1122 | /* save values for DPM */ |
1121 | amdgpu_crtc->line_time = line_time; | 1123 | amdgpu_crtc->line_time = line_time; |
1122 | amdgpu_crtc->wm_high = latency_watermark_a; | 1124 | amdgpu_crtc->wm_high = latency_watermark_a; |
1125 | |||
1126 | /* Save number of lines the linebuffer leads before the scanout */ | ||
1127 | amdgpu_crtc->lb_vblank_lead_lines = lb_vblank_lead_lines; | ||
1123 | } | 1128 | } |
1124 | 1129 | ||
1125 | /* watermark setup */ | 1130 | /* watermark setup */ |
@@ -1640,7 +1645,7 @@ static int dce_v6_0_crtc_do_set_base(struct drm_crtc *crtc, | |||
1640 | if (!atomic && fb && fb != crtc->primary->fb) { | 1645 | if (!atomic && fb && fb != crtc->primary->fb) { |
1641 | amdgpu_fb = to_amdgpu_framebuffer(fb); | 1646 | amdgpu_fb = to_amdgpu_framebuffer(fb); |
1642 | abo = gem_to_amdgpu_bo(amdgpu_fb->obj); | 1647 | abo = gem_to_amdgpu_bo(amdgpu_fb->obj); |
1643 | r = amdgpu_bo_reserve(abo, false); | 1648 | r = amdgpu_bo_reserve(abo, true); |
1644 | if (unlikely(r != 0)) | 1649 | if (unlikely(r != 0)) |
1645 | return r; | 1650 | return r; |
1646 | amdgpu_bo_unpin(abo); | 1651 | amdgpu_bo_unpin(abo); |
@@ -1957,7 +1962,7 @@ static int dce_v6_0_crtc_cursor_set2(struct drm_crtc *crtc, | |||
1957 | unpin: | 1962 | unpin: |
1958 | if (amdgpu_crtc->cursor_bo) { | 1963 | if (amdgpu_crtc->cursor_bo) { |
1959 | struct amdgpu_bo *aobj = gem_to_amdgpu_bo(amdgpu_crtc->cursor_bo); | 1964 | struct amdgpu_bo *aobj = gem_to_amdgpu_bo(amdgpu_crtc->cursor_bo); |
1960 | ret = amdgpu_bo_reserve(aobj, false); | 1965 | ret = amdgpu_bo_reserve(aobj, true); |
1961 | if (likely(ret == 0)) { | 1966 | if (likely(ret == 0)) { |
1962 | amdgpu_bo_unpin(aobj); | 1967 | amdgpu_bo_unpin(aobj); |
1963 | amdgpu_bo_unreserve(aobj); | 1968 | amdgpu_bo_unreserve(aobj); |
@@ -2083,7 +2088,7 @@ static void dce_v6_0_crtc_disable(struct drm_crtc *crtc) | |||
2083 | 2088 | ||
2084 | amdgpu_fb = to_amdgpu_framebuffer(crtc->primary->fb); | 2089 | amdgpu_fb = to_amdgpu_framebuffer(crtc->primary->fb); |
2085 | abo = gem_to_amdgpu_bo(amdgpu_fb->obj); | 2090 | abo = gem_to_amdgpu_bo(amdgpu_fb->obj); |
2086 | r = amdgpu_bo_reserve(abo, false); | 2091 | r = amdgpu_bo_reserve(abo, true); |
2087 | if (unlikely(r)) | 2092 | if (unlikely(r)) |
2088 | DRM_ERROR("failed to reserve abo before unpin\n"); | 2093 | DRM_ERROR("failed to reserve abo before unpin\n"); |
2089 | else { | 2094 | else { |