rpms/kernel/devel drm-modesetting-radeon.patch, 1.4, 1.5 kernel.spec, 1.837, 1.838

Dave Airlie (airlied) fedora-extras-commits at redhat.com
Mon Aug 4 04:26:32 UTC 2008


Author: airlied

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv17915

Modified Files:
	drm-modesetting-radeon.patch kernel.spec 
Log Message:
* Mon Aug 04 2008 Dave Airlie <airlied at redhat.com> 
- rebase modesetting patch + fixes


drm-modesetting-radeon.patch:

Index: drm-modesetting-radeon.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/drm-modesetting-radeon.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- drm-modesetting-radeon.patch	1 Aug 2008 22:10:55 -0000	1.4
+++ drm-modesetting-radeon.patch	4 Aug 2008 04:26:02 -0000	1.5
@@ -21,7 +21,7 @@
  drm-$(CONFIG_COMPAT) += drm_ioc32.o
  
 diff --git a/drivers/gpu/drm/ati_pcigart.c b/drivers/gpu/drm/ati_pcigart.c
-index c533d0c..96c7de0 100644
+index c533d0c..fdc482e 100644
 --- a/drivers/gpu/drm/ati_pcigart.c
 +++ b/drivers/gpu/drm/ati_pcigart.c
 @@ -34,9 +34,55 @@
@@ -93,7 +93,15 @@
  
  static void drm_ati_free_pcigart_table(struct drm_device *dev,
  				       struct drm_ati_pcigart_info *gart_info)
-@@ -98,17 +146,14 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga
+@@ -63,7 +111,6 @@ int drm_ati_pcigart_cleanup(struct drm_device *dev, struct drm_ati_pcigart_info
+ 
+ 	/* we need to support large memory configurations */
+ 	if (!entry) {
+-		DRM_ERROR("no scatter/gather memory!\n");
+ 		return 0;
+ 	}
+ 
+@@ -98,17 +145,14 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga
  	struct drm_sg_mem *entry = dev->sg;
  	void *address = NULL;
  	unsigned long pages;
@@ -114,7 +122,7 @@
  		DRM_DEBUG("PCI: no table in VRAM: using normal RAM\n");
  
  		ret = drm_ati_alloc_pcigart_table(dev, gart_info);
-@@ -116,15 +161,19 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga
+@@ -116,15 +160,19 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga
  			DRM_ERROR("cannot allocate PCI GART page!\n");
  			goto done;
  		}
@@ -137,7 +145,7 @@
  	}
  
  	pci_gart = (u32 *) address;
-@@ -133,8 +182,6 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga
+@@ -133,8 +181,6 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga
  	pages = (entry->pages <= max_pages)
  	    ? entry->pages : max_pages;
  
@@ -146,7 +154,7 @@
  	for (i = 0; i < pages; i++) {
  		/* we need to support large memory configurations */
  		entry->busaddr[i] = pci_map_page(dev->pdev, entry->pagelist[i],
-@@ -146,25 +193,15 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga
+@@ -146,25 +192,15 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga
  			bus_address = 0;
  			goto done;
  		}
@@ -176,7 +184,7 @@
  	ret = 1;
  
  #if defined(__i386__) || defined(__x86_64__)
-@@ -179,3 +216,145 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga
+@@ -179,3 +215,145 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga
  	return ret;
  }
  EXPORT_SYMBOL(drm_ati_pcigart_init);
@@ -6691,7 +6699,7 @@
 +
 +
 diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
-index 452c2d8..a1e6c4d 100644
+index 452c2d8..d4d83a4 100644
 --- a/drivers/gpu/drm/drm_drv.c
 +++ b/drivers/gpu/drm/drm_drv.c
 @@ -74,6 +74,9 @@ static struct drm_ioctl_desc drm_ioctls[] = {
@@ -6737,7 +6745,7 @@
  };
  
  #define DRM_CORE_IOCTL_COUNT	ARRAY_SIZE( drm_ioctls )
-@@ -132,22 +161,19 @@ static struct drm_ioctl_desc drm_ioctls[] = {
+@@ -132,8 +161,6 @@ static struct drm_ioctl_desc drm_ioctls[] = {
   */
  int drm_lastclose(struct drm_device * dev)
  {
@@ -6746,13 +6754,13 @@
  	struct drm_vma_entry *vma, *vma_temp;
  	int i;
  
- 	DRM_DEBUG("\n");
+@@ -141,13 +168,12 @@ int drm_lastclose(struct drm_device * dev)
  
-+	if (!drm_core_check_feature(dev, DRIVER_MODESET))
-+		drm_bo_driver_finish(dev);
-+
  	if (dev->driver->lastclose)
  		dev->driver->lastclose(dev);
++
++	if (!drm_core_check_feature(dev, DRIVER_MODESET))
++		drm_bo_driver_finish(dev);
  	DRM_DEBUG("driver lastclose completed\n");
  
 -	if (dev->unique) {
@@ -26420,10 +26428,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..8e47eb7
+index 0000000..dfd8cb9
 --- /dev/null
 +++ b/drivers/gpu/drm/radeon/radeon_buffer.c
-@@ -0,0 +1,253 @@
+@@ -0,0 +1,257 @@
 +/**************************************************************************
 + * 
 + * Copyright 2007 Dave Airlie
@@ -26481,10 +26489,14 @@
 +	drm_radeon_private_t *dev_priv = dev->dev_private;
 +	RING_LOCALS;
 +
++	if (!dev_priv->cp_running)
++		return 0;
++
 +	BEGIN_RING(4);
 +	RADEON_FLUSH_CACHE();
 +	RADEON_FLUSH_ZCACHE();
 +	ADVANCE_RING();
++	COMMIT_RING();
 +	return 0;
 +}
 +
@@ -27415,7 +27427,7 @@
 +	return NULL;
 +}
 diff --git a/drivers/gpu/drm/radeon/radeon_cp.c b/drivers/gpu/drm/radeon/radeon_cp.c
-index f0de81a..66181fb 100644
+index f0de81a..5fd037f 100644
 --- a/drivers/gpu/drm/radeon/radeon_cp.c
 +++ b/drivers/gpu/drm/radeon/radeon_cp.c
 @@ -31,6 +31,7 @@
@@ -27934,7 +27946,14 @@
  		}
  
  		if (!drm_ati_pcigart_init(dev, &dev_priv->gart_info)) {
-@@ -1245,8 +1369,10 @@ static int radeon_do_cleanup_cp(struct drm_device * dev)
+@@ -1239,14 +1363,16 @@ static int radeon_do_cleanup_cp(struct drm_device * dev)
+ 		if (dev_priv->gart_info.bus_addr) {
+ 			/* Turn off PCI GART */
+ 			radeon_set_pcigart(dev_priv, 0);
+-			if (!drm_ati_pcigart_cleanup(dev, &dev_priv->gart_info))
+-				DRM_ERROR("failed to cleanup PCI GART!\n");
++			drm_ati_pcigart_cleanup(dev, &dev_priv->gart_info);
+ 		}
  
  		if (dev_priv->gart_info.gart_table_location == DRM_ATI_GART_FB)
  		{
@@ -27943,6 +27962,7 @@
 +			if (dev_priv->pcigart_offset_set == 1) {
 +				drm_core_ioremapfree(&dev_priv->gart_info.mapping, dev);
 +				dev_priv->gart_info.addr = NULL;
++				dev_priv->pcigart_offset_set = 0;
 +			}
  		}
  	}
@@ -28009,8 +28029,8 @@
  		radeon_mem_takedown(&(dev_priv->gart_heap));
  		radeon_mem_takedown(&(dev_priv->fb_heap));
  
-+
-+		radeon_gem_mm_fini(dev);
++		if (dev_priv->user_mm_enable)
++			radeon_gem_mm_fini(dev);
 +
  		/* deallocate kernel resources */
  		radeon_do_cleanup_cp(dev);
@@ -28731,7 +28751,7 @@
  /* Create mappings for registers and framebuffer so userland doesn't necessarily
   * have to find them.
   */
-@@ -1745,13 +2546,9 @@ int radeon_driver_firstopen(struct drm_device *dev)
+@@ -1745,19 +2546,6 @@ int radeon_driver_firstopen(struct drm_device *dev)
  
  	dev_priv->gart_info.table_size = RADEON_PCIGART_TABLE_SIZE;
  
@@ -28740,14 +28760,18 @@
 -			 _DRM_READ_ONLY, &dev_priv->mmio);
 -	if (ret != 0)
 -		return ret;
-+	if (!drm_core_check_feature(dev, DRIVER_MODESET))
-+		radeon_gem_mm_init(dev);
- 
+-
 -	dev_priv->fb_aper_offset = drm_get_resource_start(dev, 0);
- 	ret = drm_addmap(dev, dev_priv->fb_aper_offset,
- 			 drm_get_resource_len(dev, 0), _DRM_FRAME_BUFFER,
- 			 _DRM_WRITE_COMBINING, &map);
-@@ -1765,9 +2562,40 @@ int radeon_driver_unload(struct drm_device *dev)
+-	ret = drm_addmap(dev, dev_priv->fb_aper_offset,
+-			 drm_get_resource_len(dev, 0), _DRM_FRAME_BUFFER,
+-			 _DRM_WRITE_COMBINING, &map);
+-	if (ret != 0)
+-		return ret;
+-
+ 	return 0;
+ }
+ 
+@@ -1765,9 +2553,40 @@ int radeon_driver_unload(struct drm_device *dev)
  {
  	drm_radeon_private_t *dev_priv = dev->dev_private;
  
@@ -29951,7 +29975,7 @@
  int radeon_no_wb;
 +int radeon_dynclks = 1;
  
- MODULE_PARM_DESC(no_wb, "Disable AGP writeback for scratch registers\n");
+ MODULE_PARM_DESC(no_wb, "Disable AGP writeback for scratch registers");
  module_param_named(no_wb, radeon_no_wb, int, 0444);
  
 +unsigned int radeon_modeset = 0;
@@ -30028,7 +30052,7 @@
  }
  
 diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h
-index 3f0eca9..a5a8b64 100644
+index 3f0eca9..77332b3 100644
 --- a/drivers/gpu/drm/radeon/radeon_drv.h
 +++ b/drivers/gpu/drm/radeon/radeon_drv.h
 @@ -34,6 +34,8 @@
@@ -30121,7 +30145,7 @@
  
  typedef struct drm_radeon_freelist {
  	unsigned int age;
-@@ -220,12 +261,56 @@ struct radeon_virt_surface {
+@@ -220,14 +261,58 @@ struct radeon_virt_surface {
  	struct drm_file *file_priv;
  };
  
@@ -30179,8 +30203,11 @@
 -	u32 fb_location;
 -	u32 fb_size;
  	int new_memmap;
- 
+-
++	bool user_mm_enable; /* userspace enabled the memory manager */
  	int gart_size;
+ 	u32 gart_vm_start;
+ 	unsigned long gart_buffers_offset;
 @@ -243,8 +328,6 @@ typedef struct drm_radeon_private {
  
  	int usec_timeout;
@@ -32659,10 +32686,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..f56a7c1
+index 0000000..e5c056b
 --- /dev/null
 +++ b/drivers/gpu/drm/radeon/radeon_gem.c
-@@ -0,0 +1,867 @@
+@@ -0,0 +1,866 @@
 +/*
 + * Copyright 2008 Red Hat Inc.
 + *
@@ -33305,8 +33332,7 @@
 +	radeon_gem_ib_destroy(dev);
 +
 +	mutex_lock(&dev->struct_mutex);
-+
-+	
++		
 +	if (dev_priv->mm.ring_read.bo) {
 +		drm_bo_kunmap(&dev_priv->mm.ring_read.kmap);
 +		drm_bo_usage_deref_locked(&dev_priv->mm.ring_read.bo);
@@ -33329,7 +33355,7 @@
 +	}
 +
 +	if (drm_bo_clean_mm(dev, DRM_BO_MEM_VRAM, 1)) {
-+		DRM_DEBUG("delaying takedown of TTM memory\n");
++		DRM_DEBUG("delaying takedown of VRAM memory\n");
 +	}
 +
 +	mutex_unlock(&dev->struct_mutex);
@@ -39269,7 +39295,7 @@
 +
 +#endif
 diff --git a/drivers/gpu/drm/radeon/radeon_state.c b/drivers/gpu/drm/radeon/radeon_state.c
-index 11c146b..ef593ec 100644
+index 11c146b..9adff62 100644
 --- a/drivers/gpu/drm/radeon/radeon_state.c
 +++ b/drivers/gpu/drm/radeon/radeon_state.c
 @@ -305,8 +305,9 @@ static __inline__ int radeon_check_and_fixup_packet3(drm_radeon_private_t *
@@ -39902,7 +39928,18 @@
  		}
  		break;
  	case RADEON_SETPARAM_PCIGART_LOCATION:
-@@ -3129,14 +3161,6 @@ void radeon_driver_preclose(struct drm_device *dev, struct drm_file *file_priv)
+@@ -3101,6 +3133,10 @@ static int radeon_cp_setparam(struct drm_device *dev, void *data, struct drm_fil
+ 	case RADEON_SETPARAM_VBLANK_CRTC:
+ 		return radeon_vblank_crtc_set(dev, sp->value);
+ 		break;
++	case RADEON_SETPARAM_MM_INIT:
++		dev_priv->user_mm_enable = true;
++		return radeon_gem_mm_init(dev);
++		break;
+ 	default:
+ 		DRM_DEBUG("Invalid parameter %d\n", sp->param);
+ 		return -EINVAL;
+@@ -3129,14 +3165,6 @@ void radeon_driver_preclose(struct drm_device *dev, struct drm_file *file_priv)
  
  void radeon_driver_lastclose(struct drm_device *dev)
  {
@@ -39917,7 +39954,7 @@
  	radeon_do_release(dev);
  }
  
-@@ -3197,7 +3221,19 @@ struct drm_ioctl_desc radeon_ioctls[] = {
+@@ -3197,7 +3225,19 @@ struct drm_ioctl_desc radeon_ioctls[] = {
  	DRM_IOCTL_DEF(DRM_RADEON_IRQ_WAIT, radeon_irq_wait, DRM_AUTH),
  	DRM_IOCTL_DEF(DRM_RADEON_SETPARAM, radeon_cp_setparam, DRM_AUTH),
  	DRM_IOCTL_DEF(DRM_RADEON_SURF_ALLOC, radeon_surface_alloc, DRM_AUTH),
@@ -43239,7 +43276,7 @@
 +
  #endif				/* _I915_DRM_H_ */
 diff --git a/include/drm/radeon_drm.h b/include/drm/radeon_drm.h
-index 73ff51f..5c20c11 100644
+index 73ff51f..e4c53e4 100644
 --- a/include/drm/radeon_drm.h
 +++ b/include/drm/radeon_drm.h
 @@ -453,6 +453,15 @@ typedef struct {
@@ -43305,7 +43342,15 @@
  
  typedef struct drm_radeon_getparam {
  	int param;
-@@ -746,4 +781,105 @@ typedef struct drm_radeon_surface_free {
+@@ -731,6 +766,7 @@ typedef struct drm_radeon_setparam {
+ #define RADEON_SETPARAM_NEW_MEMMAP 4		/* Use new memory map */
+ #define RADEON_SETPARAM_PCIGART_TABLE_SIZE 5    /* PCI GART Table Size */
+ #define RADEON_SETPARAM_VBLANK_CRTC 6           /* VBLANK CRTC */
++#define RADEON_SETPARAM_MM_INIT 7               /* DDX wants memory manager but has no modesetting */
+ /* 1.14: Clients can allocate/free a surface
+  */
+ typedef struct drm_radeon_surface_alloc {
+@@ -746,4 +782,105 @@ typedef struct drm_radeon_surface_free {
  #define	DRM_RADEON_VBLANK_CRTC1		1
  #define	DRM_RADEON_VBLANK_CRTC2		2
  


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.837
retrieving revision 1.838
diff -u -r1.837 -r1.838
--- kernel.spec	3 Aug 2008 21:36:34 -0000	1.837
+++ kernel.spec	4 Aug 2008 04:26:02 -0000	1.838
@@ -1120,7 +1120,7 @@
 ApplyPatch linux-2.6-netdev-atl2.patch
 
 # Nouveau DRM + drm fixes
-#ApplyPatch drm-modesetting-radeon.patch
+ApplyPatch drm-modesetting-radeon.patch
 
 #ApplyPatch linux-2.6-drm-git-mm.patch
 #ApplyPatch nouveau-drm.patch
@@ -1711,6 +1711,9 @@
 %kernel_variant_files -k vmlinux %{with_kdump} kdump
 
 %changelog
+* Mon Aug 04 2008 Dave Airlie <airlied at redhat.com> 
+- rebase modesetting patch + fixes
+
 * Sat Aug 02 2008 Dave Jones <davej at redhat.com>
 - 2.6.27-rc1-git4
 




More information about the fedora-extras-commits mailing list