From 552ece0d4df09062ac7643ffc04b27285c31e249 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20K=C3=B6nig?= Date: Sun, 14 Apr 2013 12:45:43 +0200 Subject: [PATCH] --- yaml --- r: 371528 b: refs/heads/master c: a92c7d554fbfa5ec1008e4c856a2206c2cce45a4 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/gpu/drm/radeon/radeon_uvd.c | 26 ++++++++++++----------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/[refs] b/[refs] index b939917ee494..a27ef73287bd 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: abf1457bbbe4c62066bd03c6d31837dea28644dc +refs/heads/master: a92c7d554fbfa5ec1008e4c856a2206c2cce45a4 diff --git a/trunk/drivers/gpu/drm/radeon/radeon_uvd.c b/trunk/drivers/gpu/drm/radeon/radeon_uvd.c index 30a94609672a..2fb4d6cf26b6 100644 --- a/trunk/drivers/gpu/drm/radeon/radeon_uvd.c +++ b/trunk/drivers/gpu/drm/radeon/radeon_uvd.c @@ -415,24 +415,26 @@ static int radeon_uvd_cs_reloc(struct radeon_cs_parser *p, return -EINVAL; } - if (cmd == 0) { - if (end & 0xFFFFFFFFF0000000) { - DRM_ERROR("msg buffer %LX-%LX out of 256MB segment!\n", - start, end); - return -EINVAL; - } - - r = radeon_uvd_cs_msg(p, reloc->robj, offset, buf_sizes); - if (r) - return r; + if ((start >> 28) != (end >> 28)) { + DRM_ERROR("reloc %LX-%LX crossing 256MB boundary!\n", + start, end); + return -EINVAL; } - if ((start & 0xFFFFFFFFF0000000) != (end & 0xFFFFFFFFF0000000)) { - DRM_ERROR("reloc %LX-%LX crossing 256MB boundary!\n", + /* TODO: is this still necessary on NI+ ? */ + if ((cmd == 0 || cmd == 0x3) && + (start >> 28) != (p->rdev->uvd.gpu_addr >> 28)) { + DRM_ERROR("msg/fb buffer %LX-%LX out of 256MB segment!\n", start, end); return -EINVAL; } + if (cmd == 0) { + r = radeon_uvd_cs_msg(p, reloc->robj, offset, buf_sizes); + if (r) + return r; + } + return 0; }