rpms/kernel/devel drm-modesetting-radeon.patch, 1.1, 1.2 kernel.spec, 1.829, 1.830

Dave Airlie (airlied) fedora-extras-commits at redhat.com
Fri Aug 1 06:59:36 UTC 2008


Author: airlied

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

Modified Files:
	drm-modesetting-radeon.patch kernel.spec 
Log Message:
* Fri Aug 01 2008 Dave Airlie <airlied at redhat.com>
- Fix ppc build with drm changes


drm-modesetting-radeon.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.1 -r 1.2 drm-modesetting-radeon.patch
Index: drm-modesetting-radeon.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/drm-modesetting-radeon.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- drm-modesetting-radeon.patch	1 Aug 2008 06:23:54 -0000	1.1
+++ drm-modesetting-radeon.patch	1 Aug 2008 06:59:05 -0000	1.2
@@ -3358,7 +3358,7 @@
 +EXPORT_SYMBOL(drm_bo_pfn_prot);
 +
 diff --git a/drivers/gpu/drm/drm_bufs.c b/drivers/gpu/drm/drm_bufs.c
-index bde64b8..796dc65 100644
+index bde64b8..6355eed 100644
 --- a/drivers/gpu/drm/drm_bufs.c
 +++ b/drivers/gpu/drm/drm_bufs.c
 @@ -54,9 +54,9 @@ static struct drm_map_list *drm_find_matching_map(struct drm_device *dev,
@@ -3397,6 +3397,15 @@
  	*maplist = list;
  	return 0;
  	}
+@@ -345,7 +346,7 @@ int drm_addmap_ioctl(struct drm_device *dev, void *data,
+ 	struct drm_map_list *maplist;
+ 	int err;
+ 
+-	if (!(capable(CAP_SYS_ADMIN) || map->type == _DRM_AGP))
++	if (!(capable(CAP_SYS_ADMIN) || map->type == _DRM_AGP || map->type == _DRM_SHM))
+ 		return -EPERM;
+ 
+ 	err = drm_addmap_core(dev, map->offset, map->size, map->type,
 @@ -380,10 +381,12 @@ int drm_rmmap_locked(struct drm_device *dev, drm_local_map_t *map)
  	struct drm_map_list *r_list = NULL, *list_t;
  	drm_dma_handle_t dmah;
@@ -3435,10 +3444,10 @@
  
 diff --git a/drivers/gpu/drm/drm_cache.c b/drivers/gpu/drm/drm_cache.c
 new file mode 100644
-index 0000000..1c01e6c
+index 0000000..0b25c8d
 --- /dev/null
 +++ b/drivers/gpu/drm/drm_cache.c
-@@ -0,0 +1,76 @@
+@@ -0,0 +1,78 @@
 +/**************************************************************************
 + *
 + * Copyright (c) 2006-2007 Tungsten Graphics, Inc., Cedar Park, TX., USA
@@ -3491,7 +3500,9 @@
 +static void
 +drm_clflush_ipi_handler(void *null)
 +{
++#if defined(CONFIG_X86)
 +	wbinvd();
++#endif
 +}
 +
 +void
@@ -8156,7 +8167,7 @@
 +}
 +
 diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c
-index 851a53f..f9a2682 100644
+index 851a53f..b2aa140 100644
 --- a/drivers/gpu/drm/drm_fops.c
 +++ b/drivers/gpu/drm/drm_fops.c
 @@ -44,10 +44,8 @@ static int drm_open_helper(struct inode *inode, struct file *filp,
@@ -8223,16 +8234,18 @@
  
  	return retcode;
  }
-@@ -256,16 +250,51 @@ static int drm_open_helper(struct inode *inode, struct file *filp,
+@@ -255,6 +249,10 @@ static int drm_open_helper(struct inode *inode, struct file *filp,
+ 	priv->lock_count = 0;
  
  	INIT_LIST_HEAD(&priv->lhead);
- 
++	INIT_LIST_HEAD(&priv->fbs);
++
 +	if (dev->driver->driver_features & DRIVER_GEM)
 +		drm_gem_open(dev, priv);
-+
+ 
  	if (dev->driver->open) {
  		ret = dev->driver->open(dev, priv);
- 		if (ret < 0)
+@@ -262,10 +260,42 @@ static int drm_open_helper(struct inode *inode, struct file *filp,
  			goto out_free;
  	}
  
@@ -8248,7 +8261,7 @@
 +			ret = -ENOMEM;
 +			goto out_free;
 +		}
-+
+ 
 +		priv->is_master = 1;
 +		/* take another reference for the copy in the local file priv */
 +		priv->master = drm_master_get(priv->minor->master);
@@ -8272,12 +8285,12 @@
 +		priv->master = drm_master_get(priv->minor->master);
 +		mutex_unlock(&dev->struct_mutex);
 +	}
- 
++
 +	mutex_lock(&dev->struct_mutex);
  	list_add(&priv->lhead, &dev->filelist);
  	mutex_unlock(&dev->struct_mutex);
  
-@@ -345,60 +374,67 @@ int drm_release(struct inode *inode, struct file *filp)
+@@ -345,60 +375,67 @@ int drm_release(struct inode *inode, struct file *filp)
  		  (long)old_encode_dev(file_priv->minor->device),
  		  dev->open_count);
  
@@ -8345,12 +8358,8 @@
 -			drm_idlelock_release(&dev->lock);
  		}
 -	}
--
--	if (dev->driver->reclaim_buffers_idlelocked && dev->lock.hw_lock) {
  
--		drm_idlelock_take(&dev->lock);
--		dev->driver->reclaim_buffers_idlelocked(dev, file_priv);
--		drm_idlelock_release(&dev->lock);
+-	if (dev->driver->reclaim_buffers_idlelocked && dev->lock.hw_lock) {
 +		if (dev->driver->reclaim_buffers_idlelocked && file_priv->master->lock.hw_lock) {
 +			
 +			drm_idlelock_take(&file_priv->master->lock);
@@ -8359,8 +8368,12 @@
 +			
 +		}
  
--	}
+-		drm_idlelock_take(&dev->lock);
+-		dev->driver->reclaim_buffers_idlelocked(dev, file_priv);
+-		drm_idlelock_release(&dev->lock);
  
+-	}
+-
 -	if (drm_i_have_hw_lock(dev, file_priv)) {
 -		DRM_DEBUG("File %p released, freeing lock for context %d\n",
 -			  filp, _DRM_LOCKING_CONTEXT(dev->lock.hw_lock->lock));
@@ -8391,12 +8404,15 @@
  
  	drm_fasync(-1, filp, 0);
  
-@@ -424,12 +460,27 @@ int drm_release(struct inode *inode, struct file *filp)
+@@ -424,12 +461,30 @@ int drm_release(struct inode *inode, struct file *filp)
  	mutex_unlock(&dev->ctxlist_mutex);
  
  	mutex_lock(&dev->struct_mutex);
 -	if (file_priv->remove_auth_on_close == 1) {
 +
++	if (drm_core_check_feature(dev, DRIVER_MODESET))
++		drm_fb_release(filp);
++
 +	if (file_priv->is_master) {
  		struct drm_file *temp;
 +		list_for_each_entry(temp, &dev->filelist, lhead) {
@@ -8422,7 +8438,7 @@
  	list_del(&file_priv->lhead);
  	mutex_unlock(&dev->struct_mutex);
  
-@@ -444,9 +495,9 @@ int drm_release(struct inode *inode, struct file *filp)
+@@ -444,9 +499,9 @@ int drm_release(struct inode *inode, struct file *filp)
  	atomic_inc(&dev->counts[_DRM_STAT_CLOSES]);
  	spin_lock(&dev->count_lock);
  	if (!--dev->open_count) {
@@ -8997,7 +9013,7 @@
  	}
  
 diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c
-index 089c015..d518e6e 100644
+index 089c015..0426ac5 100644
 --- a/drivers/gpu/drm/drm_irq.c
 +++ b/drivers/gpu/drm/drm_irq.c
 @@ -63,7 +63,7 @@ int drm_irq_by_busid(struct drm_device *dev, void *data,
@@ -9009,6 +9025,15 @@
  
  	DRM_DEBUG("%d:%d:%d => IRQ %d\n", p->busnum, p->devnum, p->funcnum,
  		  p->irq);
+@@ -81,7 +81,7 @@ int drm_irq_by_busid(struct drm_device *dev, void *data,
+  * \c drm_driver_irq_preinstall() and \c drm_driver_irq_postinstall() functions
+  * before and after the installation.
+  */
+-static int drm_irq_install(struct drm_device * dev)
++int drm_irq_install(struct drm_device *dev)
+ {
+ 	int ret;
+ 	unsigned long sh_flags = 0;
 @@ -89,7 +89,7 @@ static int drm_irq_install(struct drm_device * dev)
  	if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ))
  		return -EINVAL;
@@ -9041,7 +9066,15 @@
  	if (ret < 0) {
  		mutex_lock(&dev->struct_mutex);
  		dev->irq_enabled = 0;
-@@ -164,11 +168,11 @@ int drm_irq_uninstall(struct drm_device * dev)
+@@ -141,6 +145,7 @@ static int drm_irq_install(struct drm_device * dev)
+ 
+ 	return 0;
+ }
[...21517 lines suppressed...]
  extern void drm_sysfs_destroy(void);
  extern int drm_sysfs_device_add(struct drm_minor *minor);
@@ -20308,7 +40842,7 @@
  
  /*
   * Basic memory manager support (drm_mm.c)
-@@ -1088,6 +1289,66 @@ extern unsigned long drm_mm_tail_space(struct drm_mm *mm);
+@@ -1088,6 +1292,66 @@ extern unsigned long drm_mm_tail_space(struct drm_mm *mm);
  extern int drm_mm_remove_space_from_tail(struct drm_mm *mm, unsigned long size);
  extern int drm_mm_add_space_to_tail(struct drm_mm *mm, unsigned long size);
  
@@ -20375,7 +40909,7 @@
  extern void drm_core_ioremap(struct drm_map *map, struct drm_device *dev);
  extern void drm_core_ioremap_wc(struct drm_map *map, struct drm_device *dev);
  extern void drm_core_ioremapfree(struct drm_map *map, struct drm_device *dev);
-@@ -1148,6 +1409,39 @@ extern void drm_free(void *pt, size_t size, int area);
+@@ -1148,6 +1412,39 @@ extern void drm_free(void *pt, size_t size, int area);
  extern void *drm_calloc(size_t nmemb, size_t size, int area);
  #endif
  
@@ -22693,6 +43227,179 @@
 +};
 +
  #endif				/* _I915_DRM_H_ */
+diff --git a/include/drm/radeon_drm.h b/include/drm/radeon_drm.h
+index 73ff51f..5c20c11 100644
+--- a/include/drm/radeon_drm.h
++++ b/include/drm/radeon_drm.h
+@@ -453,6 +453,15 @@ typedef struct {
+ 	int pfCurrentPage;	/* which buffer is being displayed? */
+ 	int crtc2_base;		/* CRTC2 frame offset */
+ 	int tiling_enabled;	/* set by drm, read by 2d + 3d clients */
++
++	unsigned int last_fence;
++
++	uint32_t front_handle;
++	uint32_t back_handle;
++	uint32_t depth_handle;
++	uint32_t front_pitch;
++	uint32_t back_pitch;
++	uint32_t depth_pitch;
+ } drm_radeon_sarea_t;
+ 
+ /* WARNING: If you change any of these defines, make sure to change the
+@@ -493,6 +502,18 @@ typedef struct {
+ #define DRM_RADEON_SURF_ALLOC 0x1a
+ #define DRM_RADEON_SURF_FREE  0x1b
+ 
++#define DRM_RADEON_GEM_INFO   0x1c
++#define DRM_RADEON_GEM_CREATE 0x1d
++#define DRM_RADEON_GEM_MMAP   0x1e
++#define DRM_RADEON_GEM_PIN    0x1f
++#define DRM_RADEON_GEM_UNPIN  0x20
++#define DRM_RADEON_GEM_PREAD  0x21
++#define DRM_RADEON_GEM_PWRITE 0x22
++#define DRM_RADEON_GEM_SET_DOMAIN 0x23
++#define DRM_RADEON_GEM_INDIRECT 0x24 // temporary for X server
++
++#define DRM_RADEON_CS           0x25
++
+ #define DRM_IOCTL_RADEON_CP_INIT    DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CP_INIT, drm_radeon_init_t)
+ #define DRM_IOCTL_RADEON_CP_START   DRM_IO(  DRM_COMMAND_BASE + DRM_RADEON_CP_START)
+ #define DRM_IOCTL_RADEON_CP_STOP    DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CP_STOP, drm_radeon_cp_stop_t)
+@@ -521,6 +542,19 @@ typedef struct {
+ #define DRM_IOCTL_RADEON_SURF_ALLOC DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SURF_ALLOC, drm_radeon_surface_alloc_t)
+ #define DRM_IOCTL_RADEON_SURF_FREE  DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SURF_FREE, drm_radeon_surface_free_t)
+ 
++#define DRM_IOCTL_RADEON_GEM_INFO   DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_INFO, struct drm_radeon_gem_info)
++#define DRM_IOCTL_RADEON_GEM_CREATE   DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_CREATE, struct drm_radeon_gem_create)
++#define DRM_IOCTL_RADEON_GEM_MMAP   DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_MMAP, struct drm_radeon_gem_mmap)
++#define DRM_IOCTL_RADEON_GEM_PIN   DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_PIN, struct drm_radeon_gem_pin)
++#define DRM_IOCTL_RADEON_GEM_UNPIN   DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_UNPIN, struct drm_radeon_gem_unpin)
++#define DRM_IOCTL_RADEON_GEM_PREAD   DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_PREAD, struct drm_radeon_gem_pread)
++#define DRM_IOCTL_RADEON_GEM_PWRITE   DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_PWRITE, struct drm_radeon_gem_pwrite)
++#define DRM_IOCTL_RADEON_GEM_SET_DOMAIN  DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_SET_DOMAIN, struct drm_radeon_gem_set_domain)
++#define DRM_IOCTL_RADEON_GEM_INDIRECT DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_INDIRECT, struct drm_radeon_gem_indirect)
++
++#define DRM_IOCTL_RADEON_CS DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_CS, struct drm_radeon_cs)
++
++
+ typedef struct drm_radeon_init {
+ 	enum {
+ 		RADEON_INIT_CP = 0x01,
+@@ -677,6 +711,7 @@ typedef struct drm_radeon_indirect {
+ #define RADEON_PARAM_VBLANK_CRTC           13   /* VBLANK CRTC */
+ #define RADEON_PARAM_FB_LOCATION           14   /* FB location */
+ #define RADEON_PARAM_NUM_GB_PIPES          15   /* num GB pipes */
++#define RADEON_PARAM_KERNEL_MM             16
+ 
+ typedef struct drm_radeon_getparam {
+ 	int param;
+@@ -746,4 +781,105 @@ typedef struct drm_radeon_surface_free {
+ #define	DRM_RADEON_VBLANK_CRTC1		1
+ #define	DRM_RADEON_VBLANK_CRTC2		2
+ 
++#define RADEON_GEM_DOMAIN_CPU 0x1
++#define RADEON_GEM_DOMAIN_VRAM 0x2
++#define RADEON_GEM_DOMAIN_2D 0x4
++#define RADEON_GEM_DOMAIN_3D 0x8
++#define RADEON_GEM_DOMAIN_TEXTURE 0x10
++#define RADEON_GEM_DOMAIN_GPU 0x20 // for vertex buffers
++
++/* return to userspace start/size of gtt and vram apertures */
++struct drm_radeon_gem_info {
++	uint64_t gart_start;
++	uint64_t gart_size;
++	uint64_t vram_start;
++	uint64_t vram_size;
++	uint64_t vram_visible;
++};
++
++struct drm_radeon_gem_create {
++	uint64_t size;
++	uint64_t alignment;
++	uint32_t handle;
++	uint32_t initial_domain; // to allow VRAM to be created
++	uint32_t no_backing_store; // for VRAM objects - select whether they need backing store
++	// pretty much front/back/depth don't need it - other things do
++};
++
++struct drm_radeon_gem_mmap {
++	uint32_t handle;
++	uint32_t pad;
++	uint64_t offset;
++	uint64_t size;
++	uint64_t addr_ptr;
++};
++
++struct drm_radeon_gem_set_domain {
++	uint32_t handle;
++	uint32_t read_domains;
++	uint32_t write_domain;
++};
++
++struct drm_radeon_gem_exec_buffer {
++};
++
++struct drm_radeon_gem_pin {
++	uint32_t handle;
++	uint32_t pad;
++	uint64_t alignment;
++	uint64_t offset;
++};
++
++struct drm_radeon_gem_unpin {
++	uint32_t handle;
++	uint32_t pad;
++};
++
++struct drm_radeon_gem_busy {
++	uint32_t handle;
++	uint32_t busy;
++};
++
++struct drm_radeon_gem_pread {
++	/** Handle for the object being read. */
++	uint32_t handle;
++	uint32_t pad;
++	/** Offset into the object to read from */
++	uint64_t offset;
++	/** Length of data to read */
++	uint64_t size;
++	/** Pointer to write the data into. */
++	uint64_t data_ptr;	/* void *, but pointers are not 32/64 compatible */
++};
++
++struct drm_radeon_gem_pwrite {
++	/** Handle for the object being written to. */
++	uint32_t handle;
++	uint32_t pad;
++	/** Offset into the object to write to */
++	uint64_t offset;
++	/** Length of data to write */
++	uint64_t size;
++	/** Pointer to read the data from. */
++	uint64_t data_ptr;	/* void *, but pointers are not 32/64 compatible */
++};
++
++struct drm_radeon_gem_indirect {
++	uint32_t handle;
++	uint32_t used;
++};
++
++/* New interface which obsolete all previous interface.
++ */
++
++
++struct drm_radeon_cs {
++//	uint32_t __user     *packets;
++	uint32_t            dwords;
++	uint32_t            cs_id;
++	uint64_t            packets;
++
++};
++
++
+ #endif
 diff --git a/include/linux/mm.h b/include/linux/mm.h
 index 335288b..dca69f9 100644
 --- a/include/linux/mm.h


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.829
retrieving revision 1.830
diff -u -r1.829 -r1.830
--- kernel.spec	1 Aug 2008 06:23:54 -0000	1.829
+++ kernel.spec	1 Aug 2008 06:59:06 -0000	1.830
@@ -1712,6 +1712,9 @@
 
 %changelog
 * Fri Aug 01 2008 Dave Airlie <airlied at redhat.com>
+- Fix ppc build with drm changes
+
+* Fri Aug 01 2008 Dave Airlie <airlied at redhat.com>
 - Add initial radeon kernel modesetting jumbo patch
 
 * Thu Jul 31 2008 Dave Jones <davej at redhat.com>




More information about the fedora-extras-commits mailing list