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