rpms/kernel/devel drm-modesetting-radeon.patch, 1.25, 1.26 kernel.spec, 1.945, 1.946
Dave Airlie
airlied at fedoraproject.org
Thu Sep 11 09:58:24 UTC 2008
- Previous message (by thread): rpms/perl-Schedule-Cron-Events/devel import.log, 1.1, 1.2 perl-Schedule-Cron-Events.spec, 1.1, 1.2
- Next message (by thread): rpms/sugar-toolkit/OLPC-3 .cvsignore, 1.12, 1.13 sources, 1.13, 1.14 sugar-toolkit.spec, 1.17, 1.18
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: airlied
Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv16265
Modified Files:
drm-modesetting-radeon.patch kernel.spec
Log Message:
* Thu Sep 11 2008 Dave Airlie <airlied at redhat.com>
- drm - fix some minor annoyance with radeon for beta
drm-modesetting-radeon.patch:
Index: drm-modesetting-radeon.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/drm-modesetting-radeon.patch,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- drm-modesetting-radeon.patch 10 Sep 2008 04:54:35 -0000 1.25
+++ drm-modesetting-radeon.patch 11 Sep 2008 09:58:23 -0000 1.26
@@ -1,3 +1,33 @@
+commit 7d7949742ae5d6d0aca8857bfcab77b2fffaf0d7
+Author: Dave Airlie <airlied at redhat.com>
+Date: Thu Sep 11 18:26:27 2008 +1000
+
+ radeon: fixup buffer and cs
+
+ just fallback around busted stuff for now
+
+commit 3bd833adf4e37a47d9e794498c4cdb4bff09d167
+Author: Dave Airlie <airlied at redhat.com>
+Date: Thu Sep 11 18:25:18 2008 +1000
+
+ radeon: fixup GEM domain setting - allows more userspace paths
+
+ also dirty buffer on validate
+
+commit c323b90fe655fcee25aa7e39671c1594e897c4f6
+Author: Dave Airlie <airlied at redhat.com>
+Date: Thu Sep 11 17:13:32 2008 +1000
+
+ radeon: disable blit moves
+
+commit 7783a2254b7707861662b3f94ca2ca38c83ce64b
+Author: Dave Airlie <airlied at redhat.com>
+Date: Thu Sep 11 16:18:27 2008 +1000
+
+ radeon: fail properly if we can't create the ring.
+
+ Normally this will be due to an AGP driver needing updating
+
commit ed3d32c22ed856ef32594fe2efb88c55c8006627
Author: Dave Airlie <airlied at redhat.com>
Date: Wed Sep 10 14:35:43 2008 +1000
@@ -28447,10 +28477,10 @@
+}
diff --git a/drivers/gpu/drm/radeon/radeon_buffer.c b/drivers/gpu/drm/radeon/radeon_buffer.c
new file mode 100644
-index 0000000..07989bf
+index 0000000..fe2aa6f
--- /dev/null
+++ b/drivers/gpu/drm/radeon/radeon_buffer.c
-@@ -0,0 +1,440 @@
+@@ -0,0 +1,441 @@
+/**************************************************************************
+ *
+ * Copyright 2007 Dave Airlie
@@ -28629,6 +28659,7 @@
+ RADEON_WAIT_UNTIL_2D_IDLE();
+ ADVANCE_RING();
+
++ COMMIT_RING();
+ return;
+}
+
@@ -28853,12 +28884,12 @@
+ return 0;
+ }
+
++ /* disable these blit moves for now that appear to be failing */
++ goto fallback;
++
+ if (new_mem->mem_type == DRM_BO_MEM_VRAM) {
+ if (radeon_move_vram(bo, evict, no_wait, new_mem))
+ goto fallback;
-+ } else if (new_mem->mem_type == DRM_BO_MEM_LOCAL){
-+ if (radeon_move_flip(bo, evict, no_wait, new_mem))
-+ goto fallback;
+ } else {
+ if (radeon_move_flip(bo, evict, no_wait, new_mem))
+ goto fallback;
@@ -30630,7 +30661,7 @@
+ return NULL;
+}
diff --git a/drivers/gpu/drm/radeon/radeon_cp.c b/drivers/gpu/drm/radeon/radeon_cp.c
-index 248ab4a..a1d2290 100644
+index 248ab4a..7870d0f 100644
--- a/drivers/gpu/drm/radeon/radeon_cp.c
+++ b/drivers/gpu/drm/radeon/radeon_cp.c
@@ -31,6 +31,7 @@
@@ -31999,7 +32030,7 @@
switch (flags & RADEON_FAMILY_MASK) {
case CHIP_R100:
case CHIP_RV200:
-@@ -1720,18 +2494,119 @@ int radeon_driver_load(struct drm_device *dev, unsigned long flags)
+@@ -1720,18 +2494,126 @@ int radeon_driver_load(struct drm_device *dev, unsigned long flags)
break;
}
@@ -32058,7 +32089,10 @@
+
+ if (drm_core_check_feature(dev, DRIVER_MODESET)) {
+
-+ radeon_gem_mm_init(dev);
++ ret = radeon_gem_mm_init(dev);
++ if (ret)
++ goto modeset_fail;
++
+ radeon_modeset_init(dev);
+
+ radeon_modeset_cp_init(dev);
@@ -32068,6 +32102,10 @@
+ }
+
+
++ return ret;
++modeset_fail:
++ dev->driver->driver_features &= ~DRIVER_MODESET;
++ drm_put_minor(&dev->control);
return ret;
}
@@ -32120,7 +32158,7 @@
/* Create mappings for registers and framebuffer so userland doesn't necessarily
* have to find them.
*/
-@@ -1743,19 +2618,6 @@ int radeon_driver_firstopen(struct drm_device *dev)
+@@ -1743,19 +2625,6 @@ int radeon_driver_firstopen(struct drm_device *dev)
dev_priv->gart_info.table_size = RADEON_PCIGART_TABLE_SIZE;
@@ -32140,7 +32178,7 @@
return 0;
}
-@@ -1763,9 +2625,40 @@ int radeon_driver_unload(struct drm_device *dev)
+@@ -1763,9 +2632,40 @@ int radeon_driver_unload(struct drm_device *dev)
{
drm_radeon_private_t *dev_priv = dev->dev_private;
@@ -32183,10 +32221,10 @@
+}
diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c
new file mode 100644
-index 0000000..d961189
+index 0000000..c8b0c97
--- /dev/null
+++ b/drivers/gpu/drm/radeon/radeon_cs.c
-@@ -0,0 +1,411 @@
+@@ -0,0 +1,412 @@
+/*
+ * Copyright 2008 Jerome Glisse.
+ * All Rights Reserved.
@@ -32557,13 +32595,14 @@
+ /* ISYNC_CNTL should not have CPSCRACTH bit set */
+ *id = radeon_cs_id_get(dev_priv);
+ /* emit id in SCRATCH6 */
-+ BEGIN_RING(6);
++ BEGIN_RING(8);
+ OUT_RING(CP_PACKET0(R300_CP_RESYNC_ADDR, 0));
+ OUT_RING(6);
+ OUT_RING(CP_PACKET0(R300_CP_RESYNC_DATA, 0));
+ OUT_RING(*id);
+ OUT_RING(CP_PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0));
+ OUT_RING(R300_RB3D_DC_FINISH);
++ RADEON_WAIT_UNTIL_3D_IDLE();
+ ADVANCE_RING();
+}
+
@@ -36457,10 +36496,10 @@
+
diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c
new file mode 100644
-index 0000000..58162e5
+index 0000000..8338f8f
--- /dev/null
+++ b/drivers/gpu/drm/radeon/radeon_gem.c
-@@ -0,0 +1,1561 @@
+@@ -0,0 +1,1584 @@
+/*
+ * Copyright 2008 Red Hat Inc.
+ *
@@ -36629,8 +36668,16 @@
+ return -EINVAL; // we can't write to system RAM
+ } else {
+ /* okay for a read domain - prefer wherever the object is now or close enough */
-+ if ((read_domains == 0) || (read_domains == RADEON_GEM_DOMAIN_CPU))
++ if (read_domains == 0)
+ return -EINVAL;
++
++ /* if its already a local memory and CPU is valid do nothing */
++ if (read_domains & RADEON_GEM_DOMAIN_CPU) {
++ if (obj_priv->bo->mem.mem_type == DRM_BO_MEM_LOCAL)
++ return 0;
++ if (read_domains == RADEON_GEM_DOMAIN_CPU)
++ return -EINVAL;
++ }
+
+ /* simple case no choice in domains */
+ if (read_domains == RADEON_GEM_DOMAIN_VRAM)
@@ -36641,12 +36688,19 @@
+ flags = DRM_BO_FLAG_MEM_VRAM;
+ else if ((obj_priv->bo->mem.mem_type == DRM_BO_MEM_TT) && (read_domains & RADEON_GEM_DOMAIN_GTT))
+ flags = DRM_BO_FLAG_MEM_TT;
++ else if ((obj_priv->bo->mem.mem_type == DRM_BO_MEM_LOCAL) && (read_domains & RADEON_GEM_DOMAIN_GTT))
++ flags = DRM_BO_FLAG_MEM_TT;
+ else if (read_domains & RADEON_GEM_DOMAIN_VRAM)
+ flags = DRM_BO_FLAG_MEM_VRAM;
+ else if (read_domains & RADEON_GEM_DOMAIN_GTT)
+ flags = DRM_BO_FLAG_MEM_TT;
+ }
+
++ /* if this BO is pinned then we ain't moving it anywhere */
++ if (obj_priv->bo->pinned_mem_type && unfenced)
++ return 0;
++
++ DRM_DEBUG("validating %p from %d into %x %d %d\n", obj_priv->bo, obj_priv->bo->mem.mem_type, flags, read_domains, write_domain);
+ ret = drm_bo_do_validate(obj_priv->bo, flags, DRM_BO_MASK_MEM | DRM_BO_FLAG_CACHED,
+ unfenced ? DRM_BO_HINT_DONT_FENCE : 0, 0);
+ if (ret)
@@ -37130,7 +37184,10 @@
+ DRM_BO_FLAG_MAPPABLE | DRM_BO_FLAG_NO_EVICT,
+ 0, 1, 0, &dev_priv->mm.ring.bo);
+ if (ret) {
-+ DRM_ERROR("failed to allocate ring\n");
++ if (dev_priv->flags & RADEON_IS_AGP)
++ DRM_ERROR("failed to allocate ring - most likely an AGP driver bug\n");
++ else
++ DRM_ERROR("failed to allocate ring\n");
+ return -EINVAL;
+ }
+
@@ -37467,8 +37524,10 @@
+ /* need to allocate some objects in the GART */
+ /* ring + ring read ptr */
+ ret = radeon_alloc_gart_objects(dev);
-+ if (ret)
++ if (ret) {
++ radeon_gem_mm_fini(dev);
+ return -EINVAL;
++ }
+
+ dev_priv->mm_enabled = true;
+ return 0;
@@ -37675,6 +37734,7 @@
+ obj_priv = obj->driver_private;
+ radeon_gem_set_domain(obj, read_domains, write_domain, &flags, false);
+
++ obj_priv->bo->mem.flags &= ~DRM_BO_FLAG_CLEAN;
+ if (flags == DRM_BO_FLAG_MEM_VRAM)
+ *offset = obj_priv->bo->offset + dev_priv->fb_location;
+ else if (flags == DRM_BO_FLAG_MEM_TT)
@@ -37971,8 +38031,10 @@
+ struct drm_radeon_private *dev_priv = dev->dev_private;
+ drm_dma_takedown(dev);
+
-+ drm_bo_kunmap(&dev_priv->mm.dma_bufs.kmap);
-+ drm_bo_usage_deref_unlocked(&dev_priv->mm.dma_bufs.bo);
++ if (dev_priv->mm.dma_bufs.bo) {
++ drm_bo_kunmap(&dev_priv->mm.dma_bufs.kmap);
++ drm_bo_usage_deref_unlocked(&dev_priv->mm.dma_bufs.bo);
++ }
+}
+
+
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.945
retrieving revision 1.946
diff -u -r1.945 -r1.946
--- kernel.spec 10 Sep 2008 16:59:58 -0000 1.945
+++ kernel.spec 11 Sep 2008 09:58:23 -0000 1.946
@@ -1755,6 +1755,9 @@
%kernel_variant_files -k vmlinux %{with_kdump} kdump
%changelog
+* Thu Sep 11 2008 Dave Airlie <airlied at redhat.com>
+- drm - fix some minor annoyance with radeon for beta
+
* Wed Sep 10 2008 Mark McLoughlin <markmc at redhat.com>
- Pull in new e1000e hardware support (e.g. ich10) from net-next-2.6
- Previous message (by thread): rpms/perl-Schedule-Cron-Events/devel import.log, 1.1, 1.2 perl-Schedule-Cron-Events.spec, 1.1, 1.2
- Next message (by thread): rpms/sugar-toolkit/OLPC-3 .cvsignore, 1.12, 1.13 sources, 1.13, 1.14 sugar-toolkit.spec, 1.17, 1.18
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list