[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

libdrm: Changes to 'ubuntu'



 ChangeLog                                         |  245 +++++++++++++++++++
 configure.ac                                      |    2 
 debian/changelog                                  |   27 ++
 debian/compat                                     |    2 
 debian/libdrm-nouveau1.lintian-overrides          |    1 
 debian/libdrm-nouveau1.symbols                    |   90 +++----
 debian/patches/03_intel_limit_tiled_pitches.patch |   64 ----
 debian/patches/series                             |    1 
 debian/rules                                      |    3 
 include/drm/drm.h                                 |    4 
 include/drm/drm_mode.h                            |    4 
 include/drm/i915_drm.h                            |    4 
 include/drm/nouveau_drm.h                         |    1 
 include/drm/radeon_drm.h                          |    4 
 include/drm/vmwgfx_drm.h                          |   69 +++++
 intel/intel_bufmgr.h                              |    6 
 intel/intel_bufmgr_gem.c                          |  282 +++++++++++-----------
 nouveau/nouveau_device.c                          |   21 -
 tests/modetest/modetest.c                         |   96 +++----
 xf86drm.c                                         |   30 +-
 xf86drmMode.c                                     |   44 +--
 21 files changed, 658 insertions(+), 342 deletions(-)

New commits:
commit 24c39b93e1b84a6640d4114bfd54d7f07ee0ede0
Author: Robert Hooker <sarvatt@ubuntu.com>
Date:   Fri Oct 15 21:12:21 2010 -0400

    Update debian/changelog.

diff --git a/debian/changelog b/debian/changelog
index 00458e5..72d8c77 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+libdrm (2.4.22-1ubuntu1) natty; urgency=low
+
+  * Merge from debian experimental. Remaining Ubuntu changes:
+    - Enable libdrm-intel for ports architectures until plymouth is fixed to
+      not need it unconditionally.
+    - Move runtime libraries to /lib for plymouth.
+
+ -- Robert Hooker <robert.hooker@canonical.com>  Fri, 15 Oct 2010 21:08:44 -0400
+
 libdrm (2.4.22-1) experimental; urgency=low
 
   [ Sven Joachim ]

commit 4fd296a8e2be17e23846251a4fc35d458d9ed06b
Author: Robert Hooker <sarvatt@ubuntu.com>
Date:   Fri Oct 15 21:08:39 2010 -0400

    Drop 03_intel_limit_tiled_pitches.patch (upstream)

diff --git a/debian/patches/03_intel_limit_tiled_pitches.patch b/debian/patches/03_intel_limit_tiled_pitches.patch
deleted file mode 100644
index 3e81ff0..0000000
--- a/debian/patches/03_intel_limit_tiled_pitches.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From 726210f87d558d558022f35bc8c839e798a19f0c Mon Sep 17 00:00:00 2001
-From: Chris Wilson <chris@chris-wilson.co.uk>
-Date: Thu, 24 Jun 2010 10:38:00 +0000
-Subject: intel: Limit tiled pitches to 8192 on pre-i965.
-
-Fixes:
-
-  Bug 28515 - Failed to allocate framebuffer when exceed 2048 width
-  https://bugs.freedesktop.org/show_bug.cgi?id=28515
-
-Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
----
-diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c
-index a1a0806..26dc334 100644
---- a/intel/intel_bufmgr_gem.c
-+++ b/intel/intel_bufmgr_gem.c
-@@ -254,7 +254,7 @@ drm_intel_gem_bo_tile_size(drm_intel_bufmgr_gem *bufmgr_gem, unsigned long size,
-  */
- static unsigned long
- drm_intel_gem_bo_tile_pitch(drm_intel_bufmgr_gem *bufmgr_gem,
--			    unsigned long pitch, uint32_t tiling_mode)
-+			    unsigned long pitch, uint32_t *tiling_mode)
- {
- 	unsigned long tile_width;
- 	unsigned long i;
-@@ -262,10 +262,10 @@ drm_intel_gem_bo_tile_pitch(drm_intel_bufmgr_gem *bufmgr_gem,
- 	/* If untiled, then just align it so that we can do rendering
- 	 * to it with the 3D engine.
- 	 */
--	if (tiling_mode == I915_TILING_NONE)
-+	if (*tiling_mode == I915_TILING_NONE)
- 		return ALIGN(pitch, 64);
- 
--	if (tiling_mode == I915_TILING_X)
-+	if (*tiling_mode == I915_TILING_X)
- 		tile_width = 512;
- 	else
- 		tile_width = 128;
-@@ -274,6 +274,14 @@ drm_intel_gem_bo_tile_pitch(drm_intel_bufmgr_gem *bufmgr_gem,
- 	if (bufmgr_gem->gen >= 4)
- 		return ROUND_UP_TO(pitch, tile_width);
- 
-+	/* The older hardware has a maximum pitch of 8192 with tiled
-+	 * surfaces, so fallback to untiled if it's too large.
-+	 */
-+	if (pitch > 8192) {
-+		*tiling_mode = I915_TILING_NONE;
-+		return ALIGN(pitch, 64);
-+	}
-+
- 	/* Pre-965 needs power of two tile width */
- 	for (i = tile_width; i < pitch; i <<= 1)
- 		;
-@@ -738,7 +746,7 @@ drm_intel_gem_bo_alloc_tiled(drm_intel_bufmgr *bufmgr, const char *name,
- 			aligned_y = ALIGN(y, 32);
- 
- 		stride = x * cpp;
--		stride = drm_intel_gem_bo_tile_pitch(bufmgr_gem, stride, tiling);
-+		stride = drm_intel_gem_bo_tile_pitch(bufmgr_gem, stride, tiling_mode);
- 		size = stride * aligned_y;
- 		size = drm_intel_gem_bo_tile_size(bufmgr_gem, size, tiling_mode);
- 	} while (*tiling_mode != tiling);
---
-cgit v0.8.3-6-g21f6
diff --git a/debian/patches/series b/debian/patches/series
index 895d177..e23f0b1 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,2 @@
 01_default_perms.diff
 02_build_libkms_against_in_tree_drm.diff
-03_intel_limit_tiled_pitches.patch

commit b6edb32cd66c8c06e1e8f3a25a5e15447ae513e0
Author: Cyril Brulebois <kibi@debian.org>
Date:   Sat Oct 2 00:41:16 2010 +0200

    Upload to experimental.

diff --git a/debian/changelog b/debian/changelog
index 1f4f3c1..3f87190 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,9 @@
-libdrm (2.4.22-1) UNRELEASED; urgency=low
+libdrm (2.4.22-1) experimental; urgency=low
 
+  [ Sven Joachim ]
   * New upstream release.
 
- -- Sven Joachim <svenjoac@gmx.de>  Wed, 29 Sep 2010 08:57:51 +0200
+ -- Cyril Brulebois <kibi@debian.org>  Sat, 02 Oct 2010 00:41:05 +0200
 
 libdrm (2.4.21-2) experimental; urgency=low
 

commit 55eca8de3790c3d67f6e05da3001c2aa0da5aca7
Author: Sven Joachim <svenjoac@gmx.de>
Date:   Wed Sep 29 08:59:48 2010 +0200

    Bump changelogs

diff --git a/ChangeLog b/ChangeLog
index d5a1664..3ae6795 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,248 @@
+commit 624e58e3e43c0b2c6803cb9263863444abeb3acb
+Author: Carl Worth <cworth@cworth.org>
+Date:   Tue Sep 28 20:40:37 2010 -0700
+
+    Increment version to 2.4.22
+    
+    For the upcoming 2.4.22 release.
+
+commit 6299722c478234a759b1ce748436197ca1a17ebf
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Sat Sep 25 21:32:59 2010 +0100
+
+    intel: Replace open-coded drmIoctl with calls to drmIoctl()
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 81fa7a9f56b1efb04658db921e5228c102548921
+Author: Ben Skeggs <bskeggs@redhat.com>
+Date:   Tue Sep 21 13:02:07 2010 +1000
+
+    nouveau: fix drm version check some more
+    
+    ... and make a mental note to not push commits before having coffee
+    
+    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
+
+commit d1cec6d2a9d63411c70c6c37509129ea4afe07d8
+Author: Ben Skeggs <bskeggs@redhat.com>
+Date:   Mon Sep 20 08:07:28 2010 +1000
+
+    nouveau: fix thinko in drm version check
+    
+    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
+
+commit 7ec9a1effa4f551897f91f3b017723a8adf011d9
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Thu Sep 9 18:52:28 2010 +0100
+
+    modetest: Fix drawing routines to use stride.
+
+commit 0da84f89c2cb25416bd3bdecae24f287b08cdb76
+Author: Jesse Barnes <jbarnes@virtuousgeek.org>
+Date:   Thu Sep 9 10:27:22 2010 -0700
+
+    modetest: align fb pitch to 64 bytes
+    
+    Docs say this is necessary, and the kernel now enforces this.
+
+commit b8abe6139e5c6779ee87d983346f0f65bf67462e
+Author: Jesse Barnes <jbarnes@virtuousgeek.org>
+Date:   Tue Sep 7 13:10:15 2010 -0700
+
+    modetest: add edp and TV connector names to the connector name array
+
+commit 23287f05cf2443ddf9e028e29beb5bd30979c6cf
+Author: Eric Anholt <eric@anholt.net>
+Date:   Thu Aug 26 15:39:28 2010 -0700
+
+    Avoid use of c++ reserved keyword "virtual" when using a C++ compiler.
+    
+    Avoids requiring nasty hacks around libdrm headers in the new C++
+    parts of Mesa drivers.
+
+commit 8a76244a0fd09d0e3298fe68af812d7eaa4dbcb5
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Tue Aug 24 21:29:31 2010 +0100
+
+    Free the property blob along the error path.
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit b61e81a191d3a5c269c5f7c40199aebc9ebc034c
+Author: Ben Skeggs <bskeggs@redhat.com>
+Date:   Wed Aug 18 12:06:48 2010 +1000
+
+    nouveau: accept both 0.0.16 and 1.x.x
+    
+    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
+
+commit b04515c5d6c95f573457a94267b855cceb639105
+Author: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Date:   Fri Aug 6 13:55:11 2010 +1000
+
+    libdrm: Fix PCI domain domain support
+    
+    This works in conjunction with newer kernels. If we succeed in requesting
+    interface 1.4, the we know the kernel provides proper domain numbers. If
+    not, ignore the domain number as it's bogus (except on Alpha).
+    
+    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+    Signed-off-by: Adam Jackson <ajax@redhat.com>
+
+commit 431f7f00db844534dbcf9a63da0d2832a3d91bff
+Author: Dave Airlie <airlied@redhat.com>
+Date:   Wed Aug 4 08:41:23 2010 +1000
+
+    Copy headers from kernel drm-core-next
+
+commit b803918f3f77c62edf22e78cb2095be399753423
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Thu Jul 1 22:38:54 2010 +0100
+
+    drm mode: Return -errno on drmIoctl() failure
+    
+    The high layers expect to receive a status code on error (on the
+    pessimistic assumption that the errno value will have been overwritten
+    by the time the failure is propagated all the way up), so convert
+    xf86drmMode.c to return -errno on an ioctl error and be consistent with
+    the rest of the libdrm API.
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit c570b4b97b8ff71da9294aaf8242ed665f0c09c3
+Author: Fernando Carrijo <fcarrijo@yahoo.com.br>
+Date:   Thu Jul 1 09:28:29 2010 -0700
+
+    Purge macro NEED_REPLIES
+    
+    Signed-off-by: Fernando Carrijo <fcarrijo@yahoo.com.br>
+    Signed-off-by: Brian Paul <brianp@vmware.com>
+
+commit c3ddfea1a64b7aaaebfb429243c71feb0801da9d
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Tue Jun 29 20:12:44 2010 +0100
+
+    intel: Suppress the error return from setting domains after mapping.
+    
+    If the mapping succeeds we have a valid pointer. If setting the domain
+    failures we may incur cache corruption. However the usual failure mode
+    is because of a hung GPU, in which case it is preferable to ignore the
+    minor error from setting the domain and continue on oblivious. If
+    these errors persist, we should rate limit the warning [or even just
+    remove it].
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 726210f87d558d558022f35bc8c839e798a19f0c
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Thu Jun 24 11:38:00 2010 +0100
+
+    intel: Limit tiled pitches to 8192 on pre-i965.
+    
+    Fixes:
+    
+      Bug 28515 - Failed to allocate framebuffer when exceed 2048 width
+      https://bugs.freedesktop.org/show_bug.cgi?id=28515
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 6ea2bda5f5ec8f27359760ce580fdad3df0464df
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Tue Jun 22 13:03:52 2010 +0100
+
+    intel: Only adjust the local stride used for SET_TILING in tiled alloc
+    
+    Mesa uses the returned pitch from alloc_tiled, so make sure that we set
+    it correctly before modifying the stride used for the SET_TILING call.
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit aba3502190a5bd2203e71ae2b1b7dd5aeb223905
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Tue Jun 22 13:00:22 2010 +0100
+
+    intel: Restore SET_TILING for non-flinked bo.
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit c7bbaca6a376f40d914d1ed33e119f2330701c9a
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Tue Jun 22 11:15:56 2010 +0100
+
+    intel: '===' != '=='
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit cd34cbeb9f5c65b25d241700f27c16b36e1ecce6
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Tue Jun 22 11:07:26 2010 +0100
+
+    intel: Sanitise strides for linear buffers and SET_TILING
+    
+    Ensure that the user doesn't attempt to specify a stride to use with a
+    linear buffer by forcing such to be zero.
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 13e8270504cffa96bd067dc5c792a79555e8b2d4
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Mon Jun 21 15:38:06 2010 +0100
+
+    intel: Print out debugging message following ENOSPC
+    
+    execbuffer() returns ENOSPC if it cannot fit the batch buffer into the
+    aperture which is the error we want to diagnose here.
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit f16b4164d686893949daa3217a011d21c5bd7f95
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Mon Jun 21 15:21:48 2010 +0100
+
+    intel: Scan the cache for old bo once every second.
+    
+    Rearrange the cache cleanup so that we always scan following a final
+    unreference, and guard against multiple scans in a single second.
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 5eec286838118501dd79178c152000ad4cbd70e1
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Mon Jun 21 14:20:56 2010 +0100
+
+    intel: Force stride to be 0 for I915_TILING_NONE.
+    
+    When allocating a tiled buffer, if we remove the desired tiling mode due
+    to it being beyond hardware limits, also remove the stride. This ensures
+    that we only ever use stride 0 with I915_TILING_NONE.
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 1db22ff741f92b84450ec13093e070a6ad5fc857
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Mon Jun 21 14:27:23 2010 +0100
+
+    intel: Defer tiling change to allocation.
+    
+    As we now expose a method to allocate tiled buffers, it makes more sense
+    to defer the SET_TILING until required. Besides the slim chance that it
+    will be a no-op, by delaying the change we are less likely to stall on
+    waiting for a bound buffer to release a fence register.
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 056aa9be04e923a45ca00924caa587d6dbf8821d
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Mon Jun 21 14:31:29 2010 +0100
+
+    intel: Track tiling stride
+    
+    We need to inform the kernel if the tiling stride changes and not only
+    for changes of the tiling mode.
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
 commit 65ec8d7699267cc59777d531f545a82a14341480
 Author: Eric Anholt <eric@anholt.net>
 Date:   Thu Jun 10 08:59:05 2010 -0700
diff --git a/debian/changelog b/debian/changelog
index a9a9d1f..1f4f3c1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+libdrm (2.4.22-1) UNRELEASED; urgency=low
+
+  * New upstream release.
+
+ -- Sven Joachim <svenjoac@gmx.de>  Wed, 29 Sep 2010 08:57:51 +0200
+
 libdrm (2.4.21-2) experimental; urgency=low
 
   [ Sven Joachim ]

commit 624e58e3e43c0b2c6803cb9263863444abeb3acb
Author: Carl Worth <cworth@cworth.org>
Date:   Tue Sep 28 20:40:37 2010 -0700

    Increment version to 2.4.22
    
    For the upcoming 2.4.22 release.

diff --git a/configure.ac b/configure.ac
index 62db817..179f29f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -19,7 +19,7 @@
 #  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 AC_PREREQ(2.60)
-AC_INIT([libdrm], 2.4.21, [dri-devel@lists.sourceforge.net], libdrm)
+AC_INIT([libdrm], 2.4.22, [dri-devel@lists.sourceforge.net], libdrm)
 AC_USE_SYSTEM_EXTENSIONS
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_INIT_AUTOMAKE([dist-bzip2])

commit 6299722c478234a759b1ce748436197ca1a17ebf
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Sat Sep 25 21:32:59 2010 +0100

    intel: Replace open-coded drmIoctl with calls to drmIoctl()
    
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>

diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c
index 3446390..968cb78 100644
--- a/intel/intel_bufmgr_gem.c
+++ b/intel/intel_bufmgr_gem.c
@@ -507,9 +507,7 @@ drm_intel_gem_bo_busy(drm_intel_bo *bo)
 	memset(&busy, 0, sizeof(busy));
 	busy.handle = bo_gem->gem_handle;
 
-	do {
-		ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_BUSY, &busy);
-	} while (ret == -1 && errno == EINTR);
+	ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_BUSY, &busy);
 
 	return (ret == 0 && busy.busy);
 }
@@ -523,7 +521,7 @@ drm_intel_gem_bo_madvise_internal(drm_intel_bufmgr_gem *bufmgr_gem,
 	madv.handle = bo_gem->gem_handle;
 	madv.madv = state;
 	madv.retained = 1;
-	ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_MADVISE, &madv);
+	drmIoctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_MADVISE, &madv);
 
 	return madv.retained;
 }
@@ -650,11 +648,9 @@ retry:
 		memset(&create, 0, sizeof(create));
 		create.size = bo_size;
 
-		do {
-			ret = ioctl(bufmgr_gem->fd,
-				    DRM_IOCTL_I915_GEM_CREATE,
-				    &create);
-		} while (ret == -1 && errno == EINTR);
+		ret = drmIoctl(bufmgr_gem->fd,
+			       DRM_IOCTL_I915_GEM_CREATE,
+			       &create);
 		bo_gem->gem_handle = create.handle;
 		bo_gem->bo.handle = bo_gem->gem_handle;
 		if (ret != 0) {
@@ -782,11 +778,9 @@ drm_intel_bo_gem_create_from_name(drm_intel_bufmgr *bufmgr,
 
 	memset(&open_arg, 0, sizeof(open_arg));
 	open_arg.name = handle;
-	do {
-		ret = ioctl(bufmgr_gem->fd,
-			    DRM_IOCTL_GEM_OPEN,
-			    &open_arg);
-	} while (ret == -1 && errno == EINTR);
+	ret = drmIoctl(bufmgr_gem->fd,
+		       DRM_IOCTL_GEM_OPEN,
+		       &open_arg);
 	if (ret != 0) {
 		fprintf(stderr, "Couldn't reference %s handle 0x%08x: %s\n",
 			name, handle, strerror(errno));
@@ -806,7 +800,9 @@ drm_intel_bo_gem_create_from_name(drm_intel_bufmgr *bufmgr,
 
 	memset(&get_tiling, 0, sizeof(get_tiling));
 	get_tiling.handle = bo_gem->gem_handle;
-	ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_GET_TILING, &get_tiling);
+	ret = drmIoctl(bufmgr_gem->fd,
+		       DRM_IOCTL_I915_GEM_GET_TILING,
+		       &get_tiling);
 	if (ret != 0) {
 		drm_intel_gem_bo_unreference(&bo_gem->bo);
 		return NULL;
@@ -837,7 +833,7 @@ drm_intel_gem_bo_free(drm_intel_bo *bo)
 	/* Close this object */
 	memset(&close, 0, sizeof(close));
 	close.handle = bo_gem->gem_handle;
-	ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_GEM_CLOSE, &close);
+	ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_GEM_CLOSE, &close);
 	if (ret != 0) {
 		fprintf(stderr,
 			"DRM_IOCTL_GEM_CLOSE %d failed (%s): %s\n",
@@ -974,11 +970,9 @@ static int drm_intel_gem_bo_map(drm_intel_bo *bo, int write_enable)
 		mmap_arg.handle = bo_gem->gem_handle;
 		mmap_arg.offset = 0;
 		mmap_arg.size = bo->size;
-		do {
-			ret = ioctl(bufmgr_gem->fd,
-				    DRM_IOCTL_I915_GEM_MMAP,
-				    &mmap_arg);
-		} while (ret == -1 && errno == EINTR);
+		ret = drmIoctl(bufmgr_gem->fd,
+			       DRM_IOCTL_I915_GEM_MMAP,
+			       &mmap_arg);
 		if (ret != 0) {
 			ret = -errno;
 			fprintf(stderr,
@@ -1000,11 +994,9 @@ static int drm_intel_gem_bo_map(drm_intel_bo *bo, int write_enable)
 		set_domain.write_domain = I915_GEM_DOMAIN_CPU;
 	else
 		set_domain.write_domain = 0;
-	do {
-		ret = ioctl(bufmgr_gem->fd,
-			    DRM_IOCTL_I915_GEM_SET_DOMAIN,
-			    &set_domain);
-	} while (ret == -1 && errno == EINTR);
+	ret = drmIoctl(bufmgr_gem->fd,
+		       DRM_IOCTL_I915_GEM_SET_DOMAIN,
+		       &set_domain);
 	if (ret != 0) {
 		fprintf(stderr, "%s:%d: Error setting to CPU domain %d: %s\n",
 			__FILE__, __LINE__, bo_gem->gem_handle,
@@ -1036,11 +1028,9 @@ int drm_intel_gem_bo_map_gtt(drm_intel_bo *bo)
 		mmap_arg.handle = bo_gem->gem_handle;
 
 		/* Get the fake offset back... */
-		do {
-			ret = ioctl(bufmgr_gem->fd,
-				    DRM_IOCTL_I915_GEM_MMAP_GTT,
-				    &mmap_arg);
-		} while (ret == -1 && errno == EINTR);
+		ret = drmIoctl(bufmgr_gem->fd,
+			       DRM_IOCTL_I915_GEM_MMAP_GTT,
+			       &mmap_arg);
 		if (ret != 0) {
 			ret = -errno;
 			fprintf(stderr,
@@ -1078,11 +1068,9 @@ int drm_intel_gem_bo_map_gtt(drm_intel_bo *bo)
 	set_domain.handle = bo_gem->gem_handle;
 	set_domain.read_domains = I915_GEM_DOMAIN_GTT;
 	set_domain.write_domain = I915_GEM_DOMAIN_GTT;
-	do {
-		ret = ioctl(bufmgr_gem->fd,
-			    DRM_IOCTL_I915_GEM_SET_DOMAIN,
-			    &set_domain);
-	} while (ret == -1 && errno == EINTR);
+	ret = drmIoctl(bufmgr_gem->fd,
+		       DRM_IOCTL_I915_GEM_SET_DOMAIN,
+		       &set_domain);
 	if (ret != 0) {
 		fprintf(stderr, "%s:%d: Error setting domain %d: %s\n",
 			__FILE__, __LINE__, bo_gem->gem_handle,
@@ -1130,11 +1118,9 @@ static int drm_intel_gem_bo_unmap(drm_intel_bo *bo)
 	 * results show up in a timely manner.
 	 */
 	sw_finish.handle = bo_gem->gem_handle;
-	do {
-		ret = ioctl(bufmgr_gem->fd,
-			    DRM_IOCTL_I915_GEM_SW_FINISH,
-			    &sw_finish);
-	} while (ret == -1 && errno == EINTR);
+	ret = drmIoctl(bufmgr_gem->fd,
+		       DRM_IOCTL_I915_GEM_SW_FINISH,
+		       &sw_finish);
 	ret = ret == -1 ? -errno : 0;
 
 	bo->virtual = NULL;
@@ -1157,11 +1143,9 @@ drm_intel_gem_bo_subdata(drm_intel_bo *bo, unsigned long offset,
 	pwrite.offset = offset;
 	pwrite.size = size;
 	pwrite.data_ptr = (uint64_t) (uintptr_t) data;
-	do {
-		ret = ioctl(bufmgr_gem->fd,
-			    DRM_IOCTL_I915_GEM_PWRITE,
-			    &pwrite);
-	} while (ret == -1 && errno == EINTR);
+	ret = drmIoctl(bufmgr_gem->fd,
+		       DRM_IOCTL_I915_GEM_PWRITE,
+		       &pwrite);
 	if (ret != 0) {
 		ret = -errno;
 		fprintf(stderr,
@@ -1181,8 +1165,9 @@ drm_intel_gem_get_pipe_from_crtc_id(drm_intel_bufmgr *bufmgr, int crtc_id)
 	int ret;
 
 	get_pipe_from_crtc_id.crtc_id = crtc_id;
-	ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID,
-		    &get_pipe_from_crtc_id);
+	ret = drmIoctl(bufmgr_gem->fd,
+		       DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID,
+		       &get_pipe_from_crtc_id);
 	if (ret != 0) {
 		/* We return -1 here to signal that we don't
 		 * know which pipe is associated with this crtc.
@@ -1210,11 +1195,9 @@ drm_intel_gem_bo_get_subdata(drm_intel_bo *bo, unsigned long offset,
 	pread.offset = offset;
 	pread.size = size;
 	pread.data_ptr = (uint64_t) (uintptr_t) data;
-	do {
-		ret = ioctl(bufmgr_gem->fd,
-			    DRM_IOCTL_I915_GEM_PREAD,
-			    &pread);
-	} while (ret == -1 && errno == EINTR);
+	ret = drmIoctl(bufmgr_gem->fd,
+		       DRM_IOCTL_I915_GEM_PREAD,
+		       &pread);
 	if (ret != 0) {
 		ret = -errno;
 		fprintf(stderr,
@@ -1251,11 +1234,9 @@ drm_intel_gem_bo_start_gtt_access(drm_intel_bo *bo, int write_enable)
 	set_domain.handle = bo_gem->gem_handle;
 	set_domain.read_domains = I915_GEM_DOMAIN_GTT;
 	set_domain.write_domain = write_enable ? I915_GEM_DOMAIN_GTT : 0;
-	do {
-		ret = ioctl(bufmgr_gem->fd,
-			    DRM_IOCTL_I915_GEM_SET_DOMAIN,
-			    &set_domain);
-	} while (ret == -1 && errno == EINTR);
+	ret = drmIoctl(bufmgr_gem->fd,
+		       DRM_IOCTL_I915_GEM_SET_DOMAIN,
+		       &set_domain);
 	if (ret != 0) {
 		fprintf(stderr,
 			"%s:%d: Error setting memory domains %d (%08x %08x): %s .\n",
@@ -1526,12 +1507,9 @@ drm_intel_gem_bo_exec(drm_intel_bo *bo, int used,
 	execbuf.DR1 = 0;
 	execbuf.DR4 = DR4;
 
-	do {
-		ret = ioctl(bufmgr_gem->fd,
-			    DRM_IOCTL_I915_GEM_EXECBUFFER,
-			    &execbuf);
-	} while (ret != 0 && errno == EINTR);
-
+	ret = drmIoctl(bufmgr_gem->fd,
+		       DRM_IOCTL_I915_GEM_EXECBUFFER,
+		       &execbuf);
 	if (ret != 0) {
 		ret = -errno;
 		if (errno == ENOSPC) {
@@ -1599,11 +1577,9 @@ drm_intel_gem_bo_mrb_exec2(drm_intel_bo *bo, int used,
 	execbuf.rsvd1 = 0;
 	execbuf.rsvd2 = 0;
 
-	do {
-		ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_EXECBUFFER2,
-			    &execbuf);
-	} while (ret != 0 && errno == EINTR);
-
+	ret = drmIoctl(bufmgr_gem->fd,
+		       DRM_IOCTL_I915_GEM_EXECBUFFER2,
+		       &execbuf);
 	if (ret != 0) {
 		ret = -errno;
 		if (ret == -ENOSPC) {
@@ -1658,12 +1634,9 @@ drm_intel_gem_bo_pin(drm_intel_bo *bo, uint32_t alignment)
 	pin.handle = bo_gem->gem_handle;
 	pin.alignment = alignment;
 
-	do {
-		ret = ioctl(bufmgr_gem->fd,
-			    DRM_IOCTL_I915_GEM_PIN,
-			    &pin);
-	} while (ret == -1 && errno == EINTR);
-
+	ret = drmIoctl(bufmgr_gem->fd,
+		       DRM_IOCTL_I915_GEM_PIN,
+		       &pin);
 	if (ret != 0)
 		return -errno;
 
@@ -1682,7 +1655,7 @@ drm_intel_gem_bo_unpin(drm_intel_bo *bo)
 	memset(&unpin, 0, sizeof(unpin));
 	unpin.handle = bo_gem->gem_handle;
 
-	ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_UNPIN, &unpin);
+	ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_UNPIN, &unpin);
 	if (ret != 0)
 		return -errno;
 
@@ -1706,6 +1679,10 @@ drm_intel_gem_bo_set_tiling_internal(drm_intel_bo *bo,
 
 	memset(&set_tiling, 0, sizeof(set_tiling));
 	do {
+		/* set_tiling is slightly broken and overwrites the
+		 * input on the error path, so we have to open code
+		 * rmIoctl.
+		 */
 		set_tiling.handle = bo_gem->gem_handle;
 		set_tiling.tiling_mode = tiling_mode;
 		set_tiling.stride = stride;
@@ -1713,7 +1690,7 @@ drm_intel_gem_bo_set_tiling_internal(drm_intel_bo *bo,
 		ret = ioctl(bufmgr_gem->fd,
 			    DRM_IOCTL_I915_GEM_SET_TILING,
 			    &set_tiling);
-	} while (ret == -1 && errno == EINTR);
+	} while (ret == -1 && (errno == EINTR || errno == EAGAIN));
 	if (ret == -1)
 		return -errno;
 
@@ -1768,7 +1745,7 @@ drm_intel_gem_bo_flink(drm_intel_bo *bo, uint32_t * name)
 		memset(&flink, 0, sizeof(flink));
 		flink.handle = bo_gem->gem_handle;
 
-		ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_GEM_FLINK, &flink);
+		ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_GEM_FLINK, &flink);
 		if (ret != 0)
 			return -errno;
 		bo_gem->global_name = flink.name;
@@ -2099,7 +2076,9 @@ drm_intel_bufmgr_gem_init(int fd, int batch_size)
 		return NULL;
 	}
 
-	ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_GET_APERTURE, &aperture);
+	ret = drmIoctl(bufmgr_gem->fd,
+		       DRM_IOCTL_I915_GEM_GET_APERTURE,
+		       &aperture);
 
 	if (ret == 0)
 		bufmgr_gem->gtt_size = aperture.aper_available_size;
@@ -2115,7 +2094,7 @@ drm_intel_bufmgr_gem_init(int fd, int batch_size)
 
 	gp.param = I915_PARAM_CHIPSET_ID;
 	gp.value = &bufmgr_gem->pci_device;
-	ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GETPARAM, &gp);
+	ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_I915_GETPARAM, &gp);
 	if (ret) {
 		fprintf(stderr, "get chip id failed: %d [%d]\n", ret, errno);
 		fprintf(stderr, "param: %d, val: %d\n", gp.param, *gp.value);
@@ -2131,19 +2110,19 @@ drm_intel_bufmgr_gem_init(int fd, int batch_size)
 		bufmgr_gem->gen = 6;
 
 	gp.param = I915_PARAM_HAS_EXECBUF2;
-	ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GETPARAM, &gp);
+	ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_I915_GETPARAM, &gp);
 	if (!ret)
 		exec2 = 1;
 
 	gp.param = I915_PARAM_HAS_BSD;
-	ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GETPARAM, &gp);
+	ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_I915_GETPARAM, &gp);
 	if (!ret)
 		has_bsd = 1;
 
 	if (bufmgr_gem->gen < 4) {
 		gp.param = I915_PARAM_NUM_FENCES_AVAIL;
 		gp.value = &bufmgr_gem->available_fences;
-		ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GETPARAM, &gp);
+		ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_I915_GETPARAM, &gp);
 		if (ret) {
 			fprintf(stderr, "get fences failed: %d [%d]\n", ret,
 				errno);

commit 81fa7a9f56b1efb04658db921e5228c102548921
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Tue Sep 21 13:02:07 2010 +1000

    nouveau: fix drm version check some more
    
    ... and make a mental note to not push commits before having coffee
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>

diff --git a/nouveau/nouveau_device.c b/nouveau/nouveau_device.c
index 91f9a27..9a091fb 100644
--- a/nouveau/nouveau_device.c
+++ b/nouveau/nouveau_device.c
@@ -49,7 +49,7 @@ nouveau_device_open_existing(struct nouveau_device **dev, int close,
 	if (!ver)
 		return -EINVAL;
 
-	if ((ver->version_major == 0 && ver->version_patchlevel != 16) &&
+	if ((ver->version_major == 0 && ver->version_patchlevel != 16) ||
 	     ver->version_major > 1) {
 		nouveau_device_close((void *)&nvdev);
 		return -EINVAL;

commit d1cec6d2a9d63411c70c6c37509129ea4afe07d8
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Mon Sep 20 08:07:28 2010 +1000

    nouveau: fix thinko in drm version check
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>

diff --git a/nouveau/nouveau_device.c b/nouveau/nouveau_device.c
index f450e30..91f9a27 100644
--- a/nouveau/nouveau_device.c
+++ b/nouveau/nouveau_device.c
@@ -50,7 +50,7 @@ nouveau_device_open_existing(struct nouveau_device **dev, int close,
 		return -EINVAL;
 
 	if ((ver->version_major == 0 && ver->version_patchlevel != 16) &&
-	     ver->version_major != 1) {
+	     ver->version_major > 1) {
 		nouveau_device_close((void *)&nvdev);
 		return -EINVAL;
 	}

commit 7ec9a1effa4f551897f91f3b017723a8adf011d9
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Thu Sep 9 18:52:28 2010 +0100

    modetest: Fix drawing routines to use stride.

diff --git a/tests/modetest/modetest.c b/tests/modetest/modetest.c
index 820f8a5..f3a04d0 100644
--- a/tests/modetest/modetest.c
+++ b/tests/modetest/modetest.c
@@ -354,37 +354,40 @@ connector_find_mode(struct connector *c)
 		c->crtc = c->encoder->crtc_id;
 }
 
-#ifdef HAVE_CAIRO
+static drm_intel_bo *
+allocate_buffer(drm_intel_bufmgr *bufmgr,
+		int width, int height, int *stride)
+{
+	int size;
 
-static int
-create_test_buffer(drm_intel_bufmgr *bufmgr,
-		   int width, int height, int *stride_out, drm_intel_bo **bo_out)
+	/* Scan-out has a 64 byte alignment restriction */
+	size = (width + 63) & -64;
+	*stride = size;
+	size *= height;
+
+	return drm_intel_bo_alloc(bufmgr, "frontbuffer", size, 0);
+}
+
+static void
+make_pwetty(drm_intel_bo *bo, int width, int height, int stride)
 {
-	drm_intel_bo *bo;
-	unsigned int *fb_ptr;
-	int size, i, stride;
-	div_t d;
+#ifdef HAVE_CAIRO
 	cairo_surface_t *surface;
 	cairo_t *cr;
-	char buf[64];
 	int x, y;
 
-	surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height);
-	stride = cairo_image_surface_get_stride(surface);
-	size = stride * height;
-	fb_ptr = (unsigned int *) cairo_image_surface_get_data(surface);
-
-	/* paint the buffer with colored tiles */
-	for (i = 0; i < width * height; i++) {
-		d = div(i, width);
-		fb_ptr[i] = 0x00130502 * (d.quot >> 6) + 0x000a1120 * (d.rem >> 6);
-	}
-
+	surface = cairo_image_surface_create_for_data(bo->virtual,
+						      CAIRO_FORMAT_ARGB32,
+						      width, height,
+						      stride);
 	cr = cairo_create(surface);
+	cairo_surface_destroy(surface);
+
 	cairo_set_line_cap(cr, CAIRO_LINE_CAP_SQUARE);
 	for (x = 0; x < width; x += 250)
 		for (y = 0; y < height; y += 250) {
-			cairo_set_operator(cr, CAIRO_OPERATOR_OVER);
+			char buf[64];
+
 			cairo_move_to(cr, x, y - 20);
 			cairo_line_to(cr, x, y + 20);
 			cairo_move_to(cr, x - 20, y);
@@ -397,6 +400,7 @@ create_test_buffer(drm_intel_bufmgr *bufmgr,
 			cairo_set_source_rgb(cr, 1, 1, 1);
 			cairo_set_line_width(cr, 2);
 			cairo_stroke(cr);
+
 			snprintf(buf, sizeof buf, "%d, %d", x, y);
 			cairo_move_to(cr, x + 20, y + 20);
 			cairo_text_path(cr, buf);
@@ -407,41 +411,17 @@ create_test_buffer(drm_intel_bufmgr *bufmgr,
 		}
 
 	cairo_destroy(cr);
-
-	bo = drm_intel_bo_alloc(bufmgr, "frontbuffer", size, 4096);
-	if (!bo) {
-		fprintf(stderr, "failed to alloc buffer: %s\n",
-			strerror(errno));
-		return -1;
-	}
-
-	drm_intel_bo_subdata(bo, 0, size, fb_ptr);
-
-	cairo_surface_destroy(surface);
-
-	*bo_out = bo;
-	*stride_out = stride;
-
-	return 0;
+#endif
 }
 
-#else
-
 static int
 create_test_buffer(drm_intel_bufmgr *bufmgr,
 		   int width, int height, int *stride_out, drm_intel_bo **bo_out)
 {
 	drm_intel_bo *bo;
-	unsigned int *fb_ptr;
-	int size, ret, i, stride;
-	div_t d;
+	int ret, i, j, stride;
 
-	/* Mode size at 32 bpp */
-	stride = width * 4;
-	stride = (stride + 63) & ~63;
-	size = stride * height;
-
-	bo = drm_intel_bo_alloc(bufmgr, "frontbuffer", size, 4096);
+	bo = allocate_buffer(bufmgr, width, height, &stride);
 	if (!bo) {
 		fprintf(stderr, "failed to alloc buffer: %s\n",
 			strerror(errno));
@@ -455,23 +435,26 @@ create_test_buffer(drm_intel_bufmgr *bufmgr,
 		return -1;
 	}
 
-	fb_ptr = bo->virtual;
-
 	/* paint the buffer with colored tiles */
-	for (i = 0; i < width * height; i++) {
-		d = div(i, width);
-		fb_ptr[i] = 0x00130502 * (d.quot >> 6) + 0x000a1120 * (d.rem >> 6);
+	for (j = 0; j < height; j++) {
+		uint32_t *fb_ptr = (uint32_t*)((char*)bo->virtual + j * stride);
+		for (i = 0; i < width; i++) {
+			div_t d = div(i, width);
+			fb_ptr[i] =
+				0x00130502 * (d.quot >> 6) +
+				0x000a1120 * (d.rem >> 6);
+		}
 	}
+
+	make_pwetty(bo, width, height, stride);
+
 	drm_intel_gem_bo_unmap_gtt(bo);
 
 	*bo_out = bo;
 	*stride_out = stride;
-
 	return 0;
 }
 
-#endif
-
 static int
 create_grey_buffer(drm_intel_bufmgr *bufmgr,


Reply to: