rpms/kernel/devel kernel.spec, 1.458, 1.459 linux-2.6-drm-git-mm.patch, 1.1, 1.2

Dave Airlie (airlied) fedora-extras-commits at redhat.com
Fri Feb 29 02:11:58 UTC 2008


Author: airlied

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

Modified Files:
	kernel.spec linux-2.6-drm-git-mm.patch 
Log Message:
* Wed Feb 27 2008 Dave Airlie <airlied at redhat.com>
- linux-2.6-drm-git-mm.patch - update to latest -mm queue - adds DRI2



Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.458
retrieving revision 1.459
diff -u -r1.458 -r1.459
--- kernel.spec	28 Feb 2008 23:42:01 -0000	1.458
+++ kernel.spec	29 Feb 2008 02:11:08 -0000	1.459
@@ -65,13 +65,13 @@
 # kernel-smp (only valid for ppc 32-bit, sparc64)
 %define with_smp       %{?_without_smp:       0} %{?!_without_smp:       1}
 # kernel-PAE (only valid for i686)
-%define with_pae       %{?_without_pae:       0} %{?!_without_pae:       1}
+%define with_pae       %{?_without_pae:       0} %{?!_without_pae:       0}
 # kernel-xen
-%define with_xen       %{?_without_xen:       0} %{?!_without_xen:       1}
+%define with_xen       %{?_without_xen:       0} %{?!_without_xen:       0}
 # kernel-kdump
 %define with_kdump     %{?_without_kdump:     0} %{?!_without_kdump:     1}
 # kernel-debug
-%define with_debug     %{?_without_debug:     0} %{!?_without_debug:     1}
+%define with_debug     %{?_without_debug:     0} %{!?_without_debug:     0}
 # kernel-doc
 %define with_doc       %{?_without_doc:       0} %{?!_without_doc:       1}
 # kernel-headers
@@ -1736,6 +1736,9 @@
 
 %changelog
 * Wed Feb 27 2008 Dave Airlie <airlied at redhat.com>
+- linux-2.6-drm-git-mm.patch - update to latest -mm queue - adds DRI2
+
+* Wed Feb 27 2008 Dave Airlie <airlied at redhat.com>
 - linux-2.6-drm-git-mm.patch - Add upstream git queue
 
 * Wed Feb 27 2008 John W. Linville <linville at redhat.com>

linux-2.6-drm-git-mm.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.1 -r 1.2 linux-2.6-drm-git-mm.patch
Index: linux-2.6-drm-git-mm.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-drm-git-mm.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- linux-2.6-drm-git-mm.patch	28 Feb 2008 23:42:01 -0000	1.1
+++ linux-2.6-drm-git-mm.patch	29 Feb 2008 02:11:08 -0000	1.2
@@ -1,3 +1,129 @@
+commit 9ad1ccf9cff8aa911d965c94b83187b50c459d43
+Author: Xiang, Haihao <haihao.xiang at intel.com>
+Date:   Fri Feb 29 12:07:01 2008 +1000
+
+    i915: i915_execbuffer ioctl32 routine, fix #13732
+    
+    Signed-off-by: Dave Airlie <airlied at redhat.com>
+
+commit aa0e20c041614319ff66a40c5f70a9f7eae01fbc
+Author: Thomas Hellstrom <thomas-at-tungstengraphics-dot-com>
+Date:   Fri Feb 29 12:05:48 2008 +1000
+
+    drm/ttm: Add a compat kmap_atomic_prot_pfn to do quick kernel map / unmaps of PCI- or high memory.
+    
+    This is substantially more efficient than drm_bo_kmap, since the mapping only lives on a single processor.  Unmapping is done use kunmap_atomic(). Flushes only a single tlb() entry.
+    
+    Add a support utility int drm_bo_pfn_prot() that returns the pfn and desired page protection for a given bo offset.
+    
+    This is all intended for relocations in bound TTMS or vram.  Mapping-accessing-unmapping must be atomic, either using preempt_xx() macros or a spinlock.
+    
+    Signed-off-by: Dave Airlie <airlied at redhat.com>
+
+commit 9c005b094ecada32e04e0b9ebdcfe3ab47fe86b7
+Author: Thomas Hellstrom <thomas-at-tungstengraphics-dot-com>
+Date:   Fri Feb 29 11:53:45 2008 +1000
+
+    drm/i915: relocation fixes.
+    
+    This fixes various problems in the relocations for i915.
+    
+    Signed-off-by: Dave Airlie <airlied at redhat.com>
+
+commit 35c64f7d95512505400849241605d26b9a9801b4
+Author: Thomas Hellstrom <thomas-at-tungstengraphics-dot-com>
+Date:   Fri Feb 29 11:49:39 2008 +1000
+
+    drm/i915: Make the execbuffer code reasonably safe against errors.
+    
+    In particular -EAGAINs, which should be common during Xserver operation.
+    Also handle the fence creation failure case.
+    
+    Signed-off-by: Dave Airlie <airlied at redhat.com>
+
+commit ae0806d80764d8ae63e74a5d7e3921a532d61d14
+Author: Thomas Hellstrom <thomas-at-tungstengraphics-dot-com>
+Date:   Fri Feb 29 11:41:36 2008 +1000
+
+    drm/fence: add a last queued sequence member
+    
+    Add an fence_class_manager::last_queued_sequence member, since a sequence number may actually turn up before the corresponding fence object has been queued on the ring.
+    
+    Fence drivers can use this member to determine whether a sequence number must be re-reported.
+    
+    Signed-off-by: Dave Airlie <airlied at redhat.com>
+
+commit e3d3d4c7421a2277be24254524f56e17419c1449
+Author: Kristian Høgsberg <krh at redhat.com>
+Date:   Fri Feb 29 11:38:20 2008 +1000
+
+    drm/i915: remove leading underscores and fixup sarea
+    
+    the sarea fix came from Alan Hourihane
+    
+    Signed-off-by: Dave Airlie <airlied at redhat.com>
+
+commit e1a98c2e5dd333becd47e188cf66093e1a86f41b
+Author: Kristian Høgsberg <krh at redhat.com>
+Date:   Fri Feb 29 11:35:21 2008 +1000
+
+    drm/i915: Add a dri2 init path that gets the lock from the dri2 sarea.
+    
+    Signed-off-by: Dave Airlie <airlied at redhat.com>
+
+commit 70a1de5ac59b59cb8f7c1d08ce455374785bca05
+Author: Kristian Høgsberg <krh at redhat.com>
+Date:   Fri Feb 29 11:31:08 2008 +1000
+
+    drm/i915: Only look up dev_priv->mmio_map if it's not already set up
+    
+    Signed-off-by: Dave Airlie <airlied at redhat.com>
+
+commit 047243f9c142c599d1ab82991a5a0a8dd0170bb8
+Author: Kristian Høgsberg <krh at redhat.com>
+Date:   Fri Feb 29 11:30:26 2008 +1000
+
+    drm/i915: Add I915_PARAM_CHIPSET_ID param to get chipset ID.
+    
+    Signed-off-by: Dave Airlie <airlied at redhat.com>
+
+commit b57dde526e116f14a5697b5c0d9697493baa2d5d
+Author: Kristian Høgsberg <krh at redhat.com>
+Date:   Fri Feb 29 11:29:42 2008 +1000
+
+    drm/i915: Make sarea_priv setup optional.
+    
+    Signed-off-by: Dave Airlie <airlied at redhat.com>
+
+commit 3cb77dd7f3974fc64de6ec3859c970b9b9ddd1fc
+Author: Thomas Hellstrom <thomas-at-tungstengraphics-dot-com>
+Date:   Fri Feb 29 11:27:30 2008 +1000
+
+    drm/i915: Re-report breadcrumbs on poll to the fence manager,
+    
+    since a breadcrumb may actually turn up before a corresponding fence object
+    has been placed on the fence ring.
+    
+    Signed-off-by: Dave Airlie <airlied at redhat.com>
+
+commit 0f066ed26802ff65965f7b29346cec98921c2b29
+Author: Thomas Hellstrom <thomas-at-tungstengraphics-dot-com>
+Date:   Fri Feb 29 11:02:23 2008 +1000
+
+    drm/i915: Avoid calling drm_fence_flush_old excessively.
+    
+    Signed-off-by: Dave Airlie <airlied at redhat.com>
+
+commit e927ccfe2905d680b4217fc6af17c9c1ff86ebef
+Author: Thomas Hellstrom <thomas-at-tungstengraphics-dot-com>
+Date:   Fri Feb 29 10:57:18 2008 +1000
+
+    drm/fence: differentiate between flushes and waiting types.
+    
+    Add a "command_stream_barrier" method to the bo driver.
+    
+    Signed-off-by: Dave Airlie <airlied at redhat.com>
+
 commit ae0bdbd7e1d02e978323640256125f8a5391510a
 Author: Nick Piggin <npiggin at suse.de>
 Date:   Thu Feb 7 16:29:15 2008 +1000
@@ -493,6 +619,7 @@
     
     Signed-off-by: Thomas Hellstrom <thomas -at- tungstengraphics.com>
     Signed-off-by: Dave Airlie <airlied at linux.ie>
+
 diff --git a/drivers/char/drm/Makefile b/drivers/char/drm/Makefile
 index 1283ded..85c4f9e 100644
 --- a/drivers/char/drm/Makefile
@@ -1437,10 +1564,10 @@
  
 diff --git a/drivers/char/drm/drm_bo.c b/drivers/char/drm/drm_bo.c
 new file mode 100644
-index 0000000..3145328
+index 0000000..c5eb2d3
 --- /dev/null
 +++ b/drivers/char/drm/drm_bo.c
-@@ -0,0 +1,2669 @@
+@@ -0,0 +1,2677 @@
 +/**************************************************************************
 + *
 + * Copyright (c) 2006-2007 Tungsten Graphics, Inc., Cedar Park, TX., USA
@@ -1703,7 +1830,7 @@
 +	DRM_ASSERT_LOCKED(&bo->mutex);
 +
 +	if (bo->fence) {
-+		if (drm_fence_object_signaled(bo->fence, bo->fence_type, 0)) {
++		if (drm_fence_object_signaled(bo->fence, bo->fence_type)) {
 +			drm_fence_usage_deref_unlocked(&bo->fence);
 +			return 0;
 +		}
@@ -1770,7 +1897,7 @@
 +	DRM_FLAG_MASKED(bo->priv_flags, 0, _DRM_BO_FLAG_UNFENCED);
 +
 +	if (bo->fence && drm_fence_object_signaled(bo->fence,
-+						   bo->fence_type, 0))
++						   bo->fence_type))
 +		drm_fence_usage_deref_unlocked(&bo->fence);
 +
 +	if (bo->fence && remove_all)
@@ -1962,7 +2089,7 @@
 +
 +		list_del_init(&entry->lru);
 +		DRM_FLAG_MASKED(entry->priv_flags, 0, _DRM_BO_FLAG_UNFENCED);
-+		DRM_WAKEUP(&entry->event_queue);
++		wake_up_all(&entry->event_queue);
 +
 +		/*
 +		 * FIXME: Might want to put back on head of list
@@ -2063,7 +2190,7 @@
 +			entry->fence_type = entry->new_fence_type;
 +			DRM_FLAG_MASKED(entry->priv_flags, 0,
 +					_DRM_BO_FLAG_UNFENCED);
-+			DRM_WAKEUP(&entry->event_queue);
++			wake_up_all(&entry->event_queue);
 +			drm_bo_add_to_lru(entry);
 +		}
 +		mutex_unlock(&entry->mutex);
@@ -2435,7 +2562,7 @@
 +
 +	BUG_ON(bo->priv_flags & _DRM_BO_FLAG_UNFENCED);
 +	if (fence) {
-+		if (drm_fence_object_signaled(fence, bo->fence_type, 0)) {
[...2315 lines suppressed...]
++                     &request->batch.num_cliprects)
++       || __put_user((int __user *)(unsigned long)req32.batch.cliprects,
++                     &request->batch.cliprects))
++		return -EFAULT;
++
++	err = drm_ioctl(file->f_dentry->d_inode, file,
++			 DRM_IOCTL_I915_EXECBUFFER, (unsigned long)request);
++
++	if (err)
++		return err;
++
++	if (__get_user(req32.fence_arg.handle, &request->fence_arg.handle)
++	    || __get_user(req32.fence_arg.fence_class, &request->fence_arg.fence_class)
++	    || __get_user(req32.fence_arg.type, &request->fence_arg.type)
++	    || __get_user(req32.fence_arg.flags, &request->fence_arg.flags)
++	    || __get_user(req32.fence_arg.signaled, &request->fence_arg.signaled)
++	    || __get_user(req32.fence_arg.error, &request->fence_arg.error)
++	    || __get_user(req32.fence_arg.sequence, &request->fence_arg.sequence))
++		return -EFAULT;
++
++	if (copy_to_user((void __user *)arg, &req32, sizeof(req32)))
++		return -EFAULT;
 +
 +	return 0;
 +}
++
+ drm_ioctl_compat_t *i915_compat_ioctls[] = {
+ 	[DRM_I915_BATCHBUFFER] = compat_i915_batchbuffer,
+ 	[DRM_I915_CMDBUFFER] = compat_i915_cmdbuffer,
+ 	[DRM_I915_GETPARAM] = compat_i915_getparam,
+ 	[DRM_I915_IRQ_EMIT] = compat_i915_irq_emit,
+-	[DRM_I915_ALLOC] = compat_i915_alloc
++	[DRM_I915_ALLOC] = compat_i915_alloc,
++	[DRM_I915_EXECBUFFER] = compat_i915_execbuffer,
+ };
+ 
+ /**
 diff --git a/drivers/char/drm/i915_irq.c b/drivers/char/drm/i915_irq.c
-index 92653b3..34b63b6 100644
+index 92653b3..324a635 100644
 --- a/drivers/char/drm/i915_irq.c
 +++ b/drivers/char/drm/i915_irq.c
 @@ -38,6 +38,71 @@
@@ -10180,9 +10872,14 @@
  
  	if (temp == 0)
  		return IRQ_NONE;
-@@ -234,8 +319,10 @@ irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
- 
- 	dev_priv->sarea_priv->last_dispatch = READ_BREADCRUMB(dev_priv);
+@@ -232,10 +317,14 @@ irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
+ 	(void) I915_READ16(I915REG_INT_IDENTITY_R);
+ 	DRM_READMEMORYBARRIER();
+ 
+-	dev_priv->sarea_priv->last_dispatch = READ_BREADCRUMB(dev_priv);
++	if (dev_priv->sarea_priv)
++		dev_priv->sarea_priv->last_dispatch =
++			READ_BREADCRUMB(dev_priv);
  
 -	if (temp & USER_INT_FLAG)
 +	if (temp & USER_INT_FLAG) {
@@ -10192,7 +10889,7 @@
  
  	if (temp & (VSYNC_PIPEA_FLAG | VSYNC_PIPEB_FLAG)) {
  		int vblank_pipe = dev_priv->vblank_pipe;
-@@ -269,7 +356,7 @@ irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
+@@ -269,7 +358,7 @@ irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
  	return IRQ_HANDLED;
  }
  
@@ -10201,7 +10898,7 @@
  {
  	drm_i915_private_t *dev_priv = dev->dev_private;
  	RING_LOCALS;
-@@ -278,16 +365,9 @@ static int i915_emit_irq(struct drm_device * dev)
+@@ -278,16 +367,9 @@ static int i915_emit_irq(struct drm_device * dev)
  
  	DRM_DEBUG("\n");
  
@@ -10220,7 +10917,7 @@
  	OUT_RING(0);
  	OUT_RING(GFX_OP_USER_INTERRUPT);
  	ADVANCE_LP_RING();
-@@ -295,6 +375,27 @@ static int i915_emit_irq(struct drm_device * dev)
+@@ -295,6 +377,27 @@ static int i915_emit_irq(struct drm_device * dev)
  	return dev_priv->counter;
  }
  
@@ -10248,7 +10945,7 @@
  static int i915_wait_irq(struct drm_device * dev, int irq_nr)
  {
  	drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
-@@ -308,8 +409,10 @@ static int i915_wait_irq(struct drm_device * dev, int irq_nr)
+@@ -308,19 +411,24 @@ static int i915_wait_irq(struct drm_device * dev, int irq_nr)
  
  	dev_priv->sarea_priv->perf_boxes |= I915_BOX_WAIT;
  
@@ -10259,7 +10956,13 @@
  
  	if (ret == -EBUSY) {
  		DRM_ERROR("EBUSY -- rec: %d emitted: %d\n",
-@@ -320,7 +423,8 @@ static int i915_wait_irq(struct drm_device * dev, int irq_nr)
+ 			  READ_BREADCRUMB(dev_priv), (int)dev_priv->counter);
+ 	}
+ 
+-	dev_priv->sarea_priv->last_dispatch = READ_BREADCRUMB(dev_priv);
++	if (dev_priv->sarea_priv)
++		dev_priv->sarea_priv->last_dispatch =
++			READ_BREADCRUMB(dev_priv);
  	return ret;
  }
  
@@ -10269,7 +10972,7 @@
  				      atomic_t *counter)
  {
  	drm_i915_private_t *dev_priv = dev->dev_private;
-@@ -397,15 +501,15 @@ int i915_irq_wait(struct drm_device *dev, void *data,
+@@ -397,15 +505,15 @@ int i915_irq_wait(struct drm_device *dev, void *data,
  static void i915_enable_interrupt (struct drm_device *dev)
  {
  	drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
@@ -10290,7 +10993,7 @@
  }
  
  /* Set the vblank monitor pipe
-@@ -464,7 +568,7 @@ int i915_vblank_swap(struct drm_device *dev, void *data,
+@@ -464,7 +572,7 @@ int i915_vblank_swap(struct drm_device *dev, void *data,
  	drm_i915_private_t *dev_priv = dev->dev_private;
  	drm_i915_vblank_swap_t *swap = data;
  	drm_i915_vbl_swap_t *vbl_swap;
@@ -10299,7 +11002,14 @@
  	unsigned long irqflags;
  	struct list_head *list;
  
-@@ -479,12 +583,14 @@ int i915_vblank_swap(struct drm_device *dev, void *data,
+@@ -473,18 +581,20 @@ int i915_vblank_swap(struct drm_device *dev, void *data,
+ 		return -EINVAL;
+ 	}
+ 
+-	if (dev_priv->sarea_priv->rotation) {
++	if (!dev_priv->sarea_priv || dev_priv->sarea_priv->rotation) {
+ 		DRM_DEBUG("Rotation not supported\n");
+ 		return -EINVAL;
  	}
  
  	if (swap->seqtype & ~(_DRM_VBLANK_RELATIVE | _DRM_VBLANK_ABSOLUTE |
@@ -10316,7 +11026,7 @@
  
  	seqtype = swap->seqtype & (_DRM_VBLANK_RELATIVE | _DRM_VBLANK_ABSOLUTE);
  
-@@ -495,6 +601,11 @@ int i915_vblank_swap(struct drm_device *dev, void *data,
+@@ -495,6 +605,11 @@ int i915_vblank_swap(struct drm_device *dev, void *data,
  
  	spin_lock_irqsave(&dev->drw_lock, irqflags);
  
@@ -10328,7 +11038,7 @@
  	if (!drm_get_drawable_info(dev, swap->drawable)) {
  		spin_unlock_irqrestore(&dev->drw_lock, irqflags);
  		DRM_DEBUG("Invalid drawable ID %d\n", swap->drawable);
-@@ -517,14 +628,43 @@ int i915_vblank_swap(struct drm_device *dev, void *data,
+@@ -517,14 +632,43 @@ int i915_vblank_swap(struct drm_device *dev, void *data,
  		}
  	}
  
@@ -10373,7 +11083,7 @@
  			spin_unlock_irqrestore(&dev_priv->swaps_lock, irqflags);
  			DRM_DEBUG("Already scheduled\n");
  			return 0;
-@@ -548,8 +688,12 @@ int i915_vblank_swap(struct drm_device *dev, void *data,
+@@ -548,8 +692,12 @@ int i915_vblank_swap(struct drm_device *dev, void *data,
  	DRM_DEBUG("\n");
  
  	vbl_swap->drw_id = swap->drawable;
@@ -10387,7 +11097,7 @@
  
  	spin_lock_irqsave(&dev_priv->swaps_lock, irqflags);
  
-@@ -567,7 +711,7 @@ void i915_driver_irq_preinstall(struct drm_device * dev)
+@@ -567,7 +715,7 @@ void i915_driver_irq_preinstall(struct drm_device * dev)
  {
  	drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
  
@@ -10396,7 +11106,7 @@
  	I915_WRITE16(I915REG_INT_MASK_R, 0x0);
  	I915_WRITE16(I915REG_INT_ENABLE_R, 0x0);
  }
-@@ -580,10 +724,17 @@ void i915_driver_irq_postinstall(struct drm_device * dev)
+@@ -580,10 +728,17 @@ void i915_driver_irq_postinstall(struct drm_device * dev)
  	INIT_LIST_HEAD(&dev_priv->vbl_swaps.head);
  	dev_priv->swaps_pending = 0;
  
@@ -10416,7 +11126,7 @@
  }
  
  void i915_driver_irq_uninstall(struct drm_device * dev)
-@@ -594,6 +745,7 @@ void i915_driver_irq_uninstall(struct drm_device * dev)
+@@ -594,6 +749,7 @@ void i915_driver_irq_uninstall(struct drm_device * dev)
  	if (!dev_priv)
  		return;
  




More information about the fedora-extras-commits mailing list