diff options
| author | Robert Noland <rnoland@2hip.net> | 2009-10-20 08:23:07 -0400 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2009-10-25 23:29:26 -0400 |
| commit | 0a5c1e61dbaceb6ce56281a3128a6912b0dcd043 (patch) | |
| tree | 6d8fee7b89c2d6a5e6ed33448c204e1bc1b4aa4e /drivers | |
| parent | 3e5cb98dfe87cc61d0a1119dd8aa2b1e4cfab424 (diff) | |
drm/radeon: A bit of cleanup work on radeon_freelist_get()
Fix the main loop to search all buffers before sleeping.
Remove dead code
Signed-off-by: Robert Noland <rnoland@2hip.net>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_cp.c | 45 |
1 files changed, 4 insertions, 41 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_cp.c b/drivers/gpu/drm/radeon/radeon_cp.c index 4f7afc79dd82..0b2f9c2ad2c1 100644 --- a/drivers/gpu/drm/radeon/radeon_cp.c +++ b/drivers/gpu/drm/radeon/radeon_cp.c | |||
| @@ -1941,8 +1941,8 @@ struct drm_buf *radeon_freelist_get(struct drm_device * dev) | |||
| 1941 | for (t = 0; t < dev_priv->usec_timeout; t++) { | 1941 | for (t = 0; t < dev_priv->usec_timeout; t++) { |
| 1942 | u32 done_age = GET_SCRATCH(dev_priv, 1); | 1942 | u32 done_age = GET_SCRATCH(dev_priv, 1); |
| 1943 | DRM_DEBUG("done_age = %d\n", done_age); | 1943 | DRM_DEBUG("done_age = %d\n", done_age); |
| 1944 | for (i = start; i < dma->buf_count; i++) { | 1944 | for (i = 0; i < dma->buf_count; i++) { |
| 1945 | buf = dma->buflist[i]; | 1945 | buf = dma->buflist[start]; |
| 1946 | buf_priv = buf->dev_private; | 1946 | buf_priv = buf->dev_private; |
| 1947 | if (buf->file_priv == NULL || (buf->pending && | 1947 | if (buf->file_priv == NULL || (buf->pending && |
| 1948 | buf_priv->age <= | 1948 | buf_priv->age <= |
| @@ -1951,7 +1951,8 @@ struct drm_buf *radeon_freelist_get(struct drm_device * dev) | |||
| 1951 | buf->pending = 0; | 1951 | buf->pending = 0; |
| 1952 | return buf; | 1952 | return buf; |
| 1953 | } | 1953 | } |
| 1954 | start = 0; | 1954 | if (++start >= dma->buf_count) |
| 1955 | start = 0; | ||
| 1955 | } | 1956 | } |
| 1956 | 1957 | ||
| 1957 | if (t) { | 1958 | if (t) { |
| @@ -1960,47 +1961,9 @@ struct drm_buf *radeon_freelist_get(struct drm_device * dev) | |||
| 1960 | } | 1961 | } |
| 1961 | } | 1962 | } |
| 1962 | 1963 | ||
| 1963 | DRM_DEBUG("returning NULL!\n"); | ||
| 1964 | return NULL; | 1964 | return NULL; |
| 1965 | } | 1965 | } |
| 1966 | 1966 | ||
| 1967 | #if 0 | ||
| 1968 | struct drm_buf *radeon_freelist_get(struct drm_device * dev) | ||
| 1969 | { | ||
| 1970 | struct drm_device_dma *dma = dev->dma; | ||
| 1971 | drm_radeon_private_t *dev_priv = dev->dev_private; | ||
| 1972 | drm_radeon_buf_priv_t *buf_priv; | ||
| 1973 | struct drm_buf *buf; | ||
| 1974 | int i, t; | ||
| 1975 | int start; | ||
| 1976 | u32 done_age; | ||
| 1977 | |||
| 1978 | done_age = radeon_read_ring_rptr(dev_priv, RADEON_SCRATCHOFF(1)); | ||
| 1979 | if (++dev_priv->last_buf >= dma->buf_count) | ||
| 1980 | dev_priv->last_buf = 0; | ||
| 1981 | |||
| 1982 | start = dev_priv->last_buf; | ||
| 1983 | dev_priv->stats.freelist_loops++; | ||
| 1984 | |||
| 1985 | for (t = 0; t < 2; t++) { | ||
| 1986 | for (i = start; i < dma->buf_count; i++) { | ||
| 1987 | buf = dma->buflist[i]; | ||
| 1988 | buf_priv = buf->dev_private; | ||
| 1989 | if (buf->file_priv == 0 || (buf->pending && | ||
| 1990 | buf_priv->age <= | ||
| 1991 | done_age)) { | ||
| 1992 | dev_priv->stats.requested_bufs++; | ||
| 1993 | buf->pending = 0; | ||
| 1994 | return buf; | ||
| 1995 | } | ||
| 1996 | } | ||
| 1997 | start = 0; | ||
| 1998 | } | ||
| 1999 | |||
| 2000 | return NULL; | ||
| 2001 | } | ||
| 2002 | #endif | ||
| 2003 | |||
| 2004 | void radeon_freelist_reset(struct drm_device * dev) | 1967 | void radeon_freelist_reset(struct drm_device * dev) |
| 2005 | { | 1968 | { |
| 2006 | struct drm_device_dma *dma = dev->dma; | 1969 | struct drm_device_dma *dma = dev->dma; |
