rpms/kernel/F-11 drm-radeon-kms-fixes.patch, NONE, 1.1 linux-2.6-drm-r128-ioremap.patch, NONE, 1.1 kernel.spec, 1.1577, 1.1578

Dave Airlie airlied at fedoraproject.org
Thu Apr 30 07:32:45 UTC 2009


Author: airlied

Update of /cvs/pkgs/rpms/kernel/F-11
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv17899

Modified Files:
	kernel.spec 
Added Files:
	drm-radeon-kms-fixes.patch linux-2.6-drm-r128-ioremap.patch 
Log Message:
* Thu Apr 30 2009 Dave Airlie <airlied at redhat.com> 2.6.29.1-116
- linux-2.6-drm-r128-ioremap.patch: fix r128 DRI fail
- drm-radeon-kms-fixes.patch: hopefully fix AGP corruption


drm-radeon-kms-fixes.patch:

--- NEW FILE drm-radeon-kms-fixes.patch ---
diff --git a/drivers/gpu/drm/drm_ttm.c b/drivers/gpu/drm/drm_ttm.c
index dbc0cb3..ae64a83 100644
--- a/drivers/gpu/drm/drm_ttm.c
+++ b/drivers/gpu/drm/drm_ttm.c
@@ -89,14 +89,21 @@ static struct page *drm_ttm_alloc_page(struct drm_ttm *ttm, int cached)
  * Change caching policy for the linear kernel map
  * for range of pages in a ttm.
  */
-static int drm_ttm_set_caching(struct drm_ttm *ttm, int noncached)
+static int drm_ttm_set_caching(struct drm_ttm *ttm, int noncached, int alloc_cached)
 {
 	int i;
 	struct page **cur_page;
+	int ret;
 
 	if ((ttm->page_flags & DRM_TTM_PAGE_UNCACHED) == noncached)
 		return 0;
 
+	{
+		ret = drm_ttm_populate(ttm, alloc_cached);
+		if (ret != 0)
+			return ret;
+	}
+
 	if (noncached)
 		drm_clflush_pages(ttm->pages, ttm->num_pages);
 
@@ -189,7 +196,7 @@ int drm_ttm_destroy(struct drm_ttm *ttm)
 	if (ttm->pages) {
 		if (ttm->page_flags & DRM_TTM_PAGE_USER) {
 			if (ttm->page_flags & DRM_TTM_PAGE_UNCACHED)
-				drm_ttm_set_caching(ttm, 0);
+				drm_ttm_set_caching(ttm, 0, 0);
 
 			drm_ttm_free_user_pages(ttm);
 		} else
@@ -397,7 +404,7 @@ void drm_ttm_fixup_caching(struct drm_ttm *ttm)
 		struct drm_ttm_backend *be = ttm->be;
 		if (be->func->needs_ub_cache_adjust(be))
 			if (ttm->page_flags & DRM_TTM_PAGE_ALLOC_CACHED)
-				drm_ttm_set_caching(ttm, 0);
+				drm_ttm_set_caching(ttm, 0, 1);
 		ttm->state = ttm_unbound;
 	}
 }
@@ -445,7 +452,7 @@ int drm_ttm_bind(struct drm_ttm *ttm, struct drm_bo_mem_reg *bo_mem)
 	be = ttm->be;
 
 	if ((ttm->state == ttm_unbound || ttm->state == ttm_unpopulated) && !cached)
-		drm_ttm_set_caching(ttm, DRM_TTM_PAGE_UNCACHED);
+		drm_ttm_set_caching(ttm, DRM_TTM_PAGE_UNCACHED, cached);
 	else if ((bo_mem->flags & DRM_BO_FLAG_CACHED_MAPPED) &&
 		   bo_driver->ttm_cache_flush)
 		bo_driver->ttm_cache_flush(ttm);
diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c
index a0b0f5b..cb96470 100644
--- a/drivers/gpu/drm/radeon/radeon_gem.c
+++ b/drivers/gpu/drm/radeon/radeon_gem.c
@@ -1446,38 +1446,12 @@ static int radeon_gem_do_relocate(struct drm_gem_object *obj, uint32_t read_doma
 static int radeon_gem_relocate(struct drm_radeon_cs_parser *parser,
 			       uint32_t *reloc, uint32_t *offset)
 {
-	struct drm_device *dev = parser->dev;
 	/* relocate the handle */
-	uint32_t read_domains, write_domain;
-	struct drm_gem_object *obj;
-	int ret = 0;
-	struct drm_radeon_gem_object *obj_priv;
-
-	if (parser->reloc_index == -1) {
-		obj = drm_gem_object_lookup(dev, parser->file_priv, reloc[1]);
-		if (!obj)
-			return -EINVAL;
-		obj_priv = obj->driver_private;
-		if (obj_priv->bo->mem.flags & DRM_BO_FLAG_CLEAN)
-			DRM_ERROR("clean on relocate for %d\n", reloc[1]);
-		read_domains = reloc[2];
-		write_domain = reloc[3];
-
-		ret = radeon_gem_do_relocate(obj, read_domains, write_domain, offset);
-
-		mutex_lock(&dev->struct_mutex);
-		drm_gem_object_unreference(obj);
-		mutex_unlock(&dev->struct_mutex);
-
-	} else {
-		uint32_t handle;
-		/* have to lookup handle in other chunk */
-		ret = radeon_gem_find_reloc(parser, reloc[1], &handle, offset);
-	}
-	return ret;
+	uint32_t handle;
+	/* have to lookup handle in other chunk */
+	return radeon_gem_find_reloc(parser, reloc[1], &handle, offset);
 }
 
-
 int radeon_gem_prelocate(struct drm_radeon_cs_parser *parser)
 {
 	struct drm_device *dev = parser->dev;

linux-2.6-drm-r128-ioremap.patch:

--- NEW FILE linux-2.6-drm-r128-ioremap.patch ---
diff --git a/drivers/gpu/drm/r128/r128_cce.c b/drivers/gpu/drm/r128/r128_cce.c
index 32de4ce..077c045 100644
--- a/drivers/gpu/drm/r128/r128_cce.c
+++ b/drivers/gpu/drm/r128/r128_cce.c
@@ -511,9 +511,9 @@ static int r128_do_init_cce(struct drm_device * dev, drm_r128_init_t * init)
 
 #if __OS_HAS_AGP
 	if (!dev_priv->is_pci) {
-		drm_core_ioremap(dev_priv->cce_ring, dev);
-		drm_core_ioremap(dev_priv->ring_rptr, dev);
-		drm_core_ioremap(dev->agp_buffer_map, dev);
+		drm_core_ioremap_wc(dev_priv->cce_ring, dev);
+		drm_core_ioremap_wc(dev_priv->ring_rptr, dev);
+		drm_core_ioremap_wc(dev->agp_buffer_map, dev);
 		if (!dev_priv->cce_ring->handle ||
 		    !dev_priv->ring_rptr->handle ||
 		    !dev->agp_buffer_map->handle) {


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/kernel.spec,v
retrieving revision 1.1577
retrieving revision 1.1578
diff -u -p -r1.1577 -r1.1578
--- kernel.spec	28 Apr 2009 21:18:46 -0000	1.1577
+++ kernel.spec	30 Apr 2009 07:32:15 -0000	1.1578
@@ -693,6 +693,8 @@ Patch1822: drm-intel-gen3-fb-hack.patch
 Patch1823: drm-intel-tiled-front.patch
 Patch1824: drm-intel-hdmi-edid-fix.patch
 Patch1825: drm-intel-tiling-transition.patch
+Patch1826: linux-2.6-drm-r128-ioremap.patch
+Patch1827: drm-radeon-kms-fixes.patch
 
 # kludge to make ich9 e1000 work
 Patch2000: linux-2.6-e1000-ich9.patch
@@ -1361,6 +1363,8 @@ ApplyPatch drm-intel-gen3-fb-hack.patch
 ApplyPatch drm-intel-tiled-front.patch
 ApplyPatch drm-intel-hdmi-edid-fix.patch
 ApplyPatch drm-intel-tiling-transition.patch
+ApplyPatch linux-2.6-drm-r128-ioremap.patch
+ApplyPatch drm-radeon-kms-fixes.patch
 
 # linux1394 git patches
 ApplyPatch linux-2.6-firewire-git-update.patch
@@ -1995,6 +1999,10 @@ fi
 # and build.
 
 %changelog
+* Thu Apr 30 2009 Dave Airlie <airlied at redhat.com> 2.6.29.1-116
+- linux-2.6-drm-r128-ioremap.patch: fix r128 DRI fail
+- drm-radeon-kms-fixes.patch: hopefully fix AGP corruption
+
 * Tue Apr 28 2009 Adam Jackson <ajax at redhat.com> 2.6.29.1-115
 - drm-intel-tiling-transition.patch: Fix transitions to linear mode.
 




More information about the fedora-extras-commits mailing list