Module Name:    src
Committed By:   riz
Date:           Wed Nov  4 18:17:22 UTC 2015

Modified Files:
        src/sys/external/bsd/drm2/dist/drm/radeon [netbsd-7]: atombios_crtc.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #970):
        sys/external/bsd/drm2/dist/drm/radeon/atombios_crtc.c: revision 1.4
Apply preceeding change:
Don't reserve if atomic -- caller must have pre-pinned the buffer.
to avivo_crtc_do_set_base() as well.


To generate a diff of this commit:
cvs rdiff -u -r1.2.4.1 -r1.2.4.2 \
    src/sys/external/bsd/drm2/dist/drm/radeon/atombios_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/atombios_crtc.c
diff -u src/sys/external/bsd/drm2/dist/drm/radeon/atombios_crtc.c:1.2.4.1 src/sys/external/bsd/drm2/dist/drm/radeon/atombios_crtc.c:1.2.4.2
--- src/sys/external/bsd/drm2/dist/drm/radeon/atombios_crtc.c:1.2.4.1	Thu Apr 23 07:31:17 2015
+++ src/sys/external/bsd/drm2/dist/drm/radeon/atombios_crtc.c	Wed Nov  4 18:17:22 2015
@@ -1382,24 +1382,26 @@ static int avivo_crtc_do_set_base(struct
 
 	obj = radeon_fb->obj;
 	rbo = gem_to_radeon_bo(obj);
-	r = radeon_bo_reserve(rbo, false);
-	if (unlikely(r != 0))
-		return r;
 
 	/* If atomic, assume fb object is pinned & idle & fenced and
 	 * just update base pointers
 	 */
-	if (atomic)
+	if (atomic) {
+		BUG_ON(rbo->pin_count == 0);
 		fb_location = radeon_bo_gpu_offset(rbo);
-	else {
+		tiling_flags = 0;
+	} else {
+		r = radeon_bo_reserve(rbo, false);
+		if (unlikely(r != 0))
+			return r;
 		r = radeon_bo_pin(rbo, RADEON_GEM_DOMAIN_VRAM, &fb_location);
 		if (unlikely(r != 0)) {
 			radeon_bo_unreserve(rbo);
 			return -EINVAL;
 		}
+		radeon_bo_get_tiling_flags(rbo, &tiling_flags, NULL);
+		radeon_bo_unreserve(rbo);
 	}
-	radeon_bo_get_tiling_flags(rbo, &tiling_flags, NULL);
-	radeon_bo_unreserve(rbo);
 
 	switch (target_fb->bits_per_pixel) {
 	case 8:

Reply via email to