rpms/kernel/devel drm-next.patch, 1.9, 1.10 kernel.spec, 1.1396, 1.1397
Dave Airlie
airlied at fedoraproject.org
Mon Mar 9 05:51:35 UTC 2009
Author: airlied
Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv22885
Modified Files:
drm-next.patch kernel.spec
Log Message:
* Mon Mar 09 2009 Dave Airlie <airlied at redhat.com>
- drm-next.patch: fix r600 writeback test
drm-next.patch:
Index: drm-next.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/drm-next.patch,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- drm-next.patch 9 Mar 2009 03:11:26 -0000 1.9
+++ drm-next.patch 9 Mar 2009 05:51:34 -0000 1.10
@@ -1,3 +1,18 @@
+commit 24011adb61c1510fdd9c7ec9a27fc1ac4b23f1bf
+Author: Dave Airlie <airlied at redhat.com>
+Date: Mon Mar 9 15:31:20 2009 +1000
+
+ drm/radeon: fix r600 writeback setup.
+
+ This fixes 2 bugs:
+ 1. the AGP calculation wasn't consistent with the PCI(E) calc for the
+ RPTR_ADDR registers. This consolidates the writes and fixes it up.
+
+ 2. The scratch address was being incorrectly calculated, this breaks
+ it out into a lot more linear steps.
+
+ Signed-off-by: Dave Airlie <airlied at redhat.com>
+
commit d2d31c9fe72bf4904798fd0d01522644e49dd518
Author: Dave Airlie <airlied at redhat.com>
Date: Mon Mar 9 12:47:18 2009 +1000
@@ -3906,10 +3921,10 @@
cmdbuf->bufsz -= sizeof(u64);
diff --git a/drivers/gpu/drm/radeon/r600_cp.c b/drivers/gpu/drm/radeon/r600_cp.c
new file mode 100644
-index 0000000..6f2cc74
+index 0000000..04fde35
--- /dev/null
+++ b/drivers/gpu/drm/radeon/r600_cp.c
-@@ -0,0 +1,2247 @@
+@@ -0,0 +1,2256 @@
+/*
+ * Copyright 2008-2009 Advanced Micro Devices, Inc.
+ * Copyright 2008 Red Hat Inc.
@@ -5542,6 +5557,7 @@
+{
+ struct drm_radeon_master_private *master_priv;
+ u32 ring_start;
++ u64 rptr_addr;
+
+ if (((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RV770))
+ r700_gfx_init(dev, dev_priv);
@@ -5596,21 +5612,20 @@
+
+#if __OS_HAS_AGP
+ if (dev_priv->flags & RADEON_IS_AGP) {
-+ /* XXX */
-+ RADEON_WRITE(R600_CP_RB_RPTR_ADDR,
-+ (dev_priv->ring_rptr->offset
-+ - dev->agp->base + dev_priv->gart_vm_start) >> 8);
-+ RADEON_WRITE(R600_CP_RB_RPTR_ADDR_HI, 0);
++ rptr_addr = dev_priv->ring_rptr->offset
++ - dev->agp->base +
++ dev_priv->gart_vm_start;
+ } else
+#endif
+ {
-+ RADEON_WRITE(R600_CP_RB_RPTR_ADDR,
-+ dev_priv->ring_rptr->offset
-+ - ((unsigned long) dev->sg->virtual)
-+ + dev_priv->gart_vm_start);
-+
-+ RADEON_WRITE(R600_CP_RB_RPTR_ADDR_HI, 0);
-+ }
++ rptr_addr = dev_priv->ring_rptr->offset
++ - ((unsigned long) dev->sg->virtual)
++ + dev_priv->gart_vm_start;
++ }
++ RADEON_WRITE(R600_CP_RB_RPTR_ADDR,
++ rptr_addr & 0xffffffff);
++ RADEON_WRITE(R600_CP_RB_RPTR_ADDR_HI,
++ upper_32_bits(rptr_addr));
+
+#ifdef __BIG_ENDIAN
+ RADEON_WRITE(R600_CP_RB_CNTL,
@@ -5659,8 +5674,17 @@
+ * We simply put this behind the ring read pointer, this works
+ * with PCI GART as well as (whatever kind of) AGP GART
+ */
-+ RADEON_WRITE(R600_SCRATCH_ADDR, ((RADEON_READ(R600_CP_RB_RPTR_ADDR) << 8)
-+ + R600_SCRATCH_REG_OFFSET) >> 8);
++ {
++ u64 scratch_addr;
++
++ scratch_addr = RADEON_READ(R600_CP_RB_RPTR_ADDR);
++ scratch_addr |= ((u64)RADEON_READ(R600_CP_RB_RPTR_ADDR_HI)) << 32;
++ scratch_addr += R600_SCRATCH_REG_OFFSET;
++ scratch_addr >>= 8;
++ scratch_addr &= 0xffffffff;
++
++ RADEON_WRITE(R600_SCRATCH_ADDR, (uint32_t)scratch_addr);
++ }
+
+ RADEON_WRITE(R600_SCRATCH_UMSK, 0x7);
+
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.1396
retrieving revision 1.1397
diff -u -r1.1396 -r1.1397
--- kernel.spec 9 Mar 2009 04:32:25 -0000 1.1396
+++ kernel.spec 9 Mar 2009 05:51:34 -0000 1.1397
@@ -1810,6 +1810,9 @@
# and build.
%changelog
+* Mon Mar 09 2009 Dave Airlie <airlied at redhat.com>
+- drm-next.patch: fix r600 writeback test
+
* Mon Mar 09 2009 Ben Skeggs <bskeggs at gmail.com>
- drm-nouveau.patch: nv50 and kms fixes
More information about the fedora-extras-commits
mailing list