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


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
 




More information about the fedora-extras-commits mailing list