rpms/kernel/devel drm-modesetting-i915.patch, 1.2, 1.3 drm-modesetting-radeon.patch, 1.29, 1.30 kernel.spec, 1.970, 1.971

Dave Airlie airlied at fedoraproject.org
Tue Sep 23 05:06:42 UTC 2008


Author: airlied

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv15867

Modified Files:
	drm-modesetting-i915.patch drm-modesetting-radeon.patch 
	kernel.spec 
Log Message:
- rebase drm patches with latest upstream GEM bits


drm-modesetting-i915.patch:

Index: drm-modesetting-i915.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/drm-modesetting-i915.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- drm-modesetting-i915.patch	15 Sep 2008 22:49:20 -0000	1.2
+++ drm-modesetting-i915.patch	23 Sep 2008 05:06:11 -0000	1.3
@@ -1,64 +1,70 @@
-commit 30ff7e1eb97ba42a7e71890a77345a495f022eb5
+commit 2b391e551baddf9dabb06bee61023797ca810791
+Author: Kristian Høgsberg <krh at redhat.com>
+Date:   Mon Sep 22 16:43:04 2008 -0400
+
+    Update intel modesetting to use mm_private instead of mm_handle.
+
+commit 0e6b3649ab58deafd5fb531264ce89718cd31344
 Author: Dave Airlie <airlied at linux.ie>
 Date:   Tue Sep 16 08:46:41 2008 +1000
 
     drm/i915: fixup irqs and make i915 ints work again
 
-commit df3fafd56d88d44b7f691bc275406f19ac555869
+commit 033f754b3d4b903e79d314d072a1f6ffd89e0851
 Author: Dave Airlie <airlied at linux.ie>
 Date:   Tue Sep 16 06:59:58 2008 +1000
 
     enable msi interrupts
 
-commit 6fbaf1dee397b1f2240b3026dc89d0d39b789641
+commit af5c14da9b93227aa417ca08c53537772cb7cb04
 Author: Dave Airlie <airlied at linux.ie>
 Date:   Tue Sep 16 05:10:56 2008 +1000
 
     i915: fix issues with interrupts
 
-commit f0f6b59a6ab4f6a54780a4b7a8807659b3b9799a
+commit 9fcee2a986584c3bc9b743f53d6d9bebbd407161
 Author: Dave Airlie <airlied at panoply-rh.(none)>
 Date:   Tue Sep 9 16:03:12 2008 +1000
 
     i915: fixup hws page
 
-commit dae9cc44a08b0d5e79dec6b3cccc7f8f70cbe542
+commit d6964afe2fbb73b8d5d83d463bc9b122116099b0
 Author: Dave Airlie <airlied at linux.ie>
 Date:   Mon Sep 8 17:08:29 2008 +1000
 
     drm/i915: add modeset default config option support
 
-commit e4143dd833eec57e7f3ad9d54dc2e4d2315b10c0
+commit 065db6e5171231de0970540553d3845ea8b3ce63
 Author: Dave Airlie <airlied at linux.ie>
 Date:   Mon Sep 8 17:08:04 2008 +1000
 
     drm: export drm_mm_takedown
 
-commit 54608765a84591ecc16fe4fb468db12f8b603124
+commit bd0b4b01f6831f7e8f3ae4d743dfe7b4f1e710ae
 Author: Dave Airlie <airlied at linux.ie>
 Date:   Mon Sep 8 17:07:30 2008 +1000
 
     i915: fix master priv accesses
 
-commit 948a856992c8ebd2615c1c9b6d74a757d4e34e64
+commit 2284c4e99382fee59c07c61ae744a48100739463
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Mon Sep 8 13:45:34 2008 +1000
 
     intel: make build
 
-commit b8f2747a954a95e426baac1da0bb4cfee4dd534e
+commit 457d906e8c391e11326031a873c2daf7cee60411
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Mon Sep 8 13:28:52 2008 +1000
 
     jbarnes: add gtt map code
 
-commit 661f42dd5878bbea4f1c785bbe8b290bb2495437
+commit 922f29104a8fdcb54c73c426be413ea988231b79
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Mon Sep 8 13:27:53 2008 +1000
 
     jbarnes: add mmap_io_region
 
-commit d8dfa0ecb3fd079dbc7d0c709692ff417b86a6c7
+commit 7cfa2f3f752aa4353f81f93eb87cbd15fa7ff4d2
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Mon Sep 8 13:25:58 2008 +1000
 
@@ -2250,7 +2256,7 @@
 +	.destroy = tfp410_destroy,
 +};
 diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
-index bad0144..07b02d0 100644
+index 66e4b8e..0fd7f9d 100644
 --- a/drivers/gpu/drm/i915/i915_dma.c
 +++ b/drivers/gpu/drm/i915/i915_dma.c
 @@ -122,9 +122,19 @@ void i915_free_hws(struct drm_device *dev)
@@ -2283,7 +2289,7 @@
  {
  	drm_i915_private_t *dev_priv = dev->dev_private;
  	/* Make sure interrupts are disabled here because the uninstall ioctl
-@@ -760,6 +770,9 @@ static int i915_set_status_page(struct drm_device *dev, void *data,
+@@ -776,6 +786,9 @@ static int i915_set_status_page(struct drm_device *dev, void *data,
  		return -EINVAL;
  	}
  
@@ -2293,7 +2299,7 @@
  	printk(KERN_DEBUG "set status page addr 0x%08x\n", (u32)hws->addr);
  
  	dev_priv->status_gfx_addr = hws->addr & (0x1ffff<<12);
-@@ -788,129 +801,6 @@ static int i915_set_status_page(struct drm_device *dev, void *data,
+@@ -804,129 +817,6 @@ static int i915_set_status_page(struct drm_device *dev, void *data,
  	return 0;
  }
  
@@ -2423,7 +2429,7 @@
  struct drm_ioctl_desc i915_ioctls[] = {
  	DRM_IOCTL_DEF(DRM_I915_INIT, i915_dma_init, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
  	DRM_IOCTL_DEF(DRM_I915_FLUSH, i915_flush_ioctl, DRM_AUTH),
-@@ -941,6 +831,7 @@ struct drm_ioctl_desc i915_ioctls[] = {
+@@ -957,6 +847,7 @@ struct drm_ioctl_desc i915_ioctls[] = {
  	DRM_IOCTL_DEF(DRM_I915_GEM_PREAD, i915_gem_pread_ioctl, 0),
  	DRM_IOCTL_DEF(DRM_I915_GEM_PWRITE, i915_gem_pwrite_ioctl, 0),
  	DRM_IOCTL_DEF(DRM_I915_GEM_MMAP, i915_gem_mmap_ioctl, 0),
@@ -2954,7 +2960,7 @@
  }
  
 diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
-index 22b6925..52a16ed 100644
+index 5811601..19bbf6e 100644
 --- a/drivers/gpu/drm/i915/i915_drv.h
 +++ b/drivers/gpu/drm/i915/i915_drv.h
 @@ -32,6 +32,7 @@
@@ -3041,7 +3047,7 @@
  	/* Register state */
  	u8 saveLBB;
  	u32 saveDSPACNTR;
-@@ -404,8 +438,16 @@ struct drm_i915_file_private {
+@@ -407,8 +441,16 @@ struct drm_i915_file_private {
  	} mm;
  };
  
@@ -3058,7 +3064,7 @@
  
  extern int i915_master_create(struct drm_device *dev, struct drm_master *master);
  extern void i915_master_destroy(struct drm_device *dev, struct drm_master *master);
-@@ -426,6 +468,9 @@ extern long i915_compat_ioctl(struct file *filp, unsigned int cmd,
+@@ -429,6 +471,9 @@ extern long i915_compat_ioctl(struct file *filp, unsigned int cmd,
  extern int i915_emit_box(struct drm_device *dev,
  			 struct drm_clip_rect __user *boxes,
  			 int i, int DR1, int DR4);
@@ -3068,7 +3074,7 @@
  
  /* i915_irq.c */
  extern int i915_irq_emit(struct drm_device *dev, void *data,
-@@ -448,6 +493,7 @@ extern int i915_vblank_pipe_get(struct drm_device *dev, void *data,
+@@ -452,6 +497,7 @@ extern int i915_vblank_pipe_get(struct drm_device *dev, void *data,
  extern int i915_vblank_swap(struct drm_device *dev, void *data,
  			    struct drm_file *file_priv);
  extern void i915_enable_irq(drm_i915_private_t *dev_priv, u32 mask);
@@ -3076,7 +3082,7 @@
  
  /* i915_mem.c */
  extern int i915_mem_alloc(struct drm_device *dev, void *data,
-@@ -461,6 +507,11 @@ extern int i915_mem_destroy_heap(struct drm_device *dev, void *data,
+@@ -465,6 +511,11 @@ extern int i915_mem_destroy_heap(struct drm_device *dev, void *data,
  extern void i915_mem_takedown(struct mem_block **heap);
  extern void i915_mem_release(struct drm_device * dev,
  			     struct drm_file *file_priv, struct mem_block *heap);
@@ -3088,7 +3094,7 @@
  /* i915_gem.c */
  int i915_gem_init_ioctl(struct drm_device *dev, void *data,
  			struct drm_file *file_priv);
-@@ -472,6 +523,8 @@ int i915_gem_pwrite_ioctl(struct drm_device *dev, void *data,
+@@ -476,6 +527,8 @@ int i915_gem_pwrite_ioctl(struct drm_device *dev, void *data,
  			  struct drm_file *file_priv);
  int i915_gem_mmap_ioctl(struct drm_device *dev, void *data,
  			struct drm_file *file_priv);
@@ -3097,7 +3103,7 @@
  int i915_gem_set_domain_ioctl(struct drm_device *dev, void *data,
  			      struct drm_file *file_priv);
  int i915_gem_sw_finish_ioctl(struct drm_device *dev, void *data,
-@@ -506,6 +559,13 @@ uint32_t i915_get_gem_seqno(struct drm_device *dev);
+@@ -510,6 +563,13 @@ uint32_t i915_get_gem_seqno(struct drm_device *dev);
  void i915_gem_retire_requests(struct drm_device *dev);
  void i915_gem_retire_work_handler(struct work_struct *work);
  void i915_gem_clflush_object(struct drm_gem_object *obj);
@@ -3111,9 +3117,9 @@
  
  /* i915_gem_tiling.c */
  void i915_gem_detect_bit_6_swizzle(struct drm_device *dev);
-@@ -529,10 +589,16 @@ extern void intel_opregion_free(struct drm_device *dev);
- extern void opregion_asle_intr(struct drm_device *dev);
- extern void opregion_enable_asle(struct drm_device *dev);
+@@ -544,10 +604,16 @@ extern void opregion_enable_asle(struct drm_device *dev);
+ 		LOCK_TEST_WITH_RETURN(dev, file_priv);			\
+ } while (0)
  
 +/* modesetting */
 +extern void intel_modeset_init(struct drm_device *dev);
@@ -3128,7 +3134,7 @@
  
  #define I915_VERBOSE 0
  
-@@ -608,7 +674,7 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
+@@ -623,7 +689,7 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
  
  #define IS_I965GM(dev) ((dev)->pci_device == 0x2A02)
  
@@ -3137,7 +3143,7 @@
  
  #define IS_G4X(dev) ((dev)->pci_device == 0x2E02 || \
  		     (dev)->pci_device == 0x2E12 || \
-@@ -622,9 +688,9 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
+@@ -637,9 +703,9 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
  		      IS_I945GM(dev) || IS_I965G(dev) || IS_G33(dev))
  
  #define IS_MOBILE(dev) (IS_I830(dev) || IS_I85X(dev) || IS_I915GM(dev) || \
@@ -3150,7 +3156,7 @@
  #define PRIMARY_RINGBUFFER_SIZE         (128*1024)
  
 diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
-index 440659e..ee112ae 100644
+index 64dff87..c295621 100644
 --- a/drivers/gpu/drm/i915/i915_gem.c
 +++ b/drivers/gpu/drm/i915/i915_gem.c
 @@ -30,11 +30,9 @@
@@ -3316,7 +3322,7 @@
  i915_gem_object_set_domain(struct drm_gem_object *obj,
  			    uint32_t read_domains,
  			    uint32_t write_domain)
-@@ -1736,6 +1803,7 @@ i915_gem_ring_throttle(struct drm_device *dev, struct drm_file *file_priv)
+@@ -1738,6 +1805,7 @@ i915_gem_ring_throttle(struct drm_device *dev, struct drm_file *file_priv)
  	seqno = i915_file_priv->mm.last_gem_throttle_seqno;
  	i915_file_priv->mm.last_gem_throttle_seqno =
  		i915_file_priv->mm.last_gem_seqno;
@@ -3324,7 +3330,7 @@
  	if (seqno)
  		ret = i915_wait_request(dev, seqno);
  	mutex_unlock(&dev->struct_mutex);
-@@ -2324,7 +2392,8 @@ i915_gem_init_hws(struct drm_device *dev)
+@@ -2316,7 +2384,8 @@ i915_gem_init_hws(struct drm_device *dev)
  	int ret;
  
  	/* If we need a physical address for the status page, it's already
@@ -3334,7 +3340,7 @@
  	 */
  	if (!I915_NEED_GFX_HWS(dev))
  		return 0;
-@@ -2365,7 +2434,7 @@ i915_gem_init_hws(struct drm_device *dev)
+@@ -2357,7 +2426,7 @@ i915_gem_init_hws(struct drm_device *dev)
  	return 0;
  }
  
@@ -3343,7 +3349,7 @@
  i915_gem_init_ringbuffer(struct drm_device *dev)
  {
  	drm_i915_private_t *dev_priv = dev->dev_private;
-@@ -2429,7 +2498,7 @@ i915_gem_init_ringbuffer(struct drm_device *dev)
+@@ -2421,7 +2490,7 @@ i915_gem_init_ringbuffer(struct drm_device *dev)
  	return 0;
  }
  
@@ -3352,7 +3358,7 @@
  i915_gem_cleanup_ringbuffer(struct drm_device *dev)
  {
  	drm_i915_private_t *dev_priv = dev->dev_private;
-@@ -2462,6 +2531,9 @@ i915_gem_entervt_ioctl(struct drm_device *dev, void *data,
+@@ -2454,6 +2523,9 @@ i915_gem_entervt_ioctl(struct drm_device *dev, void *data,
  	drm_i915_private_t *dev_priv = dev->dev_private;
  	int ret;
  
@@ -3362,7 +3368,7 @@
  	if (dev_priv->mm.wedged) {
  		DRM_ERROR("Reenabling wedged hardware, good luck\n");
  		dev_priv->mm.wedged = 0;
-@@ -2490,6 +2562,9 @@ i915_gem_leavevt_ioctl(struct drm_device *dev, void *data,
+@@ -2482,6 +2554,9 @@ i915_gem_leavevt_ioctl(struct drm_device *dev, void *data,
  {
  	int ret;
  
@@ -3810,7 +3816,7 @@
 +	return 0;
 +}
 diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
-index 965ec74..3c2fc12 100644
+index 53db0cc..17c5621 100644
 --- a/drivers/gpu/drm/i915/i915_irq.c
 +++ b/drivers/gpu/drm/i915/i915_irq.c
 @@ -30,16 +30,27 @@
@@ -3843,7 +3849,7 @@
  void
  i915_enable_irq(drm_i915_private_t *dev_priv, u32 mask)
  {
-@@ -257,19 +268,16 @@ irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
+@@ -272,19 +283,16 @@ irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
  {
  	struct drm_device *dev = (struct drm_device *) arg;
  	drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
@@ -3866,7 +3872,7 @@
  	if (iir == 0) {
  		if (dev->pdev->msi_enabled) {
  			I915_WRITE(IMR, dev_priv->irq_mask_reg);
-@@ -278,38 +286,47 @@ irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
+@@ -293,38 +301,47 @@ irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
  		return IRQ_NONE;
  	}
  
@@ -3932,7 +3938,7 @@
  
  		DRM_WAKEUP(&dev->vbl_queue);
  		drm_vbl_send_signals(dev);
-@@ -485,6 +502,120 @@ int i915_irq_wait(struct drm_device *dev, void *data,
+@@ -503,6 +520,120 @@ int i915_irq_wait(struct drm_device *dev, void *data,
  	return i915_wait_irq(dev, irqwait->irq_seq);
  }
  
@@ -4053,7 +4059,7 @@
  /* Set the vblank monitor pipe
   */
  int i915_vblank_pipe_set(struct drm_device *dev, void *data,
-@@ -492,7 +623,6 @@ int i915_vblank_pipe_set(struct drm_device *dev, void *data,
+@@ -510,7 +641,6 @@ int i915_vblank_pipe_set(struct drm_device *dev, void *data,
  {
  	drm_i915_private_t *dev_priv = dev->dev_private;
  	drm_i915_vblank_pipe_t *pipe = data;
@@ -4061,7 +4067,7 @@
  
  	if (!dev_priv) {
  		DRM_ERROR("called with no initialization\n");
-@@ -504,18 +634,10 @@ int i915_vblank_pipe_set(struct drm_device *dev, void *data,
+@@ -522,18 +652,10 @@ int i915_vblank_pipe_set(struct drm_device *dev, void *data,
  		return -EINVAL;
  	}
  
@@ -4083,7 +4089,7 @@
  
  	dev_priv->vblank_pipe = pipe->pipe;
  
-@@ -527,18 +649,19 @@ int i915_vblank_pipe_get(struct drm_device *dev, void *data,
+@@ -545,18 +667,19 @@ int i915_vblank_pipe_get(struct drm_device *dev, void *data,
  {
  	drm_i915_private_t *dev_priv = dev->dev_private;
  	drm_i915_vblank_pipe_t *pipe = data;
@@ -4107,7 +4113,7 @@
  		pipe->pipe |= DRM_I915_VBLANK_PIPE_B;
  
  	return 0;
-@@ -657,7 +780,7 @@ void i915_driver_irq_preinstall(struct drm_device * dev)
+@@ -675,7 +798,7 @@ void i915_driver_irq_preinstall(struct drm_device * dev)
  {
  	drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
  
@@ -4116,7 +4122,7 @@
  	I915_WRITE(IMR, 0x0);
  	I915_WRITE(IER, 0x0);
  }
-@@ -670,24 +793,11 @@ void i915_driver_irq_postinstall(struct drm_device * dev)
+@@ -688,24 +811,11 @@ void i915_driver_irq_postinstall(struct drm_device * dev)
  	INIT_LIST_HEAD(&dev_priv->vbl_swaps.head);
  	dev_priv->swaps_pending = 0;
  
@@ -5583,10 +5589,10 @@
 +}
 diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
 new file mode 100644
-index 0000000..d7e02a2
+index 0000000..10d120a
 --- /dev/null
 +++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -0,0 +1,1602 @@
+@@ -0,0 +1,1619 @@
 +/*
 + * Copyright © 2006-2007 Intel Corporation
 + *
@@ -5959,6 +5965,7 @@
 +	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 +	struct intel_framebuffer *intel_fb;
 +	struct drm_i915_gem_object *obj_priv;
++	struct drm_gem_object *obj;
 +	int pipe = intel_crtc->pipe;
 +	unsigned long Start, Offset;
 +	int dspbase = (pipe == 0 ? DSPAADDR : DSPBADDR);
@@ -5975,7 +5982,8 @@
 +
 +	intel_fb = to_intel_framebuffer(crtc->fb);
 +
-+	obj_priv = intel_fb->obj->driver_private;
++	obj = intel_fb->base.mm_private;
++	obj_priv = obj->driver_private;
 +
 +	Start = obj_priv->gtt_offset;
 +	Offset = y * crtc->fb->pitch + x * (crtc->fb->bits_per_pixel / 8);
@@ -7053,21 +7061,34 @@
 +{
 +	struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb);
 +	struct drm_device *dev = fb->dev;
++
 +	if (fb->fbdev)
 +		intelfb_remove(dev, fb);
 +
 +	drm_framebuffer_cleanup(fb);
++	drm_gem_object_unreference(fb->mm_private);
 +
 +	kfree(intel_fb);
 +}
++
++static int intel_user_framebuffer_create_handle(struct drm_framebuffer *fb,
++						struct drm_file *file_priv,
++						unsigned int *handle)
++{
++	struct drm_gem_object *object = fb->mm_private;
++
++	return drm_gem_handle_create(file_priv, object, handle);
++}
 +      
 +static const struct drm_framebuffer_funcs intel_fb_funcs = {
 +	.destroy = intel_user_framebuffer_destroy,
++	.create_handle = intel_user_framebuffer_create_handle,
 +};
 +
-+struct drm_framebuffer *intel_user_framebuffer_create(struct drm_device *dev,
-+						      struct drm_file *filp,
-+						      struct drm_mode_fb_cmd *mode_cmd)
++struct drm_framebuffer *
++intel_framebuffer_create(struct drm_device *dev,
++			 struct drm_mode_fb_cmd *mode_cmd,
++			 void *mm_private)
 +{
 +	struct intel_framebuffer *intel_fb;
 +
@@ -7078,20 +7099,26 @@
 +	if (!drm_framebuffer_init(dev, &intel_fb->base, &intel_fb_funcs))
 +		return NULL;
 +
-+	drm_helper_mode_fill_fb_struct(&intel_fb->base, mode_cmd);
++	drm_helper_mode_fill_fb_struct(&intel_fb->base, mode_cmd, mm_private);
 +
-+	if (filp) {
-+		intel_fb->obj = drm_gem_object_lookup(dev, filp,
-+						      mode_cmd->handle);
-+		if (!intel_fb->obj) {
-+			kfree(intel_fb);
-+			return NULL;
-+		}
-+	}
-+	drm_gem_object_unreference(intel_fb->obj);
 +	return &intel_fb->base;
 +}
 +
++
++static struct drm_framebuffer *
++intel_user_framebuffer_create(struct drm_device *dev,
++			      struct drm_file *filp,
++			      struct drm_mode_fb_cmd *mode_cmd)
++{
++	struct drm_gem_object *obj;
++
++	obj = drm_gem_object_lookup(dev, filp, mode_cmd->handle);
++	if (!obj)
++		return NULL;
++
++	return intel_framebuffer_create(dev, mode_cmd, obj);
++}
++
 +static int intel_insert_new_fb(struct drm_device *dev, struct drm_file *file_priv,
 +				struct drm_framebuffer *fb, struct drm_mode_fb_cmd *mode_cmd)
 +{
@@ -7108,14 +7135,10 @@
 +		mutex_unlock(&dev->struct_mutex);
 +		return -EINVAL;
 +	}
-+	drm_helper_mode_fill_fb_struct(fb, mode_cmd);
-+
-+	drm_gem_object_unreference(intel_fb->obj);
-+	drm_gem_object_unreference(obj);
++	drm_gem_object_unreference(intel_fb->base.mm_private);
++	drm_helper_mode_fill_fb_struct(fb, mode_cmd, obj);
 +	mutex_unlock(&dev->struct_mutex);
 +
-+	intel_fb->obj = obj;
-+
 +	list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
 +		if (crtc->fb == fb) {
 +			struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private;
@@ -7191,7 +7214,7 @@
 +}
 diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
 new file mode 100644
-index 0000000..bffbeef
+index 0000000..256deac
 --- /dev/null
 +++ b/drivers/gpu/drm/i915/intel_drv.h
 @@ -0,0 +1,125 @@
@@ -7247,7 +7270,6 @@
 +
 +struct intel_framebuffer {
 +	struct drm_framebuffer base;
-+	struct drm_gem_object *obj;
 +};
 +
 +
@@ -7316,9 +7338,10 @@
 +extern void intel_crtc_fb_gamma_set(struct drm_crtc *crtc, u16 red, u16 green,
 +				    u16 blue, int regno);
 +
-+extern struct drm_framebuffer *intel_user_framebuffer_create(struct drm_device *dev,
-+							     struct drm_file *file_priv,
-+							     struct drm_mode_fb_cmd *mode_cmd);
++extern struct drm_framebuffer *
++intel_framebuffer_create(struct drm_device *dev,
++			 struct drm_mode_fb_cmd *mode_cmd,
++			 void *mm_private);
 +#endif /* __INTEL_DRV_H__ */
 diff --git a/drivers/gpu/drm/i915/intel_dvo.c b/drivers/gpu/drm/i915/intel_dvo.c
 new file mode 100644
@@ -7827,10 +7850,10 @@
 +}
 diff --git a/drivers/gpu/drm/i915/intel_fb.c b/drivers/gpu/drm/i915/intel_fb.c
 new file mode 100644
-index 0000000..fea083b
+index 0000000..8ec8e73
 --- /dev/null
 +++ b/drivers/gpu/drm/i915/intel_fb.c
-@@ -0,0 +1,910 @@
+@@ -0,0 +1,908 @@
 +/*
 + * Copyright © 2007 David Airlie
 + *
@@ -8321,7 +8344,7 @@
 +
 +	i915_gem_clflush_object(fbo);
 +
-+	fb = intel_user_framebuffer_create(dev, NULL, &mode_cmd);
++	fb = intel_framebuffer_create(dev, &mode_cmd, fbo);
 +	if (!fb) {
 +		DRM_ERROR("failed to allocate fb.\n");
 +		ret = -ENOMEM;
@@ -8333,8 +8356,6 @@
 +	intel_fb = to_intel_framebuffer(fb);
 +	*intel_fb_p = intel_fb;
 +
-+	intel_fb->obj = fbo;
-+
 +	info = framebuffer_alloc(sizeof(struct intelfb_par), device);
 +	if (!info) {
 +		ret = -ENOMEM;
@@ -8730,7 +8751,7 @@
 +		unregister_framebuffer(info);
 +		iounmap(info->screen_base);
 +		mutex_lock(&dev->struct_mutex);
-+		drm_gem_object_unreference(intel_fb->obj);
++		drm_gem_object_unreference(intel_fb->base.mm_private);
 +		mutex_unlock(&dev->struct_mutex);
 +		framebuffer_release(info);
 +	}
@@ -12837,10 +12858,10 @@
  	/** Handle for the object */
  	uint32_t handle;
 diff --git a/mm/mmap.c b/mm/mmap.c
-index 339cf5c..62f54fe 100644
+index e7a5a68..d689d36 100644
 --- a/mm/mmap.c
 +++ b/mm/mmap.c
-@@ -1244,6 +1244,171 @@ unacct_error:
+@@ -1248,6 +1248,171 @@ unacct_error:
  	return error;
  }
  

drm-modesetting-radeon.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.29 -r 1.30 drm-modesetting-radeon.patch
Index: drm-modesetting-radeon.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/drm-modesetting-radeon.patch,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- drm-modesetting-radeon.patch	19 Sep 2008 17:12:29 -0000	1.29
+++ drm-modesetting-radeon.patch	23 Sep 2008 05:06:11 -0000	1.30
@@ -1,22 +1,43 @@
-commit 68d1f0df534df3cadc55a064e38c9afb4a66b875
+commit 14eed5a3ffea4629d8189605a6ece8762f07d9fe
+Author: Kristian Høgsberg <krh at redhat.com>
+Date:   Mon Sep 22 18:40:36 2008 -0400
+
+    radeon: Fix type in check for tmds type.
+
+commit 0168869442658dbd7e33e65be597f9089a79e6a8
+Author: Kristian Høgsberg <krh at redhat.com>
+Date:   Mon Sep 22 12:00:57 2008 -0400
+
+    Store the buffer object backing the fb as a void pointer, not a handle.
+    
+    This lets us defer handle creation until userspace acutally asks for
+    one, at which point we also have a drm_file to associate it with.
+
+commit 0664262b8159ef0c66ad392d2d503c9f016985dc
+Author: Dave Airlie <airlied at linux.ie>
+Date:   Sun Sep 21 09:48:51 2008 +1000
+
+    drm: fixups on top of rebase
+
+commit 061cefa1df3eb9529d343188d3897155f00ff16c
 Author: Dave Airlie <airlied at linux.ie>
 Date:   Sat Sep 20 03:08:05 2008 +1000
 
     radeon: rmx_fixup() fixes for legacy chips
 
-commit 59a50b92d61cdd939026d7b5bcb2584e936927b0
+commit 3b23502dc6c04204635dc3a84ba5bcea1d190621
 Author: Dave Airlie <airlied at linux.ie>
 Date:   Sat Sep 20 01:55:27 2008 +1000
 
     radeon: fix combios
 
-commit 6a804321a2b1220143a64a3a78d72b03770fd285
+commit c059d6eff66af51a9444a01c39b3d759a6a0c729
 Author: Dave Airlie <airlied at linux.ie>
 Date:   Fri Sep 19 09:17:36 2008 +1000
 
     radeon: port Alexs patches from modesetting-gem
 
-commit 757bdeefa398c5b856d6321e3622436c676d04a5
+commit f35ce101abe8623172636bac692db1d0fd4e529c
 Author: Kristian Høgsberg <krh at redhat.com>
 Date:   Thu Sep 18 16:10:29 2008 -0400
 
@@ -25,7 +46,7 @@
     Shouldn't trigger under normal use and when something breaks, it will
     be easier to debug.
 
-commit 90f000493d3f8ea7338756e06fd644e0dcf0aff6
+commit e36fdeebf9d0ea75618b693abb1877a1b4a19bdf
 Author: Kristian Høgsberg <krh at redhat.com>
 Date:   Thu Sep 18 16:07:50 2008 -0400
 
@@ -34,25 +55,25 @@
     The X server emits writes to R300_DST_PIPE_CONFIG for R420 chipsets during
     accel init.
 
-commit af13076bbaad40f3553346a366b25942483f54fb
+commit d9852d3eff1b6d9f164aff30d9a22e6f93a6df08
 Author: Kristian Høgsberg <krh at redhat.com>
 Date:   Thu Sep 18 14:53:46 2008 -0400
 
     radeon kms: Get precedence right when computing PLL values.
 
-commit 41b33ad8bfd879c37f72e560e0b1e1b57f537093
+commit 2b786dcd4c4d53c4a6cb6405999c968f5ca304ac
 Author: Alex Deucher <alexdeucher at gmail.com>
 Date:   Thu Sep 18 09:55:14 2008 +1000
 
     radeon: further LVDS fixes
 
-commit 882f9bc454b85149fdf96db79932a8f1d57b5136
+commit 0ecedf0ffa7266e3652aee0995e23ca2fe5d8775
 Author: Alex Deucher <alexdeucher at gmail.com>
 Date:   Thu Sep 18 09:54:12 2008 +1000
 
     radeon: legacy lvds updates
 
-commit 7d7949742ae5d6d0aca8857bfcab77b2fffaf0d7
+commit e46e9dc68d2d3c01b14e19703134252452af724e
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Thu Sep 11 18:26:27 2008 +1000
 
@@ -60,7 +81,7 @@
     
     just fallback around busted stuff for now
 
-commit 3bd833adf4e37a47d9e794498c4cdb4bff09d167
+commit 48df612620c266cf324fdd12248b82e4f4d214d8
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Thu Sep 11 18:25:18 2008 +1000
 
@@ -68,13 +89,13 @@
     
     also dirty buffer on validate
 
-commit c323b90fe655fcee25aa7e39671c1594e897c4f6
+commit 3a58875d091f808f39b2684480b392a8e1858692
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Thu Sep 11 17:13:32 2008 +1000
 
     radeon: disable blit moves
 
-commit 7783a2254b7707861662b3f94ca2ca38c83ce64b
+commit 26421bce94db32eb3582bd852aca57e5ff3f3760
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Thu Sep 11 16:18:27 2008 +1000
 
@@ -82,73 +103,73 @@
     
     Normally this will be due to an AGP driver needing updating
 
-commit ed3d32c22ed856ef32594fe2efb88c55c8006627
+commit 5e7c7a1f7cf302847b6a9632d60cd0daf9f61eb8
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Wed Sep 10 14:35:43 2008 +1000
 
     radeon: do proper memory controller init and setup
 
-commit b20aa3e4a453fe5132794e6fddd0e03d0209466a
+commit 8bc3f7fe8ca6ad91354902eee4285838bf00eeaf
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Wed Sep 10 14:35:08 2008 +1000
 
     radeon: fix return value
 
-commit e64d245c67dce41434a5f9504d7f6f530cf7e5c2
+commit 722125d4dc2748c0b64dbe67492295f4d6d31511
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Wed Sep 10 14:34:39 2008 +1000
 
     radeon: fixup reference counting properly
 
-commit dc35ec837f7a0ff258e6fde4326ccae7fd77650b
+commit ac4ff77cf50396c58bddc797983b231e8245f744
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Tue Sep 9 15:55:38 2008 +1000
 
     radeon: sort out atom vs combios tables for r400 cards
 
-commit 3f4de41530215c5fe6a15b75defa1164615f4878
+commit b73c5ac2f7ed4d2fffb39308f2cf4071d6de4230
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Mon Sep 8 11:37:26 2008 +1000
 
     radeon: remove unneeded debugging
 
-commit 2a5b61e6726691102e075e07e6d9f8b1817b73d4
+commit 6f1ffd8613c786d51b7367f0ae30b61b72e05498
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Mon Sep 8 11:25:12 2008 +1000
 
     radeon: don't do full edid for detection purposes
 
-commit 563e90db2ca306fe0dee104703a48b5bc5d7fd93
+commit 41c9a919040f89a369291748448c4941cc4a8509
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Mon Sep 8 10:27:48 2008 +1000
 
     radeon: disable debugging that sneaky itself on
 
-commit aa65ff0b4b4e5309a5df36886170b97780245d53
+commit e179c186597b46e3931d30c09d2030ba0a865e0b
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Mon Sep 8 10:20:44 2008 +1000
 
     radeon: make text reserve 256k
 
-commit 65e46dddb8d5626c7299b22ee775a2592cbcca1b
+commit f78df3fab9f421253adfbdf353bcb2cefd16037a
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Mon Sep 8 10:11:27 2008 +1000
 
     radeon: don't disable VGA bits it breaks X later
 
-commit 7111e3e07597d2eaeea9e39e22e9228458eb615b
+commit 4559a458f95747e18c3a524b1c4fcb58d7bcd5e4
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Fri Sep 5 11:26:55 2008 +1000
 
     drm: export drm_i915_flip_t type to userspace to build Mesa
 
-commit b27e23f97a6896b0b9fb3981fbcc78246598fb1d
+commit 39014717471465c27bd9d234ae65767d5a44725f
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Fri Sep 5 16:12:59 2008 +1000
 
     radeon: further suspend/resume support
[...1989 lines suppressed...]
++		drm_gem_object_unreference(fb->mm_private);
 +		mutex_unlock(&dev->struct_mutex);
 +		framebuffer_release(info);
 +	}
@@ -38644,10 +38780,10 @@
  	radeon_enable_interrupt(dev);
 diff --git a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
 new file mode 100644
-index 0000000..d51fc52
+index 0000000..bc28c43
 --- /dev/null
 +++ b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
-@@ -0,0 +1,1025 @@
+@@ -0,0 +1,1029 @@
 +/*
 + * Copyright 2007-8 Advanced Micro Devices, Inc.
 + * Copyright 2008 Red Hat Inc.
@@ -38826,6 +38962,7 @@
 +	struct drm_device *dev = crtc->dev;
 +	struct drm_radeon_private *dev_priv = dev->dev_private;
 +	struct radeon_framebuffer *radeon_fb;
++	struct drm_gem_object *obj;
 +	struct drm_radeon_gem_object *obj_priv;
 +	uint32_t base;
 +	uint32_t crtc_offset, crtc_offset_cntl, crtc_tile_x0_y0 = 0;
@@ -38835,7 +38972,8 @@
 +
 +	radeon_fb = to_radeon_framebuffer(crtc->fb);
 +
-+	obj_priv = radeon_fb->obj->driver_private;
++	obj = radeon_fb->base.mm_private;
++	obj_priv = obj->driver_private;
 +
 +	crtc_offset = obj_priv->bo->offset;
 +
@@ -39249,6 +39387,7 @@
 +	struct drm_device *dev = crtc->dev;
 +	struct drm_radeon_private *dev_priv = dev->dev_private;
 +	struct radeon_framebuffer *radeon_fb;
++	struct drm_gem_object *obj;
 +	struct drm_radeon_gem_object *obj_priv;
 +	uint32_t base;
 +	uint32_t crtc2_offset, crtc2_offset_cntl, crtc2_tile_x0_y0 = 0;
@@ -39258,7 +39397,8 @@
 +
 +	radeon_fb = to_radeon_framebuffer(crtc->fb);
 +
-+	obj_priv = radeon_fb->obj->driver_private;
++	obj = radeon_fb->base.mm_private;
++	obj_priv = obj->driver_private;
 +
 +	crtc2_offset = obj_priv->bo->offset;
 +
@@ -41055,10 +41195,10 @@
  
 diff --git a/drivers/gpu/drm/radeon/radeon_mode.h b/drivers/gpu/drm/radeon/radeon_mode.h
 new file mode 100644
-index 0000000..d4b33dd
+index 0000000..577c3cf
 --- /dev/null
 +++ b/drivers/gpu/drm/radeon/radeon_mode.h
-@@ -0,0 +1,348 @@
+@@ -0,0 +1,347 @@
 +/*
 + * Copyright 2000 ATI Technologies Inc., Markham, Ontario, and
 + *                VA Linux Systems Inc., Fremont, California.
@@ -41309,7 +41449,6 @@
 +
 +struct radeon_framebuffer {
 +	struct drm_framebuffer base;
-+	struct drm_gem_object *obj;
 +	struct drm_bo_kmap_obj kmap_obj;
 +};
 +
@@ -41374,9 +41513,9 @@
 +extern void radeon_atom_initialize_bios_scratch_regs(struct drm_device *dev);
 +extern void radeon_crtc_fb_gamma_set(struct drm_crtc *crtc, u16 red, u16 green,
 +				     u16 blue, int regno);
-+struct drm_framebuffer *radeon_user_framebuffer_create(struct drm_device *dev,
-+						       struct drm_file *filp,
-+						       struct drm_mode_fb_cmd *mode_cmd);
++struct drm_framebuffer *radeon_framebuffer_create(struct drm_device *dev,
++						  struct drm_mode_fb_cmd *mode_cmd,
++						  void *mm_private);
 +
 +int radeonfb_probe(struct drm_device *dev);
 +
@@ -41409,10 +41548,10 @@
 +#endif
 diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c
 new file mode 100644
-index 0000000..92d44b5
+index 0000000..6b53c60
 --- /dev/null
 +++ b/drivers/gpu/drm/radeon/radeon_pm.c
-@@ -0,0 +1,240 @@
+@@ -0,0 +1,241 @@
 +/*
 + * Copyright 2007-8 Advanced Micro Devices, Inc.
 + * Copyright 2008 Red Hat Inc.
@@ -41469,10 +41608,10 @@
 +		if (!radeon_fb)
 +			continue;
 +
-+		if (!radeon_fb->obj)
++		if (!radeon_fb->base.mm_private)
 +			continue;
 +		
-+		radeon_gem_object_unpin(radeon_fb->obj);
++		radeon_gem_object_unpin(radeon_fb->base.mm_private);
 +	}
 +
 +	if (!(dev_priv->flags & RADEON_IS_IGP))
@@ -41583,10 +41722,11 @@
 +		if (!radeon_fb)
 +			continue;
 +
-+		if (!radeon_fb->obj)
++		if (!radeon_fb->base.mm_private)
 +			continue;
 +		
-+		radeon_gem_object_pin(radeon_fb->obj, PAGE_SIZE, RADEON_GEM_DOMAIN_VRAM);
++		radeon_gem_object_pin(radeon_fb->base.mm_private,
++				      PAGE_SIZE, RADEON_GEM_DOMAIN_VRAM);
 +	}
 +	/* blat the mode back in */
 +	drm_helper_resume_force_mode(dev);
@@ -47744,7 +47884,7 @@
  		struct drm_sman_mm sman_mm;
  		sman_mm.private = (void *)0xFFFFFFFF;
 diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
-index cce2f4c..4db67c5 100644
+index 36698e5..63b56f3 100644
 --- a/drivers/pci/probe.c
 +++ b/drivers/pci/probe.c
 @@ -203,13 +203,6 @@ static u64 pci_size(u64 base, u64 maxbase, u64 mask)
@@ -47761,7 +47901,7 @@
  static inline enum pci_bar_type decode_bar(struct resource *res, u32 bar)
  {
  	if ((bar & PCI_BASE_ADDRESS_SPACE) == PCI_BASE_ADDRESS_SPACE_IO) {
-@@ -322,6 +315,46 @@ static int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type,
+@@ -328,6 +321,46 @@ static int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type,
  	goto out;
  }
  
@@ -48756,10 +48896,10 @@
  #endif				/* __KERNEL__ */
 diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
 new file mode 100644
-index 0000000..5f63dc2
+index 0000000..6a73a71
 --- /dev/null
 +++ b/include/drm/drm_crtc.h
-@@ -0,0 +1,714 @@
+@@ -0,0 +1,717 @@
 +/*
 + * Copyright © 2006 Keith Packard
 + * Copyright © 2007 Intel Corporation
@@ -48982,6 +49122,9 @@
 +
 +struct drm_framebuffer_funcs {
 +	void (*destroy)(struct drm_framebuffer *framebuffer);
++	int (*create_handle)(struct drm_framebuffer *fb,
++			     struct drm_file *file_priv,
++			     unsigned int *handle);
 +};
 +
 +struct drm_framebuffer {
@@ -48999,7 +49142,7 @@
 +	void *fbdev;
 +	u32 pseudo_palette[17];
 +	struct list_head filp_head;
-+	uint32_t mm_handle;
++	void *mm_private;
 +};
 +
 +struct drm_property_blob {
@@ -49476,10 +49619,10 @@
 +
 diff --git a/include/drm/drm_crtc_helper.h b/include/drm/drm_crtc_helper.h
 new file mode 100644
-index 0000000..c071915
+index 0000000..01b1423
 --- /dev/null
 +++ b/include/drm/drm_crtc_helper.h
-@@ -0,0 +1,96 @@
+@@ -0,0 +1,97 @@
 +/*
 + * Copyright © 2006 Keith Packard
 + * Copyright © 2007 Intel Corporation
@@ -49557,7 +49700,8 @@
 +extern bool drm_helper_crtc_in_use(struct drm_crtc *crtc);
 +
 +extern int drm_helper_mode_fill_fb_struct(struct drm_framebuffer *fb,
-+					  struct drm_mode_fb_cmd *mode_cmd);
++					  struct drm_mode_fb_cmd *mode_cmd,
++					  void *mm_private);
 +
 +static inline void drm_crtc_helper_add(struct drm_crtc *crtc, const struct drm_crtc_helper_funcs *funcs)
 +{


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.970
retrieving revision 1.971
diff -u -r1.970 -r1.971
--- kernel.spec	23 Sep 2008 01:52:47 -0000	1.970
+++ kernel.spec	23 Sep 2008 05:06:11 -0000	1.971
@@ -609,9 +609,6 @@
 Patch1811: drm-modesetting-radeon.patch
 Patch1812: drm-modesetting-i915.patch
 Patch1813: drm-nouveau.patch
-Patch1814: drm-create-handle-for-fb.patch
-Patch1815: drm-modesetting-intel-mm-private.patch
-Patch1816: drm-modesetting-fix-external-tmds-check.patch
 
 # kludge to make ich9 e1000 work
 Patch2000: linux-2.6-e1000-ich9.patch
@@ -1170,9 +1167,6 @@
 ApplyPatch drm-modesetting-radeon.patch
 ApplyPatch drm-modesetting-i915.patch
 ApplyPatch drm-nouveau.patch
-ApplyPatch drm-create-handle-for-fb.patch
-ApplyPatch drm-modesetting-intel-mm-private.patch
-ApplyPatch drm-modesetting-fix-external-tmds-check.patch
 
 # linux1394 git patches
 ApplyPatch linux-2.6-firewire-git-update.patch
@@ -1764,6 +1758,9 @@
 %kernel_variant_files -k vmlinux %{with_kdump} kdump
 
 %changelog
+* Tue Sep 23 2008 Dave Airlie <airlied at redhat.com>
+- rebase drm patches with latest upstream GEM bits
+
 * Mon Sep 22 2008 Jeremy Katz <katzj at redhat.com>
 - Enable Geode framebuffer so that we can have a console on the XO
 




More information about the fedora-extras-commits mailing list