summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@starflyer.(none)>2005-09-30 07:09:07 (GMT)
committerDave Airlie <airlied@linux.ie>2005-09-30 07:09:07 (GMT)
commit689b9d74b1c00e1316fbb7d1e912fe1227fdb1ab (patch)
tree46d53c2d2ecb31d3db08f034052106030a9d8046
parentb6ce156c415544f900e031890c78eba8bc92f9b3 (diff)
downloadlinux-689b9d74b1c00e1316fbb7d1e912fe1227fdb1ab.tar.xz
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>
-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 447bfbe..e64d680 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,
dev_priv->writeback_works = 0;
DRM_DEBUG("writeback test failed\n");
}
+ if (radeon_no_wb == 1) {
+ dev_priv->writeback_works = 0;
+ DRM_DEBUG("writeback forced off\n");
+ }
dev_priv->sarea_priv->last_frame = dev_priv->scratch[0] = 0;
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 6c17661..7074d01 100644
--- a/drivers/char/drm/radeon_drv.c
+++ b/drivers/char/drm/radeon_drv.c
@@ -37,6 +37,11 @@
#include "drm_pciids.h"
+int radeon_no_wb;
+
+MODULE_PARM_DESC(no_wb, "Disable AGP writeback for scratch registers\n");
+module_param_named(no_wb, radeon_no_wb, int, 0444);
+
static int postinit(struct drm_device *dev, unsigned long flags)
{
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 e360769..3c74734 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 {
u32 age;
} drm_radeon_buf_priv_t;
+extern int radeon_no_wb;
/* radeon_cp.c */
extern int radeon_cp_init(DRM_IOCTL_ARGS);
extern int radeon_cp_start(DRM_IOCTL_ARGS);