Module Name: src Committed By: riastradh Date: Wed Apr 8 01:42:40 UTC 2015
Modified Files: src/sys/external/bsd/drm2/dist/drm/radeon: radeon_legacy_crtc.c Log Message: Don't reserve if atomic -- caller must have pre-pinned the buffer. To generate a diff of this commit: cvs rdiff -u -r1.1.1.1 -r1.2 \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_legacy_crtc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/external/bsd/drm2/dist/drm/radeon/radeon_legacy_crtc.c diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_legacy_crtc.c:1.1.1.1 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_legacy_crtc.c:1.2 --- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_legacy_crtc.c:1.1.1.1 Wed Jul 16 19:35:28 2014 +++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_legacy_crtc.c Wed Apr 8 01:42:40 2015 @@ -422,6 +422,16 @@ int radeon_crtc_do_set_base(struct drm_c /* Pin framebuffer & get tilling informations */ obj = radeon_fb->obj; rbo = gem_to_radeon_bo(obj); + if (atomic) { + /* + * If you want to do this in atomic, better have it + * pinned ahead of time. + */ + BUG_ON(rbo->pin_count == 0); + base = radeon_bo_gpu_offset(rbo); + tiling_flags = 0; + goto pinned; + } retry: r = radeon_bo_reserve(rbo, false); if (unlikely(r != 0)) @@ -444,7 +454,7 @@ retry: * We don't shutdown the display controller because new buffer * will end up in same spot. */ - if (!atomic && fb && fb != crtc->primary->fb) { + if (fb && fb != crtc->primary->fb) { struct radeon_bo *old_rbo; unsigned long nsize, osize; @@ -462,6 +472,7 @@ retry: } radeon_bo_get_tiling_flags(rbo, &tiling_flags, NULL); radeon_bo_unreserve(rbo); +pinned: if (tiling_flags & RADEON_TILING_MICRO) DRM_ERROR("trying to scanout microtiled buffer\n");