aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/drm
diff options
context:
space:
mode:
authorDave Airlie <airlied@starflyer.(none)>2005-09-30 03:09:07 -0400
committerDave Airlie <airlied@linux.ie>2005-09-30 03:09:07 -0400
commit689b9d74b1c00e1316fbb7d1e912fe1227fdb1ab (patch)
tree46d53c2d2ecb31d3db08f034052106030a9d8046 /drivers/char/drm
parentb6ce156c415544f900e031890c78eba8bc92f9b3 (diff)
drm: add option to force writeback off.
In order to get some better debugging from people about certain hangs/crashes we need to be able to turn AGP writeback off permanently... Signed-off-by: Dave Airlie <airlied@linux.ie>
Diffstat (limited to 'drivers/char/drm')
-rw-r--r--drivers/char/drm/radeon_cp.c4
-rw-r--r--drivers/char/drm/radeon_drv.c5
-rw-r--r--drivers/char/drm/radeon_drv.h1
3 files changed, 10 insertions, 0 deletions
diff --git a/drivers/char/drm/radeon_cp.c b/drivers/char/drm/radeon_cp.c
index 447bfbe0da8a..e64d680899f5 100644
--- a/drivers/char/drm/radeon_cp.c
+++ b/drivers/char/drm/radeon_cp.c
@@ -1205,6 +1205,10 @@ static void radeon_cp_init_ring_buffer(drm_device_t * dev,
1205 dev_priv->writeback_works = 0; 1205 dev_priv->writeback_works = 0;
1206 DRM_DEBUG("writeback test failed\n"); 1206 DRM_DEBUG("writeback test failed\n");
1207 } 1207 }
1208 if (radeon_no_wb == 1) {
1209 dev_priv->writeback_works = 0;
1210 DRM_DEBUG("writeback forced off\n");
1211 }
1208 1212
1209 dev_priv->sarea_priv->last_frame = dev_priv->scratch[0] = 0; 1213 dev_priv->sarea_priv->last_frame = dev_priv->scratch[0] = 0;
1210 RADEON_WRITE(RADEON_LAST_FRAME_REG, dev_priv->sarea_priv->last_frame); 1214 RADEON_WRITE(RADEON_LAST_FRAME_REG, dev_priv->sarea_priv->last_frame);
diff --git a/drivers/char/drm/radeon_drv.c b/drivers/char/drm/radeon_drv.c
index 6c1766120c10..7074d01ed1dd 100644
--- a/drivers/char/drm/radeon_drv.c
+++ b/drivers/char/drm/radeon_drv.c
@@ -37,6 +37,11 @@
37 37
38#include "drm_pciids.h" 38#include "drm_pciids.h"
39 39
40int radeon_no_wb;
41
42MODULE_PARM_DESC(no_wb, "Disable AGP writeback for scratch registers\n");
43module_param_named(no_wb, radeon_no_wb, int, 0444);
44
40static int postinit(struct drm_device *dev, unsigned long flags) 45static int postinit(struct drm_device *dev, unsigned long flags)
41{ 46{
42 DRM_INFO("Initialized %s %d.%d.%d %s on minor %d: %s\n", 47 DRM_INFO("Initialized %s %d.%d.%d %s on minor %d: %s\n",
diff --git a/drivers/char/drm/radeon_drv.h b/drivers/char/drm/radeon_drv.h
index e36076981d1a..3c7473488665 100644
--- a/drivers/char/drm/radeon_drv.h
+++ b/drivers/char/drm/radeon_drv.h
@@ -281,6 +281,7 @@ typedef struct drm_radeon_buf_priv {
281 u32 age; 281 u32 age;
282} drm_radeon_buf_priv_t; 282} drm_radeon_buf_priv_t;
283 283
284extern int radeon_no_wb;
284 /* radeon_cp.c */ 285 /* radeon_cp.c */
285extern int radeon_cp_init(DRM_IOCTL_ARGS); 286extern int radeon_cp_init(DRM_IOCTL_ARGS);
286extern int radeon_cp_start(DRM_IOCTL_ARGS); 287extern int radeon_cp_start(DRM_IOCTL_ARGS);