rpms/kernel/devel fixup-dri2-kms-merge.patch,NONE,1.1

Kristian Høgsberg krh at fedoraproject.org
Fri Aug 29 19:42:15 UTC 2008


Author: krh

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv4570

Added Files:
	fixup-dri2-kms-merge.patch 
Log Message:
* Fri Aug 29 2008 Kristian Høgsberg <krh at redhat.com>
- Fix a couple of merge bugs between DRI2 and KMS.


fixup-dri2-kms-merge.patch:

--- NEW FILE fixup-dri2-kms-merge.patch ---
>From 0705a7958899a8787061740d5853ecce1febe4e3 Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Kristian=20H=C3=B8gsberg?= <krh at redhat.com>
Date: Fri, 29 Aug 2008 15:25:51 -0400
Subject: [PATCH] Fix up merge of DRI2 patches and KMS.


diff --git a/drivers/gpu/drm/drm_bufs.c b/drivers/gpu/drm/drm_bufs.c
index 112ba7a..d4e42e0 100644
--- a/drivers/gpu/drm/drm_bufs.c
+++ b/drivers/gpu/drm/drm_bufs.c
@@ -414,8 +414,8 @@ int drm_rmmap_locked(struct drm_device *dev, drm_local_map_t *map)
 		vfree(map->handle);
 		if (master) {
 			if (dev->sigdata.lock == master->lock.hw_lock)
-				dev->sigdata.lock = NULL;
-			master->lock.hw_lock = NULL;   /* SHM removed */
+				dev->sigdata.lock = &dev->default_lock;
+			master->lock.hw_lock = &dev->default_lock;
 			master->lock.file_priv = NULL;
 			wake_up_interruptible(&master->lock.lock_queue);
 		}
diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c
index 1f842d8..1dc2965 100644
--- a/drivers/gpu/drm/drm_stub.c
+++ b/drivers/gpu/drm/drm_stub.c
@@ -141,8 +141,8 @@ static void drm_master_destroy(struct kref *kref)
 
 	if (master->lock.hw_lock != &dev->default_lock) {
 		if (dev->sigdata.lock == master->lock.hw_lock)
-			dev->sigdata.lock = NULL;
-		master->lock.hw_lock = NULL;	/* SHM removed */
+			dev->sigdata.lock = &dev->default_lock;
+		master->lock.hw_lock = &dev->default_lock;
 		master->lock.file_priv = NULL;
 		wake_up_interruptible(&master->lock.lock_queue);
 	}
diff --git a/drivers/gpu/drm/i915/i915_init.c b/drivers/gpu/drm/i915/i915_init.c
index f2c9a3a..06f2ecb 100644
--- a/drivers/gpu/drm/i915/i915_init.c
+++ b/drivers/gpu/drm/i915/i915_init.c
@@ -18,17 +18,6 @@ int i915_master_create(struct drm_device *dev, struct drm_master *master)
 	if (!master_priv)
 		return -ENOMEM;
 
-	/* prebuild the SAREA */
-	sareapage = max(SAREA_MAX, PAGE_SIZE);
-	ret = drm_addmap(dev, 0, sareapage, _DRM_SHM, _DRM_CONTAINS_LOCK|_DRM_DRIVER,
-			 &master_priv->sarea);
-	if (ret) {
-		DRM_ERROR("SAREA setup failed\n");
-		return ret;
-	}
-	master_priv->sarea_priv = master_priv->sarea->handle + sizeof(struct drm_sarea);
-	master_priv->sarea_priv->pf_current_page = 0;
-
 	master->driver_priv = master_priv;
 	return 0;
 }
@@ -39,9 +28,6 @@ void i915_master_destroy(struct drm_device *dev, struct drm_master *master)
 
 	if (!master_priv)
 		return;
-
-	if (master_priv->sarea)
-		drm_rmmap_locked(dev, master_priv->sarea);
 		
 	drm_free(master_priv, sizeof(*master_priv), DRM_MEM_DRIVER);
 
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 8371abc..965ec74 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -451,7 +451,8 @@ int i915_irq_emit(struct drm_device *dev, void *data,
 	drm_i915_irq_emit_t *emit = data;
 	int result;
 
-	LOCK_TEST_WITH_RETURN(dev, file_priv);
+	if (file_priv->master->lock.hw_lock != &dev->default_lock)
+		LOCK_TEST_WITH_RETURN(dev, file_priv);
 
 	if (!dev_priv) {
 		DRM_ERROR("called with no initialization\n");




More information about the scm-commits mailing list