rpms/kernel/devel drm-nouveau.patch, 1.43, 1.44 kernel.spec, 1.1709, 1.1710

Ben Skeggs bskeggs at fedoraproject.org
Tue Aug 11 05:49:53 UTC 2009


Author: bskeggs

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

Modified Files:
	drm-nouveau.patch kernel.spec 
Log Message:
* Tue Aug 11 2009 Ben Skeggs <bskeggs at redhat.com>
- nouveau: various cleanups and fixes + more sanity checking in dma paths



drm-nouveau.patch:
 drivers/gpu/drm/Kconfig                     |   30 
 drivers/gpu/drm/Makefile                    |    1 
 drivers/gpu/drm/drm_bufs.c                  |   28 
 drivers/gpu/drm/nouveau/Makefile            |   27 
 drivers/gpu/drm/nouveau/nouveau_backlight.c |  155 
 drivers/gpu/drm/nouveau/nouveau_bios.c      | 5053 ++++++
 drivers/gpu/drm/nouveau/nouveau_bios.h      |  227 
 drivers/gpu/drm/nouveau/nouveau_bo.c        |  573 
 drivers/gpu/drm/nouveau/nouveau_calc.c      |  622 
 drivers/gpu/drm/nouveau/nouveau_channel.c   |  515 
 drivers/gpu/drm/nouveau/nouveau_connector.c |  593 
 drivers/gpu/drm/nouveau/nouveau_connector.h |   57 
 drivers/gpu/drm/nouveau/nouveau_crtc.h      |   92 
 drivers/gpu/drm/nouveau/nouveau_display.c   |  115 
 drivers/gpu/drm/nouveau/nouveau_dma.c       |  161 
 drivers/gpu/drm/nouveau/nouveau_dma.h       |  146 
 drivers/gpu/drm/nouveau/nouveau_drv.c       |  370 
 drivers/gpu/drm/nouveau/nouveau_drv.h       | 1131 +
 drivers/gpu/drm/nouveau/nouveau_encoder.h   |   53 
 drivers/gpu/drm/nouveau/nouveau_fb.h        |   47 
 drivers/gpu/drm/nouveau/nouveau_fbcon.c     |  971 +
 drivers/gpu/drm/nouveau/nouveau_fbcon.h     |   49 
 drivers/gpu/drm/nouveau/nouveau_fence.c     |  261 
 drivers/gpu/drm/nouveau/nouveau_gem.c       |  754 
 drivers/gpu/drm/nouveau/nouveau_hw.c        | 1018 +
 drivers/gpu/drm/nouveau/nouveau_hw.h        |  431 
 drivers/gpu/drm/nouveau/nouveau_i2c.c       |  246 
 drivers/gpu/drm/nouveau/nouveau_i2c.h       |   45 
 drivers/gpu/drm/nouveau/nouveau_ioc32.c     |   72 
 drivers/gpu/drm/nouveau/nouveau_irq.c       |  674 
 drivers/gpu/drm/nouveau/nouveau_mem.c       |  565 
 drivers/gpu/drm/nouveau/nouveau_notifier.c  |  194 
 drivers/gpu/drm/nouveau/nouveau_object.c    | 1276 +
 drivers/gpu/drm/nouveau/nouveau_reg.h       |  834 +
 drivers/gpu/drm/nouveau/nouveau_sgdma.c     |  317 
 drivers/gpu/drm/nouveau/nouveau_state.c     |  826 +
 drivers/gpu/drm/nouveau/nouveau_swmthd.h    |   33 
 drivers/gpu/drm/nouveau/nouveau_ttm.c       |  116 
 drivers/gpu/drm/nouveau/nv04_crtc.c         | 1143 +
 drivers/gpu/drm/nouveau/nv04_cursor.c       |   70 
 drivers/gpu/drm/nouveau/nv04_display.c      |  250 
 drivers/gpu/drm/nouveau/nv04_fb.c           |   21 
 drivers/gpu/drm/nouveau/nv04_fbcon.c        |  291 
 drivers/gpu/drm/nouveau/nv04_fifo.c         |  295 
 drivers/gpu/drm/nouveau/nv04_graph.c        |  583 
 drivers/gpu/drm/nouveau/nv04_instmem.c      |  207 
 drivers/gpu/drm/nouveau/nv04_mc.c           |   20 
 drivers/gpu/drm/nouveau/nv04_output.c       |  797 +
 drivers/gpu/drm/nouveau/nv04_timer.c        |   51 
 drivers/gpu/drm/nouveau/nv10_fb.c           |   24 
 drivers/gpu/drm/nouveau/nv10_fifo.c         |  177 
 drivers/gpu/drm/nouveau/nv10_graph.c        |  945 +
 drivers/gpu/drm/nouveau/nv20_graph.c        |  784 
 drivers/gpu/drm/nouveau/nv40_fb.c           |   62 
 drivers/gpu/drm/nouveau/nv40_fifo.c         |  223 
 drivers/gpu/drm/nouveau/nv40_graph.c        | 2203 ++
 drivers/gpu/drm/nouveau/nv40_mc.c           |   38 
 drivers/gpu/drm/nouveau/nv50_crtc.c         |  819 +
 drivers/gpu/drm/nouveau/nv50_cursor.c       |  151 
 drivers/gpu/drm/nouveau/nv50_dac.c          |  284 
 drivers/gpu/drm/nouveau/nv50_display.c      |  849 +
 drivers/gpu/drm/nouveau/nv50_display.h      |   46 
 drivers/gpu/drm/nouveau/nv50_evo.h          |  113 
 drivers/gpu/drm/nouveau/nv50_fbcon.c        |  256 
 drivers/gpu/drm/nouveau/nv50_fifo.c         |  475 
 drivers/gpu/drm/nouveau/nv50_graph.c        |  437 
 drivers/gpu/drm/nouveau/nv50_grctx.h        |22284 ++++++++++++++++++++++++++++
 drivers/gpu/drm/nouveau/nv50_instmem.c      |  499 
 drivers/gpu/drm/nouveau/nv50_mc.c           |   40 
 drivers/gpu/drm/nouveau/nv50_sor.c          |  264 
 drivers/gpu/drm/nouveau/nvreg.h             |  503 
 drivers/gpu/drm/ttm/ttm_bo.c                |    4 
 include/drm/Kbuild                          |    1 
 include/drm/drmP.h                          |    2 
 include/drm/nouveau_drm.h                   |  214 
 75 files changed, 54082 insertions(+), 21 deletions(-)

View full diff with command:
/usr/bin/cvs -n -f diff -kk -u -p -N -r 1.43 -r 1.44 drm-nouveau.patchIndex: drm-nouveau.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/drm-nouveau.patch,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -p -r1.43 -r1.44
--- drm-nouveau.patch	5 Aug 2009 05:54:37 -0000	1.43
+++ drm-nouveau.patch	11 Aug 2009 05:49:52 -0000	1.44
@@ -105,7 +105,7 @@ index 6246e3f..436e2fe 100644
  		if (map->type == _DRM_REGISTERS)
 diff --git a/drivers/gpu/drm/nouveau/Makefile b/drivers/gpu/drm/nouveau/Makefile
 new file mode 100644
-index 0000000..a04127f
+index 0000000..2ba1e45
 --- /dev/null
 +++ b/drivers/gpu/drm/nouveau/Makefile
 @@ -0,0 +1,27 @@
@@ -114,7 +114,7 @@ index 0000000..a04127f
 +# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
 +
 +ccflags-y := -Iinclude/drm
-+nouveau-y := nouveau_drv.o nouveau_state.o nouveau_fifo.o nouveau_mem.o \
++nouveau-y := nouveau_drv.o nouveau_state.o nouveau_channel.o nouveau_mem.o \
 +             nouveau_object.o nouveau_irq.o nouveau_notifier.o \
 +             nouveau_sgdma.o nouveau_dma.o \
 +             nouveau_bo.o nouveau_fence.o nouveau_gem.o nouveau_ttm.o \
@@ -299,10 +299,10 @@ index 0000000..20564f8
 +}
 diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.c b/drivers/gpu/drm/nouveau/nouveau_bios.c
 new file mode 100644
-index 0000000..defc0c8
+index 0000000..c828c2e
 --- /dev/null
 +++ b/drivers/gpu/drm/nouveau/nouveau_bios.c
-@@ -0,0 +1,5056 @@
+@@ -0,0 +1,5053 @@
 +/*
 + * Copyright 2005-2006 Erik Waling
 + * Copyright 2006 Stephane Marchesin
@@ -3511,9 +3511,6 @@ index 0000000..defc0c8
 +	return 0;
 +}
 +
-+extern int nouveau_uscript_lvds;
-+extern int nouveau_uscript_tmds;
-+
 +int
 +nouveau_bios_run_display_table(struct drm_device *dev, struct dcb_entry *dcbent,
 +			       int pxclk)
@@ -5594,10 +5591,10 @@ index 0000000..24fc305
 +#endif
 diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c
 new file mode 100644
-index 0000000..d59ffc4
+index 0000000..a7b2a61
 --- /dev/null
 +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
-@@ -0,0 +1,557 @@
+@@ -0,0 +1,573 @@
 +/*
 + * Copyright 2007 Dave Airlied
 + * All Rights Reserved.
@@ -5672,6 +5669,22 @@ index 0000000..d59ffc4
 +	if (!nvbo->mappable && (flags & TTM_PL_FLAG_VRAM))
 +		flags |= TTM_PL_FLAG_PRIV0;
 +
++	/* Some of the tile_flags have a periodic structure of 24*4096 bytes, 
++	 * align to to that as well as the page size. Overallocate memory to 
++	 * avoid corruption of other buffer objects.
++	 */
++	switch (tile_flags) {
++		case 0x1800:
++		case 0x2800:
++		case 0x4800:
++		case 0x7a00:
++			size += 6*4096;
++			align = 2*24*4096;
++			break;
++		default:
++			break;
++	}
++
 +	align >>= PAGE_SHIFT;
 +
 +	size = (size + (PAGE_SIZE-1)) & ~(PAGE_SIZE-1);
@@ -6783,12 +6796,533 @@ index 0000000..e2b78d2
 +
 +	return outclk;
 +}
+diff --git a/drivers/gpu/drm/nouveau/nouveau_channel.c b/drivers/gpu/drm/nouveau/nouveau_channel.c
+new file mode 100644
+index 0000000..2429c7f
+--- /dev/null
++++ b/drivers/gpu/drm/nouveau/nouveau_channel.c
+@@ -0,0 +1,515 @@
++/*
++ * Copyright 2005-2006 Stephane Marchesin
++ * All Rights Reserved.
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a
++ * copy of this software and associated documentation files (the "Software"),
++ * to deal in the Software without restriction, including without limitation
++ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
++ * and/or sell copies of the Software, and to permit persons to whom the
++ * Software is furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice (including the next
++ * paragraph) shall be included in all copies or substantial portions of the
++ * Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
++ * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
++ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
++ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
++ * DEALINGS IN THE SOFTWARE.
++ */
++
++#include "drmP.h"
++#include "drm.h"
++#include "nouveau_drv.h"
++#include "nouveau_drm.h"
++#include "nouveau_dma.h"
++
++static int
++nouveau_channel_pushbuf_ctxdma_init(struct nouveau_channel *chan)
++{
++	struct drm_device *dev = chan->dev;
++	struct drm_nouveau_private *dev_priv = dev->dev_private;
++	struct nouveau_bo *pb = chan->pushbuf_bo;
++	struct nouveau_gpuobj *pushbuf = NULL;
++	uint32_t start = pb->bo.mem.mm_node->start << PAGE_SHIFT;
++	uint32_t size = pb->bo.mem.size;
++	int ret;
++
++	if (pb->bo.mem.mem_type == TTM_PL_TT) {
++		ret = nouveau_gpuobj_gart_dma_new(chan, start, size,
++						  NV_DMA_ACCESS_RO,
++						  &pushbuf,
++						  &chan->pushbuf_base);
++	} else
++	if (dev_priv->card_type != NV_04) {
++		ret = nouveau_gpuobj_dma_new(chan, NV_CLASS_DMA_IN_MEMORY,
++					     start, size, NV_DMA_ACCESS_RO,
++					     NV_DMA_TARGET_VIDMEM, &pushbuf);
++		chan->pushbuf_base = 0;
++	} else {
++		/* NV04 cmdbuf hack, from original ddx.. not sure of it's
++		 * exact reason for existing :)  PCI access to cmdbuf in
++		 * VRAM.
++		 */
++		ret = nouveau_gpuobj_dma_new(chan, NV_CLASS_DMA_IN_MEMORY,
++					     start +
++					       drm_get_resource_start(dev, 1),
++					     size, NV_DMA_ACCESS_RO,
++					     NV_DMA_TARGET_PCI, &pushbuf);
++		chan->pushbuf_base = 0;
++	}
++
++	ret = nouveau_gpuobj_ref_add(dev, chan, 0, pushbuf, &chan->pushbuf);
++	if (ret) {
++		NV_ERROR(dev, "Error referencing pushbuf ctxdma: %d\n", ret);
++		if (pushbuf != dev_priv->gart_info.sg_ctxdma)
++			nouveau_gpuobj_del(dev, &pushbuf);
++		return ret;
++	}
++
++	return 0;
++}
++
++static struct nouveau_bo *
++nouveau_channel_user_pushbuf_alloc(struct drm_device *dev)
++{
++	struct nouveau_bo *pushbuf = NULL;
++	int location, ret;
++
++	if (nouveau_vram_pushbuf)
++		location = TTM_PL_FLAG_VRAM;
++	else
++		location = TTM_PL_FLAG_TT;
++
++	ret = nouveau_bo_new(dev, NULL, 65536, 0, location, 0, 0x0000, false,
++			     true, &pushbuf);
++	if (ret) {
++		NV_ERROR(dev, "error allocating DMA push buffer: %d\n", ret);
++		return NULL;
++	}
++
++	ret = nouveau_bo_pin(pushbuf, location);
++	if (ret) {
++		NV_ERROR(dev, "error pinning DMA push buffer: %d\n", ret);
++		nouveau_bo_ref(NULL, &pushbuf);
++		return NULL;
++	}
++
++	return pushbuf;
++}
++
++/* allocates and initializes a fifo for user space consumption */
[...2820 lines suppressed...]
 +	nv_wo32(dev, ctx, (0x2744/4)+9, 0xbf800000);
 +
-+/*
-+write32 #1 block at +0x00742e34 NV_PRAMIN.GRCTX0+0x2714 of 4 (0x4) elements:
-++0x00742e34: 00000000 3f800000 00000000 00000000
-+*/
 +	nv_wo32(dev, ctx, (0x2714/4)+1, 0x3f800000);
 +
-+/*
-+write32 #1 block at +0x00742e94 NV_PRAMIN.GRCTX0+0x2774 of 4 (0x4) elements:
-++0x00742e94: 00000000 00000000 00000000 00000000
-+write32 #1 block at +0x00743804 NV_PRAMIN.GRCTX0+0x30e4 of 4 (0x4) elements:
-++0x00743804: 00000000 00000000 00000000 00000000
-+write32 #1 block at +0x007437a4 NV_PRAMIN.GRCTX0+0x3084 of 8 (0x8) elements:
-++0x007437a4: 00000000 00000000 000fe000 00000000 00000000 00000000 00000000 00000000
-+*/
 +	nv_wo32(dev, ctx, (0x3084/4)+2, 0x000fe000);
 +
-+/*
-+write32 #1 block at +0x007437d4 NV_PRAMIN.GRCTX0+0x30b4 of 4 (0x4) elements:
-++0x007437d4: 00000000 00000000 00000000 00000000
-+write32 #1 block at +0x00743824 NV_PRAMIN.GRCTX0+0x3104 of 4 (0x4) elements:
-++0x00743824: 00000000 000003f8 00000000 00000000
-+*/
 +	nv_wo32(dev, ctx, (0x3104/4)+1, 0x000003f8);
 +
-+/* write32 #1 NV_PRAMIN.GRCTX0+0x3468 <- 0x002fe000 */
 +	nv_wo32(dev, ctx, 0x3468/4, 0x002fe000);
 +
-+/*
-+write32 #1 block at +0x00743ba4 NV_PRAMIN.GRCTX0+0x3484 of 8 (0x8) elements:
-++0x00743ba4: 001c527c 001c527c 001c527c 001c527c 001c527c 001c527c 001c527c 001c527c
-+*/
 +	for (i=0; i<8; ++i)
 +		nv_wo32(dev, ctx, (0x3484/4)+i, 0x001c527c);
 +}
@@ -24799,27 +24636,6 @@ index 0000000..3a1b9e6
 +		nv_wr32(dev, 0x400754, nv_rd32(dev, NV04_PFB_CFG1));
 +	}
 +
-+#if 0
-+	nv_wr32(dev, 0x400820, 0);
-+	nv_wr32(dev, 0x400824, 0);
-+	nv_wr32(dev, 0x400864, vramsz-1);
-+	nv_wr32(dev, 0x400868, vramsz-1);
-+
-+	nv_wr32(dev, 0x400B20, 0x00000000);
-+	nv_wr32(dev, 0x400B04, 0xFFFFFFFF);
-+
-+	/* per-context state, doesn't belong here */
-+	tmp = nv_rd32(dev, NV10_PGRAPH_SURFACE) & 0x0007ff00;
-+	nv_wr32(dev, NV10_PGRAPH_SURFACE, tmp);
-+	tmp = nv_rd32(dev, NV10_PGRAPH_SURFACE) | 0x00020100;
-+	nv_wr32(dev, NV10_PGRAPH_SURFACE, tmp);
-+
-+	nv_wr32(dev, NV03_PGRAPH_ABS_UCLIP_XMIN, 0);
-+	nv_wr32(dev, NV03_PGRAPH_ABS_UCLIP_YMIN, 0);
-+	nv_wr32(dev, NV03_PGRAPH_ABS_UCLIP_XMAX, 0x7fff);
-+	nv_wr32(dev, NV03_PGRAPH_ABS_UCLIP_YMAX, 0x7fff);
-+#endif
-+
 +	return 0;
 +}
 +
@@ -24934,10 +24750,10 @@ index 0000000..fae4246
 +}
 diff --git a/drivers/gpu/drm/nouveau/nv40_fifo.c b/drivers/gpu/drm/nouveau/nv40_fifo.c
 new file mode 100644
-index 0000000..61b7832
+index 0000000..6b5fdcc
 --- /dev/null
 +++ b/drivers/gpu/drm/nouveau/nv40_fifo.c
-@@ -0,0 +1,222 @@
+@@ -0,0 +1,223 @@
 +/*
 + * Copyright (C) 2007 Ben Skeggs.
 + * All Rights Reserved.
@@ -25154,7 +24970,8 @@ index 0000000..61b7832
 +{
 +	int ret;
 +
-+	if ((ret = nouveau_fifo_init(dev)))
++	ret = nv04_fifo_init(dev);
++	if (ret)
 +		return ret;
 +
 +	nv_wr32(dev, NV04_PFIFO_DMA_TIMESLICE, 0x2101ffff);
@@ -27415,10 +27232,10 @@ index 0000000..2a3495e
 +}
 diff --git a/drivers/gpu/drm/nouveau/nv50_crtc.c b/drivers/gpu/drm/nouveau/nv50_crtc.c
 new file mode 100644
-index 0000000..b169f9b
+index 0000000..99f24a3
 --- /dev/null
 +++ b/drivers/gpu/drm/nouveau/nv50_crtc.c
-@@ -0,0 +1,811 @@
+@@ -0,0 +1,819 @@
 +/*
 + * Copyright (C) 2008 Maarten Maathuis.
 + * All Rights Reserved.
@@ -27519,7 +27336,7 @@ index 0000000..b169f9b
 +	struct drm_device *dev = crtc->base.dev;
 +	struct drm_nouveau_private *dev_priv = dev->dev_private;
 +	struct nouveau_channel *evo = dev_priv->evo;
-+	int index = crtc->index;
++	int index = crtc->index, ret;
 +
 +	NV_DEBUG(dev, "index %d\n", crtc->index);
 +	NV_DEBUG(dev, "%s\n", blanked ? "blanked" : "unblanked");
@@ -27527,7 +27344,11 @@ index 0000000..b169f9b
 +	if (blanked) {
 +		crtc->cursor.hide(crtc, false);
 +
-+		RING_SPACE(evo, dev_priv->chipset != 0x50 ? 7 : 5);
++		ret = RING_SPACE(evo, dev_priv->chipset != 0x50 ? 7 : 5);
++		if (ret) {
++			NV_ERROR(dev, "no space while blanking crtc\n");
++			return ret;
++		}
 +		BEGIN_RING(evo, 0, NV50_EVO_CRTC(index, CLUT_MODE), 2);
 +		OUT_RING  (evo, NV50_EVO_CRTC_CLUT_MODE_BLANK);
 +		OUT_RING  (evo, 0);
@@ -27545,7 +27366,11 @@ index 0000000..b169f9b
 +		else
 +			crtc->cursor.hide(crtc, false);
 +
-+		RING_SPACE(evo, dev_priv->chipset != 0x50 ? 10 : 8);
++		ret = RING_SPACE(evo, dev_priv->chipset != 0x50 ? 10 : 8);
++		if (ret) {
++			NV_ERROR(dev, "no space while unblanking crtc\n");
++			return ret;
++		}
 +		BEGIN_RING(evo, 0, NV50_EVO_CRTC(index, CLUT_MODE), 2);
 +		OUT_RING  (evo, crtc->lut.depth == 8 ?
 +				NV50_EVO_CRTC_CLUT_MODE_OFF :
@@ -28232,10 +28057,10 @@ index 0000000..b169f9b
 +}
 diff --git a/drivers/gpu/drm/nouveau/nv50_cursor.c b/drivers/gpu/drm/nouveau/nv50_cursor.c
 new file mode 100644
-index 0000000..a3bed39
+index 0000000..0ef825e
 --- /dev/null
 +++ b/drivers/gpu/drm/nouveau/nv50_cursor.c
-@@ -0,0 +1,153 @@
+@@ -0,0 +1,151 @@
 +/*
 + * Copyright (C) 2008 Maarten Maathuis.
 + * All Rights Reserved.
@@ -28279,7 +28104,7 @@ index 0000000..a3bed39
 +
 +	NV_DEBUG(dev, "\n");
 +
-+	ret = RING_SPACE(evo, dev_priv->chipset != 0x50 ? 4 : 2);
++	ret = RING_SPACE(evo, (dev_priv->chipset != 0x50 ? 4 : 2) + update * 2);
 +	if (ret) {
 +		NV_ERROR(dev, "no space while unhiding cursor\n");
 +		return;
@@ -28293,7 +28118,6 @@ index 0000000..a3bed39
 +	OUT_RING  (evo, NV50_EVO_CRTC_CURSOR_CTRL_SHOW);
 +
 +	if (update) {
-+		RING_SPACE(evo, 2);
 +		BEGIN_RING(evo, 0, NV50_EVO_UPDATE, 1);
 +		OUT_RING  (evo, 0);
 +		FIRE_RING (evo);
@@ -28311,7 +28135,7 @@ index 0000000..a3bed39
 +
 +	NV_DEBUG(dev, "\n");
 +
-+	ret = RING_SPACE(evo, dev_priv->chipset != 0x50 ? 4 : 2);
++	ret = RING_SPACE(evo, (dev_priv->chipset != 0x50 ? 4 : 2) + update * 2);
 +	if (ret) {
 +		NV_ERROR(dev, "no space while hiding cursor\n");
 +		return;
@@ -28324,7 +28148,6 @@ index 0000000..a3bed39
 +	}
 +
 +	if (update) {
-+		RING_SPACE(evo, 2);
 +		BEGIN_RING(evo, 0, NV50_EVO_UPDATE, 1);
 +		OUT_RING  (evo, 0);
 +		FIRE_RING (evo);
@@ -29969,7 +29792,7 @@ index 0000000..d7af9ed
 +
 diff --git a/drivers/gpu/drm/nouveau/nv50_fifo.c b/drivers/gpu/drm/nouveau/nv50_fifo.c
 new file mode 100644
-index 0000000..071a2f3
+index 0000000..c4c45f2
 --- /dev/null
 +++ b/drivers/gpu/drm/nouveau/nv50_fifo.c
 @@ -0,0 +1,475 @@
@@ -30251,7 +30074,7 @@ index 0000000..071a2f3
 +	nv_wo32(dev, ramfc, 0x10/4, chan->pushbuf_base);
 +	nv_wo32(dev, ramfc, 0x48/4, chan->pushbuf->instance >> 4);
 +	nv_wo32(dev, ramfc, 0x80/4, (0xc << 24) | (chan->ramht->instance >> 4));
-+	nv_wo32(dev, ramfc, 0x3c/4, 0x000f0078); /* fetch? */
++	nv_wo32(dev, ramfc, 0x3c/4, 0x00086078);
 +	nv_wo32(dev, ramfc, 0x44/4, 0x2101ffff);
 +	nv_wo32(dev, ramfc, 0x60/4, 0x7fffffff);
 +	nv_wo32(dev, ramfc, 0x40/4, 0x00000000);


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.1709
retrieving revision 1.1710
diff -u -p -r1.1709 -r1.1710
--- kernel.spec	10 Aug 2009 20:30:10 -0000	1.1709
+++ kernel.spec	11 Aug 2009 05:49:53 -0000	1.1710
@@ -1980,6 +1980,9 @@ fi
 # and build.
 
 %changelog
+* Tue Aug 11 2009 Ben Skeggs <bskeggs at redhat.com>
+- nouveau: various cleanups and fixes + more sanity checking in dma paths
+
 * Mon Aug 10 2009 Jarod Wilson <jarod at redhat.com>
 - Add new device ID to lirc_mceusb (#512483)
 - Fix some lockdep false positives




More information about the fedora-extras-commits mailing list