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